Table of Contents
Fetching ...

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.

LLOR: Automated Repair of OpenMP Programs

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.

Paper Structure

This paper contains 24 sections, 9 figures, 4 tables, 1 algorithm.

Figures (9)

  • Figure 1: Architecture of LLOR showcasing the various components involved in the repair process. The solid lines represent the source code, and the dashed lines represent the information flow between the components.
  • Figure 2: mhs vs. MaxSATRuntime in milliseconds
  • Figure 3: Lines of Code
  • Figure 4: LLVM IR Instructions
  • Figure 5: Barrier Variables
  • ...and 4 more figures