3 research outputs found
GPURepair: Automated Repair of GPU Kernels
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 fix more kernels and its
unique ability to remove redundant barriers and handle inter-block data races.Comment: 19 pages, 1 algorithm, 3 figures, 22nd International Conference on
Verification Model Checking and Abstract Interpretation (VMCAI 2021
Computing Betweenness Centrality in Link Streams
Betweeness centrality is one of the most important concepts in graph
analysis. It was recently extended to link streams, a graph generalization
where links arrive over time. However, its computation raises non-trivial
issues, due in particular to the fact that time is considered as continuous. We
provide here the first algorithms to compute this generalized betweenness
centrality, as well as several companion algorithms that have their own
interest. They work in polynomial time and space, we illustrate them on typical
examples, and we provide an implementation