TL;DR
GPURepair is an automated tool that repairs data races and barrier divergence errors in GPU kernels, supporting CUDA and OpenCL, and uniquely removes unnecessary barriers and fixes inter-block data races.
Contribution
The paper introduces GPURepair, the first tool capable of fixing intra- and inter-block data races and barrier issues in GPU kernels for both CUDA and OpenCL, with barrier removal features.
Findings
Successfully repaired over 750 kernels in experiments.
Outperformed prior tools in fixing more kernels.
Enabled removal of redundant barriers and inter-block data race fixes.
Abstract
This paper presents a tool for repairing errors in GPU kernels written in CUDA or OpenCL due to data races and barrier divergence. Our novel extension to prior work can also remove barriers that are deemed unnecessary for correctness. We implement these ideas in our tool called GPURepair, which uses GPUVerify as the verification oracle for GPU kernels. We also extend GPUVerify to support CUDA Cooperative Groups, allowing GPURepair to perform inter-block synchronization for CUDA kernels. To the best of our knowledge, GPURepair is the only tool that can propose a fix for intra-block data races and barrier divergence errors for both CUDA and OpenCL kernels and the only tool that fixes inter-block data races for CUDA kernels. We perform extensive experiments on about 750 kernels and provide a comparison with prior work. We demonstrate the superiority of GPURepair through its capability to…
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.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
