Java programming for high-performance numerical computing

  • Authors:
  • J. E. Moreira;S. P. Midkiff;M. Gupta;P. V. Artigas;M. Snir;R. D. Lawrence

  • Affiliations:
  • IBM Research Division, Thomas J. Watson Research Center, P.O. Box 218, Yorktown Heights, New York;IBM Research Division, Thomas J. Watson Research Center, P.O. Box 218, Yorktown Heights, New York;IBM Research Division, Thomas J. Watson Research Center, P.O. Box 218, Yorktown Heights, New York;IBM Research Division, Thomas J. Watson Research Center, P.O. Box 218, Yorktown Heights, New York;IBM Research Division, Thomas J. Watson Research Center, P.O. Box 218, Yorktown Heights, New York;IBM Research Division, Thomas J. Watson Research Center, P.O. Box 218, Yorktown Heights, New York

  • Venue:
  • IBM Systems Journal
  • Year:
  • 2000

Quantified Score

Hi-index 0.02

Visualization

Abstract

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.