Skip to main content

High Performance Numerical Computing in Java: Language and Compiler Issues

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1999)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1863))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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

  2. 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.

    Google Scholar 

  3. Utpal Banerjee. Dependence Analysis. Loop Transformations for Restructuring Compilers. Kluwer Academic Publishers, Boston, MA, 1997.

    Google Scholar 

  4. 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

  5. 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.

    Google Scholar 

  6. 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

  7. 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.

    Article  Google Scholar 

  8. 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.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. 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

  13. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Publishing Company, 1995.

    Google Scholar 

  14. 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

  15. M. Gupta, S. Mukhopadhyay, and N. Sinha. Automatic parallelization of recursive procedures. Technical Report RC 21333(96110)4NOV1998, IBM Research, November 1998.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. 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.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. 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.

    Google Scholar 

  25. 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

  26. 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.

    Google Scholar 

  27. 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.

    Google Scholar 

  28. 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

  29. G. V. Wilson and P. Lu, editors. Parallel Programming using C++. MIT Press, 1996.

    Google Scholar 

  30. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics