Abstract
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 detail 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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Java Grande Forum report: Making Java work for high-end computing. Java Grande Forum Panel, SC98, Orlando, FL, November 1998. URL:http://www.javagrande.org/reports.htm
J. C. Adams, W. S. Brainerd, J. T. Martin, B. T. Smith, and J. L. Wagener. Fortran 90 Handbook: Complete ANSI/ISO Reference. McGraw-Hill, 1992.
Utpal Banerjee. Dependence Analysis. Loop Transformations for Restructuring Compilers. Kluwer Academic Publishers, Boston, MA, 1997.
A. Bik and D. B. Gannon. A note on level 1 BLAS in Java. In Proceedings of the Workshop on Java for Computational Science and Engineering-Simulation and Modeling II, June 1997. URL http://www.npac.syr.edu/users/gcf/03/javaforcse/acmspecissue/latestpapers.html
B. Blount and S. Chatterjee. An evaluation of Java for numerical computing. In Proceedings of ISCOPE’98, volume 1505 of Lecture Notes in Computer Science, pages 35–46. Springer Verlag, 1998.
R. F. Boisvert, J. J. Dongarra, R. Pozo, K.A. Remington, and G.W. Stewart. Developing numerical libraries in Java. In ACM 1998 Workshop on Java for High-Performance Network Computing. ACM SIGPLAN, 1998. URL: http://www.cs.ucsb.edu/conferences/java98
D. Callahan and K. Kennedy. Analysis of interprocedural side effects in a parallel programming environment. Journal of Parallel and Distributed Computing, 5:517–550, 1988.
H. Casanova, J. Dongarra, and D. M. Doolin. Java access to numerical libraries. Concurrency, Pract. Exp. (UK), 9(11):1279–91, November 1997. Java for Computational Science and Engineering-Simulation and Modeling II Las Vegas, NV, USA 21 June 1997.
M. Cierniak and W. Li. Unifying data and control transformations for distributed shared memory machines. In Proc. ACM SIGPLAN’ 95 Conference on Programming Language Design and Implementation, La Jolla, CA, June 1995.
M. Cierniak and W. Li. Just-in-time optimization for high-performance Java programs. Concurrency, Pract. Exp. (UK), 9(11):1063–73, November 1997. Java for Computational Science and Engineering-Simulation and Modeling II Las Vegas, NV, June 21, 1997.
J. J. Dongarra, I. S. Duff, D. C. Sorensen, and H. A. van der Vorst. Solving Linear Systems on Vector and Shared Memory Computers. Society for Industrial and Applied Mathematics, 1991.
R. Fitzgerald, T. B. Knoblock, E. Ruf, Bjarne Steensgaard, and D. Tarditi. Marmot: an optimizing compiler for Java. Technical report, Microsoft Research, October 1998. URL: http://research.microsoft.com/apl/default.htm
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Publishing Company, 1995.
V. Getov, S. Flynn-Hummel, and S. Mintchev. High-performance parallel programming in Java: Exploiting native libraries. In ACM 1998 Workshop on Java for High-Performance Network Computing. ACM SIGPLAN, 1998. URL: http://www.cs.ucsb.edu/conferences/java98
M. Gupta, S. Mukhopadhyay, and N. Sinha. Automatic parallelization of recursive procedures. Technical Report RC 21333(96110)4NOV1998, IBM Research, November 1998.
F. G. Gustavson. Recursion leads to automatic variable blocking for dense linear algebra algorithms. IBM Journal of Research and Development, 41(6):737–755, November 1997.
P. Havlak and K. Kennedy. An implementation of interprocedural bounded regular section analysis. IEEE Transactions on Parallel and Distributed Systems, 2(3):350–360, July 1991.
M. Kandemir, A. Choudhary, J. Ramanujam, and P. Banerjee. A matrix-based approach to the global locality optimization problem. In Proceedings of International Conference on Parallel Architectures and Compilation Techniques (PACT’98), Paris, France, October 1998.
M. Kandemir, A. Choudhary, J. Ramanujam, N. Shenoy, and P. Banerjee. Enhancing spatial locality via data layout optimizations. In Proceedings of Euro-Par’98, Southampton, UK, volume 1470 of Lecture Notes in Computer Science, pages 422–434. Springer Verlag, September 1998.
S.P. Midkiff, J.E. Moreira, and M. Snir. Optimizing array reference checking in Java programs. IBM Systems Journal, 37(3):409–453, August 1998.
J. E. Moreira and S. P. Midkiff. Fortran 90 in CSE: A case study. IEEE Computational Science & Engineering, 5(2):39–49, April-June 1998.
J. E. Moreira, S. P. Midkiff, and M. Gupta. From flop to Megaflops: Java for technical computing. In Proceedings of the 11th International Workshop on Languages and Compilers for Parallel Computing, LCPC’98, 1998. IBM Research Report21166.
R. Parsons and D. Quinlan. Run time recognition of task parallelism within the P++ parallel array class library. In Proceedings of the Scalable Parallel Libraries Conference, pages 77–86. IEEE Comput. Soc. Press, October 1993.
W. H. Press, S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery. Numerical Recipes in FORTRAN: The Art of Scientific Computing. Cambridge University Press, 1992.
J.V.W. Reynders, J. C. Cummings, M. Tholburn, P. J. Hinker, S. R. Atlas, S. Banerjee, M. Srikant, W. F. Humphrey, S. R. Karmesin, and K. Keahey. POOMA: A framework for scientific simulation on parallel architectures. In Proceedings of First International Workshop on High Level Programming Models and Supportive Environments, Honolulu, HI, pages 41–49, April 16 1996. URL: http://www.acl.lanl.gov/PoomaFramework/papers/papers.html
G. Rivera and C.-W. Tseng. Data transformations for eliminating conflict misses. In Proceedings of the ACM SIGPLAN’98 Conference on Programming Language Design and Implementation, pages 38–49, Montreal, Canada, June 1998. ACM Press.
V. Sarkar. Automatic selection of high-order transformations in the IBM XL Fortran compilers. IBM Journal of Research and Development, 41(3):233–264, May 1997.
M. Schwab and J. Schroeder. Algebraic Java classes for numerical optimization. In ACM 1998 Workshop on Java for High-Performance Network Computing. ACM SIGPLAN, 1998. URL: http://www.cs.ucsb.edu/conferences/java98
G. V. Wilson and P. Lu, editors. Parallel Programming using C++. MIT Press, 1996.
P. Wu, S. P. Midkiff, J. E. Moreira, and M. Gupta. Efficient support for complex numbers in Java. In Proceedings of the 1999 ACM Java Grande Conference, 1999. IBM Research Division reportRC21393.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Artigas, P.V., Gupta, M., Midkiff, S.P., Moreira, J.E. (2000). High Performance Numerical Computing in Java: Language and Compiler Issues. In: Carter, L., Ferrante, J. (eds) Languages and Compilers for Parallel Computing. LCPC 1999. Lecture Notes in Computer Science, vol 1863. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44905-1_1
Download citation
DOI: https://doi.org/10.1007/3-540-44905-1_1
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67858-8
Online ISBN: 978-3-540-44905-8
eBook Packages: Springer Book Archive