JaBEE: framework for object-oriented Java bytecode compilation and execution on graphics processor units

There is an increasing interest from software developers in executing Java and .NET bytecode programs on General Purpose Graphics Processor Units (GPGPUs). Existing solutions have limited support for operations on objects and often require explicit handling of memory transfers between CPU and GPU. In this paper, we describe a Java Bytecode Execution Environment (JaBEE) which supports common object-oriented constructs such as dynamic dispatch, encapsulation and object creation on GPUs. This experimental environment facilitates GPU code compilation, execution and transparent memory management. We compare the performance of our approach with CPU-based and CUDA-C-based code executions of the same programs. We discuss challenges, limitations and opportunities of bytecode execution on GPGPUs.

[1]  Dirk Grunwald,et al.  Reducing indirect function call overhead in C++ programs , 1994, POPL '94.

[2]  David Grove,et al.  Profile-guided receiver class prediction , 1995, OOPSLA.

[3]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[4]  Jong-Deok Choi,et al.  TECHNOLOGY ADMINISTRATION , 2004 .

[5]  Martin C. Rinard,et al.  Compositional pointer and escape analysis for Java programs , 1999, OOPSLA '99.

[6]  David Detlefs,et al.  Inlining of Virtual Methods , 1999, ECOOP.

[7]  Toshiaki Yasue,et al.  A study of devirtualization techniques for a Java Just-In-Time compiler , 2000, OOPSLA '00.

[8]  Bruno Blanchet,et al.  Escape analysis for JavaTM: Theory and practice , 2003, TOPL.

[9]  Nicolas Geoffray Fostering system research with managed runtimes , 2009 .

[10]  Michael Garland,et al.  Implementing sparse matrix-vector multiplication on throughput-oriented processors , 2009, Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis.

[11]  Hamid Laga,et al.  CUDA (Computer Unified Device Architecture) , 2009 .

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

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

[14]  Julia L. Lawall,et al.  VMKit: a substrate for managed runtime environments , 2010, VEE '10.

[15]  Huiyang Zhou,et al.  Accelerating MATLAB Image Processing Toolbox functions on GPUs , 2010, GPGPU-3.

[16]  Manuel M. T. Chakravarty,et al.  Accelerating Haskell array codes with multicore GPUs , 2011, DAMP '11.

[17]  Nathaniel Nystrom,et al.  Firepile: run-time compilation for GPUs in scala , 2011, GPCE '11.