Publication Type
Journal Article
Version
acceptedVersion
Publication Date
8-2016
Abstract
Using GPUs as general-purpose processors has revolutionized parallel computing by providing, for a large and growing set of algorithms, massive data-parallelization on desktop machines. An obstacle to their widespread adoption, however, is the difficulty of programming them and the low-level control of the hardware required to achieve good performance. This paper proposes a programming approach, SafeGPU, that aims to make GPU data-parallel operations accessible through high-level libraries for object-oriented languages, while maintaining the performance benefits of lower-level code. The approach provides data-parallel operations for collections that can be chained and combined to express compound computations, with data synchronization and device management all handled automatically. It also integrates the design-by-contract methodology, which increases confidence in functional program correctness by embedding executable specifications into the program text. We present a prototype of SafeGPU for Eiffel, and show that it leads to modular and concise code that is accessible for GPGPU non-experts, while still providing performance comparable with that of hand-written CUDA code. We also describe our first steps towards porting it to C#, highlighting some challenges, solutions, and insights for implementing the approach in different managed languages. Finally, we show that runtime contract-checking becomes feasible in SafeGPU, as the contracts can be executed on the GPU.
Keywords
GPGPU, parallel computing, runtime code generation, generative programming, object-orientation, managed languages, design-by-contract, program correctness
Discipline
Programming Languages and Compilers | Software Engineering
Research Areas
Software and Cyber-Physical Systems
Publication
Computer Languages, Systems and Structures
Volume
48
First Page
68
Last Page
88
ISSN
1477-8424
Identifier
10.1016/j.cl.2016.08.002
Publisher
Elsevier
Citation
KOLESNICHENKO, Alexey; POSKITT, Christopher M.; and NANZ, Sebastian.
SafeGPU: Contract- and library-based GPGPU for object-oriented languages. (2016). Computer Languages, Systems and Structures. 48, 68-88.
Available at: https://ink.library.smu.edu.sg/sis_research/4858
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-No Derivative Works 4.0 International License.
Additional URL
https://doi.org/10.1016/j.cl.2016.08.002