Advertisement

High Performance Numerical Computing in Java: Language and Compiler Issues

  • Pedro V. Artigas
  • Manish Gupta
  • Samuel P. Midkiff
  • José E. Moreira
Conference paper
Part of the Lecture Notes in Computer Science book series (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.

Keywords

Safe Region Compiler Optimization Array Reference Array Package Multidimensional Array 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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. 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. 3.
    Utpal Banerjee. Dependence Analysis. Loop Transformations for Restructuring Compilers. Kluwer Academic Publishers, Boston, MA, 1997.Google Scholar
  4. 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. 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. 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. 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.CrossRefGoogle Scholar
  8. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 29.
    G. V. Wilson and P. Lu, editors. Parallel Programming using C++. MIT Press, 1996.Google Scholar
  30. 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

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Pedro V. Artigas
    • 1
  • Manish Gupta
    • 1
  • Samuel P. Midkiff
    • 1
  • José E. Moreira
    • 1
  1. 1.IBM Thomas J.Watson Research CenterYorktown Heights

Personalised recommendations