Object support for OpenMP-style programming of GPU clusters in Java
University of Erlangen-Nuremberg, Computer Science Department, Programming Systems Group, Erlangen, Germany
27th International Conference on Advanced Information Networking and Applications Workshops (WAINA 2013), 2013
For scientists, it is advantageous to use a high level of abstraction for programming their simulations, so that they can focus on the problem at hand instead of struggling with low-level details. However, current HPC clusters with multiple GPUs per node only offer explicit communication to and from the GPUs, require manual work to keep the data consistent, and often need explicit kernel programming. Moreover, known GPU programming frameworks are limited to a single GPU or a single machine and also rarely support objects. Our system removes the above restrictions. With a slight but necessary change in Java’s semantics, we achieve automatic distribution and efficient use of objects and arrays of objects on multiple GPUs in a cluster. On benchmarks that distribute arrays of objects over five machines with 10 GPUs, we achieve speedups of up to 4.9 compared to one node.