Java programming for high-performance numerical computing

First proposed as a mechanism for enhancing Web content, the JavaTM language has taken off as a serious general-purpose programming language. Industry and academia alike have expressed great interest in using the Java language as a programming language for scientific and engineering computations. Applications in these domains are characterized by intensive numerical computing and often have very high performance requirements. In this paper we discuss programming techniques that lead to Java numerical codes with performance comparable to FORTRAN or C, the more traditional languages for this field. The techniques are centered around the use of a high-performance numerical library, written entirely in the Java language, and on compiler technology. The numerical library takes the form of the Array package for Java. Proper use of this package, and of other appropriate tools for compiling and running a Java application, results in code that is clean, portable, and fast. We illustrate the programming and performance issues through case studies in data mining and electromagnetism.

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

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

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

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

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

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

[7]  Dennis Gannon,et al.  Distributed pC++ Basic Ideas for an Object Parallel Language , 1993, Sci. Program..

[8]  Tomasz Imielinski,et al.  Mining association rules between sets of items in large databases , 1993, SIGMOD Conference.

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

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

[11]  William H. Press,et al.  Book-Review - Numerical Recipes in Pascal - the Art of Scientific Computing , 1989 .

[12]  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).

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

[14]  David A. Padua,et al.  Beyond Arrays - A Container-Centric Approach for Parallelization of Real-World Symbolic Applications , 1998, LCPC.

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

[16]  Roy Dz-Ching Ju,et al.  Execution of automatically parallelized APL programs on RP3 , 1991, IBM J. Res. Dev..

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

[18]  Matthias Schwab,et al.  Algebraic Java classes for numerical optimization , 1998 .

[19]  Samuel P. Midkiff,et al.  High Performance Numerical Computing in Java: Language and Compiler Issues , 1999, LCPC.

[20]  Gene H. Golub,et al.  Matrix computations , 1983 .

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

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

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

[24]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

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

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

[27]  Aart J. C. Bik,et al.  A Note on Native Level 1 BLAS in Java , 1997, Concurr. Pract. Exp..

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

[29]  Java Grande,et al.  Java Grande Forum Report: Making Java Work for High-end Computing , 2022 .

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

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

[32]  Robert G. Willhoft Parallel Expression in the APL2 Language , 1991, IBM Syst. J..

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

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

[35]  Evangelos Simoudis,et al.  Reality Check for Data Mining , 1996, IEEE Expert.