Advanced compiler optimizations for supercomputers
Communications of the ACM - Special issue on parallelism
Fast interprocedual alias analysis
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A general data dependence test for dynamic, pointer-based data structures
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Context-sensitive interprocedural points-to analysis in the presence of function pointers
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Efficient context-sensitive pointer analysis for C programs
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Automatic selection of high-order transformations in the IBM XL FORTRAN compilers
IBM Journal of Research and Development - Special issue: performance analysis and its impact on design
An incremental flow- and context-sensitive pointer aliasing analysis
Proceedings of the 21st international conference on Software engineering
Interprocedural pointer alias analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
From flop to megaflops: Java for technical computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dependence Analysis
Fortran 90 in CSE: A Case Study
IEEE Computational Science & Engineering
A Loop Transformation Theory and an Algorithm to Maximize Parallelism
IEEE Transactions on Parallel and Distributed Systems
Java programming for high-performance numerical computing
IBM Systems Journal
Optimizing array reference checking in Java programs
IBM Systems Journal
Design and evaluation of a linear algebra package for Java
Proceedings of the ACM 2000 conference on Java Grande
Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande
Communications of the ACM
Simple and effective array prefetching in Java
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Effective Enhancement of Loop Versioning in Java
CC '02 Proceedings of the 11th International Conference on Compiler Construction
TEST: a tracer for extracting speculative threads
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
The Jrpm system for dynamically parallelizing Java programs
Proceedings of the 30th annual international symposium on Computer architecture
Implicit java array bounds checking on 64-bit architecture
Proceedings of the 18th annual international conference on Supercomputing
Improving the computational intensity of unstructured mesh applications
Proceedings of the 19th annual international conference on Supercomputing
Implicit array bounds checking on 64-bit architectures
ACM Transactions on Architecture and Code Optimization (TACO)
Automatic parallelization for graphics processing units
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
Automatic Parallelization and Optimization of Programs by Proof Rewriting
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
A cost-aware parallel workload allocation approach based on machine learning techniques
NPC'07 Proceedings of the 2007 IFIP international conference on Network and parallel computing
NPC'10 Proceedings of the 2010 IFIP international conference on Network and parallel computing
Annotating user-defined abstractions for optimization
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Classification and utilization of abstractions for optimization
ISoLA'04 Proceedings of the First international conference on Leveraging Applications of Formal Methods
LCPC'04 Proceedings of the 17th international conference on Languages and Compilers for High Performance Computing
Analysis of pure methods using garbage collection
Proceedings of the 2012 ACM SIGPLAN Workshop on Memory Systems Performance and Correctness
Parallel execution of Java loops on Graphics Processing Units
Science of Computer Programming
Accelerating Habanero-Java programs with OpenCL generation
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
Hi-index | 0.02 |
From a software engineering perspective, the Java programming language provides an attractive platform for writing numerically intensive applications. A major drawback hampering its widespread adoption in this domain has been its poor performance on numerical codes. This paper describes a prototype Java compiler which demonstrates that it is possible to achieve performance levels approaching those of current state-of-the-art C, C++ and Fortran compilers on numerical codes. We describe a new transformation called alias versioning that takes advantage of the simplicity of pointers in Java. This transformation, combined with other techniques that we have developed, enables the compiler to perform high order loop transformations (for better data locality) and parallelization completely automatically. We believe that our compiler is the first to have such capabilities of optimizing numerical Java codes. We achieve, with Java, between 80 and 100% of the performance of highly optimized Fortran code in a variety of benchmarks. Furthermore, the automatic parallelization achieves speedups of up to 3.8 on four processors. Combining this compiler technology with packages containing the features expected by programmers of numerical applications would enable Java to become a serious contender for implementing new numerical applications.