2015/08/27 by James Clarkson, Clarkson, James, Christos Kotselidis +5 · 1 voice · 1 citation
Computer Science · #CUDA #Code (set theory) #Code refactoring #Compiler #Computer science #General-purpose computing on graphics processing units #Graphics #Java #Operating system #Parallel Computing and Optimization Techniques #Parallel computing #Programming language #Real-Time Systems Scheduling #Software #Software System Performance and Reliability #Speedup #cs.DC #cs.PL
paper · pdf · doi:10.48550/arxiv.1508.06791
published in arXiv (Cornell University) (Cornell University)
arxiv created 2015/08/27 · openalex publication_date 2015/08/27 · arxiv updated 2015/08/28 · openalex created_date 2025/10/10 · openalex updated_date 2026/08/05
Heterogeneous programming has started becoming the norm in order to achieve better performance by running portions of code on the most appropriate hardware resource. Currently, significant engineering efforts are undertaken in order to enable existing programming languages to perform heterogeneous execution mainly on GPUs. In this paper we describe Jacc, an experimental framework which allows developers to program GPGPUs directly from Java. By using the Jacc framework, developers have the ability to add GPGPU support into their applications with minimal code refactoring. To simplify the development of GPGPU applications we allow developers to model heterogeneous code using two key abstractions: tasks, which encapsulate all the information needed to execute code on a GPGPU; and task graphs, which capture the inter-task control-flow of the application. Using this information the Jacc runtime is able to automatically handle data movement and synchronization between the host and the GPGPU; eliminating the need for explicitly managing disparate memory spaces. In order to generate highly parallel GPGPU code, Jacc provides developers with the ability to decorate key aspects of their code using annotations. The compiler, in turn, exploits this information in order to automatically generate code without requiring additional code refactoring. Finally, we demonstrate the advantages of Jacc, both in terms of programmability and performance, by evaluating it against existing Java frameworks. Experimental results show an average performance speedup of 32x and a 4.4x code decrease across eight evaluated benchmarks on a NVIDIA Tesla K20m GPU.