Phil Pratt-Szeliga, an instructor at Syracuse University, has released the source code for the Rootbeer compiler - a tool he and colleagues Jim Fawcett and Roy Welch claim makes it significantly easier to write code for execution on a graphics processor.
The benefits of running highly parallel code on a graphics processor - which typically has hundreds or thousands of cores, compared to a CPU's half-dozen - are well known. Projects including DirectCompute, OpenCL and CUDA all aim to allow coders to port the parallel portions of their programs to GPUs - but Pratt-Szeliga claims they don't make it easy.
'When converting a serial program to a parallel program that can run on a graphics processing unit, the developer must choose what functions will run on the GPU
' explains Pratt-Szeliga. 'For each function the developer chooses, he or she needs to manually write code to: serialise state to GPU memory; define the kernel code that the GPU will execute; control the kernel launch; and deserialise state back to CPU memory.
Seeing that as far too many steps, Pratt-Szeliga developed Rootbeer, a compiler which allows programmers to access the power of the GPU directly within Java. 'Rootbeer [...] allows developers to simply write code in Java and the (de)serialisation, kernel code generation and kernel launch is done automatically,
' Pratt-Szeliga explains. 'This is in contrast to Java language bindings for CUDA or OpenCL, where the developer still has to do these things manually.
The Rootbeer compiler supports all the standard Java features, with the exception of dynamic method invocation, reflection and native methods. Despite these restrictions, it promises much: in testing, Pratt-Szeliga and his team developed three performance example applications with the best demonstrating a 100x performance boost compared to CPU-based execution; the worst, admittedly, slowed down by 3x compared to its original version.
While Rootbeer certainly isn't suitable for every case, it's a remarkable attempt to bring the benefits of GPGPU computing to additional program types - and for those, like the best-performing test case, that are suited to parallel execution, promises significant performance gains for a very small investment of time and effort.
The full source code for Rootbeer can be downloaded from GitHub
, along with a copy of the team's paper on the subject
from the 14th IEEE International Conference on High Performance Computing.