Abstract
A language of choice for general-purpose programming, Java is quickly becoming popular in more specialized areas, such as scientific computing. However, even though the compilation technologies have significantly improved Java execution, performance is still the main obstacle to the use of Java for scientific applications. Although good Java Virtual Machine implementations are approaching the performance of Fortran on similarly-coded applications, significant performance problems remain because of the power of the object-oriented programming paradigm. Our experiments show that full use of polymorphic, object-oriented programming can result in performance penalties of up to two orders of magnitude. To address this performance difficulty, the authors have developed the JaMake Java transformation system, which uses advanced program analysis and transformation techniques to allow programmers to create extensible and maintainable programs using object-oriented design, while generating Java programs whose performance approaches that of hand-optimized, Fortran-style code. Experiments on our collection of object-oriented scientific programs have shown that transformation by JaMake can yield speed-ups of a factor of ten or more, bringing the performance of these object-oriented programs to within 75% of hand-optimized, Fortran-style code.
This work is sponsored by Compaq and LACSI.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
F.E. Allen and J. Cocke. A catalogue of optimizing transformations, in Design and Optimization of Compilers, Prentice-Hall, 1–30, 1972.
P. Briggs, K. Cooper, T. Harvey, and T. Simpson, Practical improvements to the construction and destruction of static single assignment form, Software: Practice and Experience, 28(8), 859–881, 1998.
Z. Budimlić. Compiling Java for High Performance and the Internet, PhD thesis, Rice University, 2001.
Z. Budimlić and K. Kennedy. Optimizing Java: Theory and practice, Concurrency: Practice and Experience, 9(6), 445–463, 1997.
Z. Budimlić and K. Kennedy. Static interprocedural optimizations in Java, Technical Report CRPC-TR98746, Rice University, December 1998.
Z. Budimlić and K. Kennedy. Prospects for scientific computing in polymorphic, object-oriented style, in Proceedings of the Ninth SIAM Conference on Parallel Processing for Scientific Computing, San Antonio, Texas, March 1999.
Z. Budimlić, K. Kennedy, and J. Piper. The cost of being object-oriented: A preliminary study, Scientific Programming, 7(2), 87–95, 1999.
R. Cartwright. Encoding machine-specific optimization in generic byte code by using local variables as pseudo-registers, United States Patent, 6075942, June 2000.
C. Chambers and D. Ungar. Customization: Optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language, in Proceedings of the ACM SIGPLAN 89 Conference on Program Language Design and Implementation, 24(7), 146–160,1989.
K. Cooper, M. Hall, and K. Kennedy. Procedure cloning, in Proceedings of the 1992 International Conference on Computer Languages, Oakland, California, 96–105, 1992.
K. Cooper, M. Hall, and K. Kennedy. Ametho dology for procedure cloning, Computer Languages, 19(2), 105–117, 1993.
R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. An efficient method of computing static single assignment form, in Conference Record of the Sixteenth ACM Symposium on the Principles of Programming Languages, Austin, Texas, 25–35, 1989.
FPL Statistics Group. Linear algebra for statistics Java package. http://www1.fpl.fs.fed.us/linear_algebra.html.
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, Mass.: Addison-Wesley, 1999.
M. W. Hall and K. Kennedy. Efficient call graph analysis, ACM Letters on Programming Languages and Systems, 1(3), 227–242, 1992.
P. Havlak and K. Kennedy. An implementation of interprocedural bounded regular section analysis, IEEE Transactions on Parallel and Distributed Systems, 3(2), 1991.
J. L. Hennessy. Symbolic debugging of optimized code, ACM Transactions on Programming Languages and Systems, 4(3), 323–344, 1982.
R. Milner. Atheory of type polymorphism in programming, Journal of Computer and System Sciences, 17, 348–375, 1978.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Budimlić, Z., Kennedy, K. (2001). JaMake: A Java Compiler Environment. In: Margenov, S., Waśniewski, J., Yalamov, P. (eds) Large-Scale Scientific Computing. LSSC 2001. Lecture Notes in Computer Science, vol 2179. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45346-6_20
Download citation
DOI: https://doi.org/10.1007/3-540-45346-6_20
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43043-8
Online ISBN: 978-3-540-45346-8
eBook Packages: Springer Book Archive