SafeGPU: Contract- and library-based GPGPU for object-oriented languages. (June 2017)
- Record Type:
- Journal Article
- Title:
- SafeGPU: Contract- and library-based GPGPU for object-oriented languages. (June 2017)
- Main Title:
- SafeGPU: Contract- and library-based GPGPU for object-oriented languages
- Authors:
- Kolesnichenko, Alexey
Poskitt, Christopher M.
Nanz, Sebastian - Abstract:
- 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 theAbstract: 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. Abstract : Highlights: A library-based GPU programming approach for object-oriented languages; implemented for Eiffel, and partially ported to C#. Supports modular, efficient, and customizable GPU programming. Automatically generates and optimizes CUDA kernels from high-level code. Handles the transfer of primitives, simple classes, and function abstractions to C++ and CUDA. Supports contracts and efficient runtime assertion checking on the GPU. … (more)
- Is Part Of:
- Computer languages, systems & structures. Volume 48(2017)
- Journal:
- Computer languages, systems & structures
- Issue:
- Volume 48(2017)
- Issue Display:
- Volume 48, Issue 2017 (2017)
- Year:
- 2017
- Volume:
- 48
- Issue:
- 2017
- Issue Sort Value:
- 2017-0048-2017-0000
- Page Start:
- 68
- Page End:
- 88
- Publication Date:
- 2017-06
- Subjects:
- GPGPU -- Parallel computing -- Runtime code generation -- Generative programming -- Object-orientation -- Managed languages -- Design-by-contract -- Program correctness
Programming languages (Electronic computers) -- Periodicals
Computer networks -- Periodicals
Computer architecture -- Periodicals
Computer systems -- Periodicals
Langage de programmation
Réseau d'ordinateurs
Architecture d'ordinateur
Périodique électronique (Descripteur de forme)
Ressource Internet (Descripteur de forme)
005.13 - Journal URLs:
- http://www.sciencedirect.com/science/journal/14778424/40 ↗
http://www.elsevier.com/journals ↗ - DOI:
- 10.1016/j.cl.2016.08.002 ↗
- Languages:
- English
- ISSNs:
- 1477-8424
- Deposit Type:
- Legaldeposit
- View Content:
- Available online (eLD content is only available in our Reading Rooms) ↗
- Physical Locations:
- British Library DSC - 3394.071000
British Library DSC - BLDSS-3PM
British Library STI - ELD Digital store - Ingest File:
- 338.xml