LLOR: Automated Repair of OpenMP Programs
Utpal Bora, Saurabh Joshi, Gautam Muduganti, Ramakrishna Upadrasta
TL;DR
LLOR addresses the problem of data race repair in OpenMP programs by instrumenting candidate synchronization points and iteratively repairing via a verifier-solver loop. It adds barriers or ordered regions as needed and can also remove unnecessary synchronization, outputting a repaired LLVM IR and a change summary. The approach uses two solver strategies (minimal-hitting-set and MaxSAT) and demonstrates repair capability on 415 C/C++ and Fortran benchmarks, achieving a substantial repair rate while highlighting dependency on the underlying verifier. This work provides a practical, language-agnostic pathway for automatic data-race repair in OpenMP, with potential for extending to other verifiers and OpenMP constructs in the future.
Abstract
In this paper, we present a technique for repairing data race errors in parallel programs written in C/C++ and Fortran using the OpenMP API. Our technique can also remove barriers that are deemed unnecessary for correctness. We implement these ideas in our tool called LLOR, which takes a language-independent approach to provide appropriate placements of synchronization constructs to avoid data races. To the best of our knowledge, LLOR is the only tool that can repair parallel programs that use the OpenMP API. We showcase the capabilities of LLOR by performing extensive experiments on 415 parallel programs.
