NINJA: Java for high performance numerical computing

  • Authors:
  • José/ E. Moreira;Samuel P. Midkiff;Manish Gupta;Peng Wu;George Almasi;Pedro Artigas

  • Affiliations:
  • IBM Thomas J. Watson Research Center, Yorktown Heights, NY 10598-0218, USA. Tel.: +1 914 945 3018/ Fax: +1 914 945 4270/ E-mail: {jmoreira,smidkiff,mgupta,pengwu,gheorghe}@us.ibm.com;IBM Thomas J. Watson Research Center, Yorktown Heights, NY 10598-0218, USA. Tel.: +1 914 945 3018/ Fax: +1 914 945 4270/ E-mail: {jmoreira,smidkiff,mgupta,pengwu,gheorghe}@us.ibm.com;IBM Thomas J. Watson Research Center, Yorktown Heights, NY 10598-0218, USA. Tel.: +1 914 945 3018/ Fax: +1 914 945 4270/ E-mail: {jmoreira,smidkiff,mgupta,pengwu,gheorghe}@us.ibm.com;IBM Thomas J. Watson Research Center, Yorktown Heights, NY 10598-0218, USA. Tel.: +1 914 945 3018/ Fax: +1 914 945 4270/ E-mail: {jmoreira,smidkiff,mgupta,pengwu,gheorghe}@us.ibm.com;IBM Thomas J. Watson Research Center, Yorktown Heights, NY 10598-0218, USA. Tel.: +1 914 945 3018/ Fax: +1 914 945 4270/ E-mail: {jmoreira,smidkiff,mgupta,pengwu,gheorghe}@us.ibm.com;School of Computer Science, Carnegie Mellon University, Pittsburgh, PA 15213-3891, USA. E-mail: artigas@cs.cmu.edu

  • Venue:
  • Scientific Programming
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

When Java was first introduced, there was a perception that its many benefits came at a significant performance cost. In the particularly performance-sensitive field of numerical computing, initial measurements indicated a hundred-fold performance disadvantage between Java and more established languages such as Fortran and C. Although much progress has been made, and Java now can be competitive with C/C++ in many important situations, significant performance challenges remain. Existing Java virtual machines are not yet capable of performing the advanced loop transformations and automatic parallelization that are now common in state-of-the-art Fortran compilers. Java also has difficulties in implementing complex arithmetic efficiently. These performance deficiencies can be attacked with a combination of class libraries ({\it packages}, in Java) that implement truly multidimensional arrays and complex numbers, and new compiler techniques that exploit the properties of these class libraries to enable other, more conventional, optimizations. Two compiler techniques, {\it versioning} and {\it semantic expansion}, can be leveraged to allow fully automatic optimization and parallelization of Java code. Our measurements with the NINJA prototype Java environment show that Java can be competitive in performance with highly optimized and tuned Fortran code.