Simple and effective link-time optimization of Modula-3 programs
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Automatic inline allocation of objects
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
An automatic object inlining optimization and its evaluation
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
A study of devirtualization techniques for a Java Just-In-Time compiler
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OpenMP: An Industry-Standard API for Shared-Memory Programming
IEEE Computational Science & Engineering
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Automatic feedback-directed object inlining in the java hotspot™ virtual machine
Proceedings of the 3rd international conference on Virtual execution environments
JCUDA: A Programmer-Friendly Interface for Accelerating Java Programs with CUDA
Euro-Par '09 Proceedings of the 15th International Euro-Par Conference on Parallel Processing
Proceedings of the 3rd International Workshop on Multicore Software Engineering
A domain-specific approach to heterogeneous parallelism
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
Firepile: run-time compilation for GPUs in scala
Proceedings of the 10th ACM international conference on Generative programming and component engineering
Proceedings of the 5th Annual Workshop on General Purpose Processing with Graphics Processing Units
Rootbeer: Seamlessly Using GPUs from Java
HPCC '12 Proceedings of the 2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems
Hi-index | 0.00 |
This paper proposes a framework for building multi-platform applications in Java for High Performance Computing (HPC). It allows HPC developers to write their programs in Java but dynamically translate part of the programs into C programs using MPI or CUDA so that the translated code can be executed on multi-platforms. The source of the translated code is written in Java but with extensions for MPI and CUDA supports. The implementations for different platforms are switched by object-oriented mechanisms such as dynamic method dispatch. However, object oriented mechanisms are major sources of execution overheads. To reduce these overheads, the proposed framework requires that the translated code is subject to our coding rules, in which object-oriented mechanisms are available only in limited contexts. All objects except arrays must be immutable and most class types must be leaf classes. Only the types of method parameters and instance fields can be non-leaf class types. These restrictions allow our framework to statically determine object types during the code translation while they still enable building a practical class library for HPC with respect to customizability. This paper presents examples of the class libraries built on top of our framework. Their performance is sometime better than the performance of the programs written in C++ with equivalent class libraries since C++ is a general-purpose language and thus its expressiveness does not perfectly fit our problem domain, HPC applications.