High Performance Numerical Computing in Java: Language and Compiler Issues

Poor performance on numerical codes has slowed the adoption of Java within the technical computing community. In this paper we describe a prototype array library and a research prototype compiler that support standard Java and deliver near-Fortran performance on numerically intensive codes. We discuss in detai our implementation of: (i) an efficient Java package for true multidimensional arrays; (ii) compiler techniques to generate efficient access to these arrays; and (iii) compiler optimizations that create safe, exception free regions of code that can be aggressively optimized. These techniques work together synergistically to make Java an efficient language for technical computing. In a set of four benchmarks, we achieve between 50 and 90% of the performance of highly optimized Fortran code. This represents a several-fold improvement compared to what can be achieved by the next best Java environment.

[1]  Wei Li,et al.  Unifying data and control transformations for distributed shared-memory machines , 1995, PLDI '95.

[2]  Chau-Wen Tseng,et al.  Data transformations for eliminating conflict misses , 1998, PLDI.

[3]  Samuel P. Midkiff,et al.  Fortran 90 in CSE: a case study , 1998 .

[4]  Samuel P. Midkiff,et al.  From flop to megaflops: Java for technical computing , 1998, TOPL.

[5]  Ken Kennedy,et al.  Analysis of interprocedural side effects in a parallel programming environment , 1988, J. Parallel Distributed Comput..

[6]  Jack J. Dongarra,et al.  Solving linear systems on vector and shared memory computers , 1990 .

[7]  Jerrold L. Wagener,et al.  Fortran 90 Handbook: Complete Ansi/Iso Reference , 1992 .

[8]  Mahmut T. Kandemir,et al.  Enhancing Spatial Locality via Data Layout Optimizations , 1998, Euro-Par.

[9]  Zoran Budimlic,et al.  Optimizing Java: theory and practice , 1997, Concurr. Pract. Exp..

[10]  Ken Kennedy,et al.  An Implementation of Interprocedural Bounded Regular Section Analysis , 1991, IEEE Trans. Parallel Distributed Syst..

[11]  Siddhartha Chatterjee,et al.  An Evaluation of Java for Numerical Computing , 1998, ISCOPE.

[12]  Henri Casanova,et al.  Java Access to Numerical Libraries , 1997, Concurr. Pract. Exp..

[13]  Matthias Schwab,et al.  Algebraic Java classes for numerical optimization , 1998, Concurr. Pract. Exp..

[14]  Aart J. C. Bik,et al.  A Note on Native Level 1 BLAS in Java , 1997, Concurrency Practice and Experience.

[15]  Samuel P. Midkiff,et al.  Efficient support for complex numbers in Java , 1999, JAVA '99.

[16]  Gregory V. Wilson,et al.  Parallel Programming Using C , 1996 .

[17]  Wei Li,et al.  Just‐in‐time optimizations for high‐performance Java programs , 1997 .

[18]  William H. Press,et al.  Numerical recipes in C. The art of scientific computing , 1987 .

[19]  Fred G. Gustavson,et al.  Recursion leads to automatic variable blocking for dense linear-algebra algorithms , 1997, IBM J. Res. Dev..

[20]  D. Quinlan,et al.  Run-time recognition of task parallelism within the P++ parallel array class library , 1993, Proceedings of Scalable Parallel Libraries Conference.

[21]  Vivek Sarkar,et al.  Automatic selection of high-order transformations in the IBM XL FORTRAN compilers , 1997, IBM J. Res. Dev..

[22]  Vladimir Getov,et al.  High-Performance Parallel Programming in Java: Exploiting Native Libraries , 1998, Concurr. Pract. Exp..

[23]  Ken Kennedy,et al.  Prospects for Scientific Computing in Polymorphic, Object-Oriented Style , 1999, PPSC.

[24]  Erik Ruf,et al.  Marmot: an optimizing compiler for Java , 2000, Softw. Pract. Exp..

[25]  Samuel P. Midkiff,et al.  Optimizing Array Reference Checking in Java Programs , 1998, IBM Syst. J..

[26]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[27]  Ronald F. Boisvert,et al.  Developing numerical libraries in Java , 1998, Concurr. Pract. Exp..

[28]  George K. Thiruvathukal Java Grande Forum Report: Making Java Work for High-End Computing , 1998 .

[29]  Mahmut T. Kandemir,et al.  A matrix-based approach to the global locality optimization problem , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[30]  William H. Press,et al.  Numerical Recipes in FORTRAN - The Art of Scientific Computing, 2nd Edition , 1987 .

[31]  Joel H. Saltz,et al.  Parallel Programming Using C++ , 1996 .

[32]  W. Press,et al.  Numerical Recipes in Fortran: The Art of Scientific Computing.@@@Numerical Recipes in C: The Art of Scientific Computing. , 1994 .