Formal Semantics of Heterogeneous CUDA-C: A Modular Approach with Applications
The authors extend an off-the-shelf, executable formal semantics of C (Ellison and Ros, u's K Framework semantics) with the core features of CUDA-C. The hybrid CPU/GPU computation model of CUDA-C presents challenges not just for programmers, but also for practitioners of formal methods. Their formal semantics helps expose and clarify these issues. They demonstrate the usefulness of their semantics by generating a tool from it capable of detecting some race conditions and deadlocks in CUDA-C programs. They discuss limitations of their model and argue that its extensibility can easily enable a wider range of verification tasks.