## An Evaluation of Java for Numerical Computing (1998)

### Cached

### Download Links

- [ftp.cs.unc.edu]
- [ftp.cs.unc.edu]
- [ftp.cs.unc.edu]
- DBLP

### Other Repositories/Bibliography

Venue: | In Proceedings of ISCOPE'98 |

Citations: | 21 - 1 self |

### BibTeX

@INPROCEEDINGS{Blount98anevaluation,

author = {Brian Blount and Siddhartha Chatterjee},

title = {An Evaluation of Java for Numerical Computing},

booktitle = {In Proceedings of ISCOPE'98},

year = {1998},

pages = {35--46},

publisher = {Springer Verlag}

}

### OpenURL

### Abstract

This paper describes the design and implementation of high performance numerical software in Java. Our primary goals are to characterize the performance of object-oriented numerical software written in Java and to investigate whether Java is a suitable language for such endeavors. We have implemented JLAPACK, a subset of the LAPACK library in Java. LAPACK is a high-performance Fortran 77 library used to solve common linear algebra problems. JLAPACK is an object-oriented library, using encapsulation, inheritance, and exception handling. It performs within a factor of four of the optimized Fortran version for certain platforms and test cases. When used with the native BLAS library, JLAPACK performs comparably with the Fortran version using the native BLAS library. We conclude that high-performance numerical software could be written in Java if a handful of concerns about language features and compilation strategies are adequately addressed.

### Citations

5292 |
Design patterns: Elements of reusable object-oriented software
- Gamma, Helm, et al.
- 1995
(Show Context)
Citation Context ...ormance of our version with the version generated by their translator in Section 5.5. Several goals influenced the design of JLAPACK. Some of these goals are well established in objectoriented design =-=[20]-=-; others are specific to Java. 1. Encapsulate all of the information specifying a vector or matrix into a class. This information fits into two categories: the data and its shape. This information sho... |

741 | A set of Level 3 Basic Linear Algebra Subprograms - Dongarra, Croz, et al. - 1990 |

534 | Basic Linear Algebra Subprograms for Fortran usage - Lawson, Hanson, et al. - 1979 |

317 | Pizza into Java: Translating theory into practice
- Odersky, Wadler
- 1997
(Show Context)
Citation Context ...verloading. The absence of parametric polymorphism required us to create a version of the JLAPACK library for each data type, which results in code bloat and extra programmer effort. Several projects =-=[2, 27, 28]-=- have examined methods for providing parametric polymorphism, either by modifying 13sthe JVM or by a adding a preprocessing phase, and it is possible that the feature will be available in future versi... |

171 | Parameterized Types for Java
- Myers, Bank, et al.
- 1997
(Show Context)
Citation Context ...verloading. The absence of parametric polymorphism required us to create a version of the JLAPACK library for each data type, which results in code bloat and extra programmer effort. Several projects =-=[2, 27, 28]-=- have examined methods for providing parametric polymorphism, either by modifying 13sthe JVM or by a adding a preprocessing phase, and it is possible that the feature will be available in future versi... |

122 |
Java in a Nutshell, O’Reilly & Associates
- FLANAGAN
- 1996
(Show Context)
Citation Context ...tors. v.beginning(); A.beginningCol(); for(j = v.length(); j > 0; j--) { } tmp = v.next(); A.nextCol(col); col.scale(tmp); These methods are similar to the methods defined by thejava.lang.Enumeration =-=[19]-=- interface. However, Enumeration does not handle primitive types, so we could not implement this functionality with theEnumeration interface. In JDK 1.2, our incremental operations are similar to the ... |

114 | Vcode: a retargetable, extensible, very fast dynamic code generation system
- Engler
- 1996
(Show Context)
Citation Context ...ations and do not appear to schedule code effectively. 4. Architectural issues. Current trends in processor implementation adds significant instruction reordering capabilities to the hardware. Engler =-=[17]-=- conjectures that this may reduce or obviate the need for instruction scheduling by JIT compilers. This is a reasonable conjecture whose range of applicability needs to be tested. 5. Experimentation w... |

103 | Automatic Program Transformation with JOIE
- Cohen, Chase, et al.
- 1998
(Show Context)
Citation Context ... on real types, inlining the code in the same method we did by hand. Load time: Complex numbers could be introduced through load time transformations, using a bytecode restructuring tool such as JOIE =-=[10]-=-. Complex numbers would be represented using a Complex class at the language level. At load time, the class loader would modify classes using objects of type Complex, inlining the code. This method is... |

101 | Adding type parameterization to the Java language
- Agesen, Freund, et al.
- 1997
(Show Context)
Citation Context ...verloading. The absence of parametric polymorphism required us to create a version of the JLAPACK library for each data type, which results in code bloat and extra programmer effort. Several projects =-=[2, 27, 28]-=- have examined methods for providing parametric polymorphism, either by modifying 13sthe JVM or by a adding a preprocessing phase, and it is possible that the feature will be available in future versi... |

99 | Algorithm 679: a set of level 3 basic linear algebra subprograms - Dongarra, Cruz, et al. - 1990 |

73 |
et al. LAPACK Users' Guide
- Anderson
- 1992
(Show Context)
Citation Context ...lly compliant JVM, with bounds checking and garbage collection enabled. JLAPACK performs within a factor of four of the optimized Fortran version for certain platforms and test cases. 2 LAPACK LAPACK =-=[3]-=- is a library of Fortran 77 routines for common linear algebra problems, such as systems of linear equations, linear least square problems, eigenvalue problems, and singular value problems. LAPACK use... |

67 |
effective code generation in a just-in-time Java compiler
- ―Fast
- 1998
(Show Context)
Citation Context ...Several projects are developing optimizers for Java. Moreira et al. [26] are developing a static compiler that optimizes array bounds checks and null pointer checks within loops. Adl-Tabatabai et al. =-=[1]-=- have developed a JIT compiler that performs a set of optimizations, including subexpression elimination, register 16sallocation, and the elimination of array bounds checking. Such optimizations may a... |

50 | From flop to megaflops: Java for technical computing
- Moreira, Midkiff, et al.
- 1998
(Show Context)
Citation Context ...] is an extension to Java that allows parallel programming. HPJava is somewhat similar to HPF and is designed for SPMD programming. Several projects are developing optimizers for Java. Moreira et al. =-=[26]-=- are developing a static compiler that optimizes array bounds checks and null pointer checks within loops. Adl-Tabatabai et al. [1] have developed a JIT compiler that performs a set of optimizations, ... |

48 |
Fast, effective code generation in a just-in-time Java compiler
- ADL-TABATABAI, CIERNIAK, et al.
- 1998
(Show Context)
Citation Context ...stem of linear equations AX = B, using a coefficient matrix A and a right hand side matrix B whose entries are generated using a pseudorandom number generator from a uniform distribution in the range =-=[0; 1]-=-. The same seeds are used in both the Fortran and Java versions, to guarantee that both versions solve identical problems. The square matrix A has between 10 and 1000 columns. The matrix B has from 1 ... |

42 | Algorithm 656: An extended Set of Basic Linear Algebra Subprograms: Model Implementation and Test Programs - Dongarra, Croz, et al. - 1988 |

27 | An extended set of basic linear algebra subprograms - Dongarra, Croz, et al. - 1988 |

27 | Algorithm 539: Basic Linear Algebraic Subprograms for Fortran usage - Lawson, Hanson, et al. - 1979 |

26 |
Optimizing java: Theory and practice. Concurrency: Practice and Experience
- Budimlic, Kennedy
- 1997
(Show Context)
Citation Context ...r changes. We noted in Section 5 several desirable optimizations that javac does not perform. Much work remains to be done here to develop better compilation techniques for Java. Budimlic and Kennedy =-=[9]-=- are exploring such optimizations using object inlining techniques. 3. Just-In-Time compilation. Current JIT compilers are in their early version, and have not been heavily optimized. As we discussed ... |

17 |
A note on native level 1
- Bik, Gannon
- 1997
(Show Context)
Citation Context ... Java, and the other employing vender-supplied native BLAS. The latter version provides Java wrappers around the Fortran BLAS 3sroutines, using thenative method call mechanism of Java. Bik and Gannon =-=[7]-=- have shown that native methods can be used to achieve good performance, and our findings support their results. LAPACK uses block-oriented algorithms for many of its operations. A block-oriented algo... |

8 | A Comparison of Performance-Enhancing Strategies for Parallel Numerical Object-Oriented Frameworks
- Bassetti, Davis, et al.
- 1997
(Show Context)
Citation Context ...f Java. We have discussed several object-oriented programming idioms to implement numerical libraries efficiently. Future work needs to explore these and other techniques such as expression templates =-=[6]-=-. 2. Compiler changes. We noted in Section 5 several desirable optimizations that javac does not perform. Much work remains to be done here to develop better compilation techniques for Java. Budimlic ... |

8 |
Developing numerical libraries in Java. Concurrency: Practice and Experience
- Boisvert, Dongarra, et al.
- 1998
(Show Context)
Citation Context ... reference to its own data), and update its shape object. This approach eliminates unnecessary copying of data elements and allows reuse of storage for temporary vectors and matrices. Boisvert et al. =-=[8]-=- discuss an implementation for numerical libraries in Java that does not encapsulate vectors and matrices in classes. They use two-dimensional arrays to represent matrices, and store infor8smation des... |

5 |
Fast e ective code generation in a just-in-time Java compiler
- Adl-Tabatabai, Cierniak, et al.
- 1998
(Show Context)
Citation Context ...system of linear equations AX = B, using a coe cient matrix A and a right hand side matrix B whose entries are generated using a pseudorandom number generator from a uniform distribution in the range =-=[0; 1]-=-. The same seeds are used in both the Fortran and Java versions, to guarantee that both versions solve identical problems. The square matrix A has between 10 and 1000 columns. The matrix B has from 1 ... |

4 | Considerations in HPJava language design and implementation
- Zhang, Carpenter, et al.
- 1998
(Show Context)
Citation Context ...libraries for numerical computing in Java. Its initial version contains functionality such as elementary matrix and vector operations, matrix factorization, and the solution of linear systems. HPJava =-=[31]-=- is an extension to Java that allows parallel programming. HPJava is somewhat similar to HPF and is designed for SPMD programming. Several projects are developing optimizers for Java. Moreira et al. [... |

4 |
The Java TM Programming Language. The Java TM Series
- Arnold, Gosling
- 1996
(Show Context)
Citation Context ...formance numerical software could be written in Java if a handful of concerns about language features and compilation strategies are adequately addressed. 1 Introduction The Java programming language =-=[4]-=- achieved rapid success due to several features key to the language. Java bytecodes are portable, which means that programs can be run on any machine that has an implementation of the Java Virtual Mac... |

3 | The Java TM Language Specification. TheJava TM Series - Gosling, Joy, et al. - 2005 |

3 |
Dongarra et al. A set of level 3 basic linear algebra subprograms
- J
- 1990
(Show Context)
Citation Context ...the simple linear equation solver for general matrices (i.e., xGESV and the routines they require) with both blocking and nonblocking versions. LAPACK uses the Basic Linear Algebra Subroutines (BLAS) =-=[13, 12,15, 14, 20,19]-=- for many of its time-critical inner loops. Most high performance machines have BLAS libraries with machine-speci c optimizations, called native BLAS. Generic Fortran 77 BLAS code is available and is ... |

2 |
Improving C++ performance using temporaries
- Dingle, Hildebrandt
- 1998
(Show Context)
Citation Context ...uctor calls Excessive object creation is often a substantial source of performance loss in object-oriented programs. Therefore, we use a technique (similar to that described by Dingle and Hildebrandt =-=[12]-=-) that limits the number of temporary vectors and matrices created. Such objects are used locally in methods of the JBLAS and JLAPACK classes, so it is natural to place them within the methods. Howeve... |

2 |
Dongarra et al. Algorithm 656: An extended set of basic linear algebra subprograms: Model implementaton and test programs
- J
- 1988
(Show Context)
Citation Context ...the simple linear equation solver for general matrices (i.e., xGESV and the routines they require) with both blocking and nonblocking versions. LAPACK uses the Basic Linear Algebra Subroutines (BLAS) =-=[13, 12,15, 14, 20,19]-=- for many of its time-critical inner loops. Most high performance machines have BLAS libraries with machine-speci c optimizations, called native BLAS. Generic Fortran 77 BLAS code is available and is ... |

2 |
Lawson et al. Basic linear algebra subprograms for FORTRAN usage
- L
(Show Context)
Citation Context ...the simple linear equation solver for general matrices (i.e., xGESV and the routines they require) with both blocking and nonblocking versions. LAPACK uses the Basic Linear Algebra Subroutines (BLAS) =-=[13, 12,15, 14, 20,19]-=- for many of its time-critical inner loops. Most high performance machines have BLAS libraries with machine-speci c optimizations, called native BLAS. Generic Fortran 77 BLAS code is available and is ... |

2 |
From op to mega ops: Java for technical computing
- Moreira, Midkiff, et al.
- 1998
(Show Context)
Citation Context ... is an extension to Java, that allows parallel programming. HPJava is somewhat similar to HPF and is designed for SPMD programming. Several projects are developing optimizers for Java. Moreira et al. =-=[21]-=- are developing a static compiler that optimizes array bounds checks and null pointer checks within loops. Adl-Tabatabai et al. [1] have developed a JIT compiler that performs a set of optimizations, ... |

1 |
The Java TM Programming Language. TheJava TM Series
- Arnold, Gosling
- 1996
(Show Context)
Citation Context ...rmance numerical software could be written in Java if a handful of concerns about language features and compilation strategies are adequately addressed. 1s1 Introduction The Java programming language =-=[4]-=- achieved rapid success due to several features key to the language. Java bytecodes are portable, which means that programs can be run on any machine that has an implementation of the Java Virtual Mac... |

1 |
Kaffe, anyone? Implementing a Java Virtual Machine
- Barr, Steinhorn
- 1998
(Show Context)
Citation Context ... DEC, where native BLAS libraries were available through thedxml library [11], we measured performance with both the JBLAS classes and the native library. On the Sparcs, we ran two versions withkaffe =-=[5, 30]-=-: one with dynamic array bounds checking turned on and the other with this feature turned off. We turned off array bounds checking inkaffe by modifying the native instructions that its JIT compiler em... |

1 |
The Fortran 2 Java (f2j) compiler project
- F2J
(Show Context)
Citation Context ...ventions, providing implementations for four data types: single precision real (S), double precision real (D), single precision complex (C), and double precision complex (Z). Another project, the F2J =-=[18]-=- project, is also generating LAPACK and BLAS libraries in Java. They have developed a Fortran to Java translator, and are using this translator to transcribe the Fortran LAPACK 4ssource code into Java... |

1 |
The Kaffe homepage. http://www.transvirtual.com/kaffe.html
- Wilkinson
(Show Context)
Citation Context ... DEC, where native BLAS libraries were available through thedxml library [11], we measured performance with both the JBLAS classes and the native library. On the Sparcs, we ran two versions withkaffe =-=[5, 30]-=-: one with dynamic array bounds checking turned on and the other with this feature turned off. We turned off array bounds checking inkaffe by modifying the native instructions that its JIT compiler em... |

1 |
et al. A comparison of performance-enhancing strategies for parallel numerical object-oriented frameworks
- Bassetti
- 1997
(Show Context)
Citation Context ...l of Java. We have discussed several object-oriented programming idioms to implementnumerical libraries e ciently. Future work needs to explore these and other techniques such as expression templates =-=[6]-=-. 2. Compiler changes. We noted in Section 4 several desirable optimizations that javac does not perform. Much work remains to be done here to develop better compilation techniques for Java. Budimlic ... |

1 |
et al. Developing numerical libraries in Java
- Boisvert
- 1998
(Show Context)
Citation Context ... giving it a reference to its own data), and update its shape object. This approach eliminates unnecessary data copying and allows reuse of storage for temporary vectors and matrices. Boisvert et al. =-=[8]-=- discuss an implementation for numerical libraries in Java that does not encapsulate vectors and matrices. They use two-dimensional arrayssto represent matrices, and store information describing the s... |

1 |
Dongarra et al. Algorithm 679: A set of level 3 basic linear algebra subprograms: Model implementaton and test programs
- J
- 1990
(Show Context)
Citation Context |

1 |
Dongarra et al. An extended set of basic linear algebra subprograms
- J
- 1988
(Show Context)
Citation Context |

1 |
Lawson et al. Algorithm 539: Basic linear algebra subprograms for Fortran usage
- L
- 1979
(Show Context)
Citation Context |

1 |
et al. Considerations in HPJava language design and implementation
- Zhang
- 1998
(Show Context)
Citation Context ...libraries for numerical computing in Java. Its initial version contains functionality such as elementary matrix and vector operations, matrix factorization, and the solution of linear systems. HPJava =-=[25]-=- is an extension to Java, that allows parallel programming. HPJava is somewhat similar to HPF and is designed for SPMD programming. Several projects are developing optimizers for Java. Moreira et al. ... |