The JavaSymphony Extensions for Parallel GPU Computing

Today, the use of GPUs as coprocessors to accelerate high-performance scientific applications is becoming an important practice. Still, some of the high-level programming languages such as Java require extensions or new interfaces for utilising the huge parallelism of these new devices. In this paper, we propose extensions to an existing Java-based programming and parallel computing environment called JavaSymphony to enable Java applications use accelerating devices such as GPUs with little API programmability change. With JavaSymphony, a parallel Java application can be uniformly programmed and executed on heterogeneous platforms consisting of conventional parallel computers enhanced with data-parallel coprocessors such as GPUs. We report results on using JavaSymphony for programming and improving the performance of six real applications and benchmarks in a heterogeneous environment consisting of a combination of different multi-core CPU and GPU devices.

[1]  Xuejia Lai,et al.  Markov Ciphers and Differential Cryptanalysis , 1991, EUROCRYPT.

[2]  Jianqin Zhou,et al.  On discrete cosine transform , 2011, ArXiv.

[3]  Radu Prodan,et al.  JavaSymphony: A Programming and Execution Environment for Parallel and Distributed Many-Core Architectures , 2010, Euro-Par.

[4]  Radu Prodan,et al.  Scheduling JavaSymphony Applications on Many-Core Parallel Computers , 2011, Euro-Par.

[5]  W. H. White,et al.  A Handbook of Physics , 2011 .

[6]  Alejandro Duran,et al.  Optimizing the Exploitation of Multicore Processors and GPUs with OpenMP and OpenCL , 2010, LCPC.

[7]  Martin D. Westhead,et al.  A methodology for benchmarking Java Grande applications , 1999, JAVA '99.

[8]  Michael Klemm,et al.  JCudaMP: OpenMP/Java on CUDA , 2010, IWMSE '10.

[9]  Joseph S. Sventek,et al.  Hera-JVM: a runtime system for heterogeneous multi-core architectures , 2010, OOPSLA.

[10]  James C. Hoe,et al.  Single-Chip Heterogeneous Computing: Does the Future Include Custom Logic, FPGAs, and GPGPUs? , 2010, 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture.

[11]  Eduard Ayguadé,et al.  An Extension of the StarSs Programming Model for Platforms with Multiple GPUs , 2009, Euro-Par.

[12]  Nicolas Pinto,et al.  PyCUDA and PyOpenCL: A scripting-based approach to GPU run-time code generation , 2009, Parallel Comput..

[13]  Vivek Sarkar,et al.  JCUDA: A Programmer-Friendly Interface for Accelerating Java Programs with CUDA , 2009, Euro-Par.

[14]  John D. Owens,et al.  GPU Computing , 2008, Proceedings of the IEEE.

[15]  Jeffrey G. Gray,et al.  CUDACL: A tool for CUDA and OpenCL programmers , 2010, 2010 International Conference on High Performance Computing.

[16]  Aaftab Munshi,et al.  The OpenCL specification , 2009, 2009 IEEE Hot Chips 21 Symposium (HCS).