ACL2 Meets the GPU: Formalizing a CUDA-based Parallelizable All-Pairs Shortest Path Algorithm in ACL2
David S. Hardin (Rockwell Collins), Samuel S. Hardin (Iowa State, University)

TL;DR
This paper formalizes a GPU-based all-pairs shortest path algorithm in ACL2, demonstrating correctness, efficiency, and the ability to recover shortest paths, bridging GPU programming and formal verification.
Contribution
It introduces a formal ACL2 specification of a CUDA-based APSP algorithm, including path recovery, and demonstrates its correctness and performance compared to C and CUDA implementations.
Findings
ACL2 specification processes millions of vertices efficiently.
ACL2 version runs at one-sixth the speed of C implementation.
Porting ACL2 code back to C and CUDA shows minimal or slight performance changes.
Abstract
As Graphics Processing Units (GPUs) have gained in capability and GPU development environments have matured, developers are increasingly turning to the GPU to off-load the main host CPU of numerically-intensive, parallelizable computations. Modern GPUs feature hundreds of cores, and offer programming niceties such as double-precision floating point, and even limited recursion. This shift from CPU to GPU, however, raises the question: how do we know that these new GPU-based algorithms are correct? In order to explore this new verification frontier, we formalized a parallelizable all-pairs shortest path (APSP) algorithm for weighted graphs, originally coded in NVIDIA's CUDA language, in ACL2. The ACL2 specification is written using a single-threaded object (stobj) and tail recursion, as the stobj/tail recursion combination yields the most straightforward translation from imperative…
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.
