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 not suited for such work. In this paper 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 an RS/6000 SP 332MHz SMP node. We also report in this paper the effect that each optimization has on performance. Since all of these optimizations can be automated, we conclude that Java will soon be a serious contender for numerically intensive computing. 1
|
1415
|
The Java Language Specification
– Gosling, Joy, et al.
- 1996
|
|
1266
|
Abstract interpretation : a unified lattice model for the static analysis of programs by construction or approximation of fixpoints
– Cousot, Cousot
- 1977
|
|
441
|
Optimizing Supercompilers for Supercomputers
– Wolfe
- 1989
|
|
361
|
A Loop Transformation Theory and an Algorithm to Maximize Parallelism
– Wolf, Lam
- 1991
|
|
358
|
N.: Automatic discovery of linear restraints among variables of a program
– Cousot, Halbwachs
- 1978
|
|
200
|
Improving register allocation for subscripted variables
– Callahan, Carr, et al.
- 1990
|
|
172
|
Unimodular transformations of double loops
– Banerjee
- 1990
|
|
111
|
Iteration space tiling for memory hierarchies
– Wolfe
- 1987
|
|
100
|
On estimating and enhancing cache effectiveness
– Ferrante, Sarkar, et al.
- 1991
|
|
76
|
Compiler Analysis of the Value Ranges for Variables
– Harrison
- 1977
|
|
69
|
Numerical recipes in FORTRAN : The art of scientific computing
– Press
- 1992
|
|
63
|
Optimizing array bounds checks using flow analysis
– Gupta
- 1993
|
|
63
|
Elimination of redundant array subscript range checks
– Kolte, Wolfe
- 1995
|
|
59
|
A fresh look at optimizing array bound checking
– Gupta
- 1990
|
|
33
|
R.D.: Java programming for high performance numerical computing
– Moreira, Midkiff, et al.
|
|
29
|
Optimization of array subscript range checks
– Asuru
- 1992
|
|
27
|
Just-in-time optimizations for high-performance Java programs. Concurrency : Practice and Experience
– Cierniak, Li
- 1997
|
|
26
|
Optimizing java: Theory and practice. Concurrency: Practice and Experience
– Budimlic, Kennedy
- 1997
|
|
26
|
Optimizing array reference checking in Java programs
– Midkiff, Moreira, et al.
- 1998
|
|
25
|
Multiple version loops
– Byler, Davies, et al.
- 1987
|
|
24
|
Java access to numerical libraries
– Casanova, Dongarra, et al.
- 1997
|
|
21
|
IBM high performance compiler for Java. AIXpert Magazine
– Seshadri
- 1997
|
|
20
|
Javar: A prototype Java restructuring compiler
– Bik, Villancis, et al.
- 1997
|
|
20
|
Automatic selection of high-order transformations in the IBM XL Fortran compilers
– Sarkar
- 1997
|
|
18
|
Developing numerical libraries in Java
– Boisvert, Dongarra, et al.
- 1998
|
|
15
|
High performance numerical com-puting in Java: language and compiler issues
– Artigas, Gupta, et al.
- 1999
|
|
13
|
An optimizer for Ada - design, experiences and results
– Schwarz, Kirchgassner, et al.
- 1988
|
|
9
|
IBM High Performance Compiler for Java
– Corporation
- 1997
|
|
9
|
Algebraic Java classes for numerical optimization
– Schwab, Schroeder
- 1998
|
|
7
|
The evolution of numerical computing in Java
– GOSLING
- 1998
|
|
7
|
Java Grande Forum Report: Making Java Work for High-End Computing
– Forum
- 1998
|
|
5
|
A Prototype Computational Fluid Dynamics Case Study in Java
– Atwood, Garg, et al.
- 1997
|
|
3
|
Automatic proofs of the absence of common runtime errors
– COUSOT, HALBWACHS
- 1978
|
|
3
|
Elimination of redundant array subscript range checks
– Markstein, Cocke, et al.
- 1982
|
|
2
|
javab manual (version 1.0 BETA
– Bik, Gannon
- 1998
|
|
2
|
Method for optimizing array bounds checks in programs
– GUPTA, MIDKIFF, et al.
- 1998
|
|
2
|
The evolution of numerical computing in Java. URL: http://java.sun.com/ people/jag/FP.html
– GOSLING
- 1997
|
|
2
|
Numerically Intensive Java. URL http://www.alphaWorks.ibm.com/tech/ninja
– Moreira, Midkiff, et al.
- 1999
|
|
1
|
Better peformance with exceptions in Java
– Orchard
- 1998
|
|
1
|
A prototype bytecode parallelization tool. Concurrency, Pract. Exp
– BIK, GANNON
- 1998
|
|
1
|
Flop to Megaflops: Java for Technical Computing \Delta 29
– From
- 1990
|