Contract-Based General-Purpose GPU Programming
Alexey Kolesnichenko, Christopher M. Poskitt, Sebastian Nanz, Bertrand, Meyer

TL;DR
This paper introduces SafeGPU, a programming library that simplifies GPU programming within object-oriented languages, balancing ease of use, correctness, and performance, and enabling runtime contract checking on GPUs.
Contribution
The paper presents SafeGPU, a novel library integrating design-by-contract with GPU programming to improve accessibility, correctness, and performance for non-expert programmers.
Findings
SafeGPU produces modular, maintainable code accessible to non-experts.
Performance comparable to hand-written CUDA code.
Runtime contract checking is feasible on GPUs.
Abstract
Using GPUs as general-purpose processors has revolutionized parallel computing by offering, for a large and growing set of algorithms, massive data-parallelization on desktop machines. An obstacle to widespread adoption, however, is the difficulty of programming them and the low-level control of the hardware required to achieve good performance. This paper suggests a programming library, SafeGPU, that aims at striking a balance between programmer productivity and performance, by making GPU data-parallel operations accessible from within a classical object-oriented programming language. The solution is integrated with the design-by-contract approach, which increases confidence in functional program correctness by embedding executable program specifications into the program text. We show that our library leads to modular and maintainable code that is accessible to GPGPU non-experts, while…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
