Spar: a set of extensions to Java for scientific computation

We present a set of language extensions that improve the expressiveness and performance of Java for scientific computation. The language extensions allow the manipulation of multi‐dimensional arrays to be expressed more naturally, and to be implemented more efficiently. Furthermore, data‐parallel programming is supported, allowing efficient parallelization of a large class of operations on arrays. We also provide language extensions to construct specialized array representations, such as symmetric, block, and sparse matrices. These extensions are: tuples, parameterized types, array subscript overloading, and the inline modifier. These extensions are not only useful in the construction of special array representations, but are also useful in their own right. Finally, we add complex numbers as a primitive type to the language. We evaluate our language extensions using performance results. We also compare relevant code fragments of our extended language with standard Java implementations and language extensions proposed by others. Copyright © 2003 John Wiley & Sons, Ltd.

[1]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[2]  Henri E. Bal,et al.  Experience with a Portability Layer for Implementing Parallel Prgroamming Systems , 1996, PDPTA.

[3]  Kevin Sowizral,et al.  The Java 3D API Specification , 1997 .

[4]  Katherine A. Yelick,et al.  Titanium: A High-performance Java Dialect , 1998, Concurr. Pract. Exp..

[5]  Henk J. Sips,et al.  V-cal: A Calculus for the Compilation of Data Parallel Languages , 1995, LCPC.

[6]  Samuel P. Midkiff,et al.  High Performance Numerical Computing in Java: Language and Compiler Issues , 1999, LCPC.

[7]  Michael Frumkin,et al.  Implementation of NAS Parallel Benchmarks in High Performance Fortran , 2000 .

[8]  Andrew C. Myers,et al.  Parameterized types for Java , 1997, POPL '97.

[9]  C. van Reeukwijk Tm: a Code Generator for Recursive Data Structures , 1992, Softw. Pract. Exp..

[10]  Michael Philippsen,et al.  Complex numbers for Java , 2000 .

[11]  Samuel P. Midkiff,et al.  Java programming for high-performance numerical computing , 2000, IBM Syst. J..

[12]  Gábor Tóth The LASY Preprocessor and Its Application to General Multidimensional Codes , 1997 .

[13]  Arjan J. C. van Gemund,et al.  Spar: A programming language for semi‐automatic compilation of parallel programs , 1997 .

[14]  Peter M. A. Sloot,et al.  The distributed ASCI Supercomputer project , 2000, OPSR.

[15]  Kresten Krab Thorup Genericity in Java with Virtual Types , 1997, ECOOP.

[16]  Katherine Yelick,et al.  Titanium: a high-performance Java dialect , 1998 .