Modular GPU Programming with Typed Perspectives
Manya Bansal, Daniel Sainati, Joseph W. Cutler, Saman Amarasinghe, Jonathan Ragan-Kelley

TL;DR
Prism is a new GPU programming language that uses typed perspectives to enable modular, safe, and high-performance code for collective operations on modern GPUs.
Contribution
It introduces typed perspectives in Prism, a GPU language that balances modularity and low-level control, supported by a formal calculus and compiler implementation.
Findings
Prism enables safe modular GPU programming with competitive performance.
Typed perspectives improve correctness and safety in collective GPU operations.
Theoretical foundations support practical implementation of Prism.
Abstract
To achieve peak performance on modern GPUs, one must balance two frames of mind: issuing instructions to individual threads to control their behavior, while simultaneously tracking the convergence of many threads acting in concert to perform collective operations like Tensor Core instructions. The tension between these two mindsets makes modular programming error prone. Functions that encapsulate collective operations, despite being called per-thread, must be executed cooperatively by groups of threads. In this work, we introduce Prism, a new GPU language that restores modularity while still giving programmers the low-level control over collective operations necessary for high performance. Our core idea is typed perspectives, which materialize, at the type level, the granularity at which the programmer is controlling the behavior of threads. We describe the design of Prism, implement…
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.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Modular Robots and Swarm Intelligence · Distributed systems and fault tolerance
