Evaluating different Java bindings for OpenCL
Universidad Carlos III de Madrid. Departamento de Informatica
Universidad Carlos III de Madrid. Departamento de Informatica, 2013
@article{medina2013evaluating,
title={Evaluating different Java bindings for OpenCL},
author={Medina Dom{‘i}nguez, Raquel},
year={2013}
}
The traditional CPU is able to run only a few complex threads concurrently. By contrast, a GPU (Graphics Processing Unit) allows a concurrent execution of hundreds or thousands of simpler threads. The GPU was originally designed for a computer graphics, but nowadays it is being used for generalpurpose computation using a GPGPU (General Purpose GPU) technology. OpenCL, one of the GPGPU technologies, is introduced in this final project. OpenCL is an extension of C and enables efficient parallel programming for heterogeneous devices including both multi-core CPUs and GPUs. However, it provides a low level abstraction to utilize the hardware efficiently. This tends to a hurdle for productive parallel programming. On the other hand, Java is widely used in many application domains since it provides good productivity in software development. Recently, several methods that bind OpenCL and Java have been suggested: Joagamp, Jocl, JavaCL. In this final project, I evaluate these Java bindings for OpenCL in terms of execution time and the memory used. My own class for vector multiplication has been the baseline application in evaluating the libraries presented here. My results show that Joagamp is more efficient, and Jocl consumes less memory, while JavaCL is most productive in terms of the number of lines of code.
July 10, 2013 by hgpu