DCSEOct 24, 2014

Contract-Based General-Purpose GPU Programming

arXiv:1410.6685v47 citations
Originality Incremental advance
AI Analysis

This addresses the problem of low-level GPU programming complexity for non-experts, offering a modular and maintainable solution, though it is incremental in combining existing approaches.

The paper tackles the difficulty of programming GPUs for general-purpose computing by introducing SafeGPU, a library that integrates design-by-contract to improve programmer productivity and functional correctness, while achieving performance comparable to hand-written CUDA code.

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 providing performance that is comparable with hand-written CUDA code. Furthermore, runtime contract checking turns out to be feasible, as the contracts can be executed on the GPU.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes