Transparent use of Java objects on the GPU in the JaMP/OpenMP framework

Student:Carolin Wolf
Title:Transparent use of Java objects on the GPU in the JaMP/OpenMP framework
Type:masters thesis
Advisors:Dotzler, G.; Philippsen, M.
State:submitted on December 6, 2012

JaMP is an implementation of the well-known OpenMP standard adapted for Java. JaMP allows one to program, for example, a parallel for loop or a barrier without resorting to low-level thread programming. For example:
class Test {
void foo ( ) {
//#omp parallelfor
for ( int i = 0; i < N; i++){
a[i] = b[i] + c[i];
is valid JaMP code. JaMP currently supports all of OpenMP 2.0 with partial support for 3.0 features. The current implementation is pure Java although an older version integrated into Jackal also exists. The newer (pure Java) JaMP version, translates parallel for loops to CUDA for extra speed gains. If a particular loop is not CUDA-able, it is translated to a threaded version using the normal processor’s cores in a multi-core machine.

In the current JaMP/Cuda version the use of objects in CUDA-able loops is very limited. Calls to non-static methods prevent the execution of the loop on the GPU. Also other Java features like array boundary checks, exceptions, or instance-of are not supported. To allow the use of additional Java features, the goal of this project is to extend the current JaMP/Cuda system. The first part of the thesis should cover the handling of objects. The challenges here are to copy the objects and the object methods to the graphics card and to keep the data of the corresponding objects on the GPU and CPU consistent. In addition, the thesis should take into account the class hierarchy if object methods are called on the GPU. Porting the Java exception system to the graphics card is the second milestone in this thesis. It should cover the handling of exception and also the implementation of a set of standard Java run-time exceptions, like the IndexOutOfBoundsException. With a Hashmap implementation that runs on the graphic card, the work should demonstrate the practicability of the new features. The performance of the system shall be measured with standard benchmarks.


  • Implementation of object support for the GPU execution
  • Implementation of exception handling on the GPU
  • Implementation of a Hashmap for JaMP/Cuda
  • Benchmarking of the new JaMP/Cuda features
  • Run-time optimization of the new implemented features
  • Write the thesis


watermark seal