From flop to megaflops
- 1 March 2000
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 22 (2) , 265-295
- https://doi.org/10.1145/349214.349222
Abstract
Although there has been some experimentation with Java as a language for numerically intensive computing, there is a perception by many that the language is unsuited for such work because of performance deficiencies. In this article we show how optimizing array bounds checks and null pointer checks creates loop nests on which aggressive optimizations can be used. Applying these optimizations by hand to a simple matrix-multiply test case leads to Java-compliant programs whose performance is in excess of 500 Mflops on a four-processor 332MHz RS/6000 model F50 computer. We also report in this article the effect that various optimizations have on the performance of six floating-point-intensive benchmarks. Through these optimizations we have been able to achieve with Java at least 80% of the peak Fortran performance on the same benchmarks. Since all of these optimizations can be automated, we conclude that Java will soon be a serious contender for numerically intensive computing.Keywords
This publication has 11 references indexed in Scilit:
- On estimating and enhancing cache effectivenessPublished by Springer Nature ,2006
- Java programming for high-performance numerical computingIBM Systems Journal, 2000
- Editorial: Java for high-performance network computingConcurrency: Practice and Experience, 1998
- Algebraic Java classes for numerical optimizationConcurrency: Practice and Experience, 1998
- Developing numerical libraries in JavaConcurrency: Practice and Experience, 1998
- Optimizing array reference checking in Java programsIBM Systems Journal, 1998
- Automatic selection of high-order transformations in the IBM XL FORTRAN compilersIBM Journal of Research and Development, 1997
- Optimizing array bound checks using flow analysisACM Letters on Programming Languages and Systems, 1993
- Optimization of array subscript range checksACM Letters on Programming Languages and Systems, 1992
- Compiler Analysis of the Value Ranges for VariablesIEEE Transactions on Software Engineering, 1977