OpenRace: An Open Source Framework for Statically Detecting Data Races.

Published in International Workshop on Software Correctness for HPC Applications (SC Correctness 2021), 2021

Recommended citation: Bradley Swain, Bozhen Liu, Peiming Liu, Yanze Li, Addison Crump, Rohan Khera, Jeff Huang. (2021). "OpenRace: An Open Source Framework for Statically Detecting Data Races." SC Correctness 2021. https://github.com/april1989/april1989.github.io/blob/master/files/openrace.pdf

Abstract

Data races are a particularly nefarious type of bugs that can affect the correctness of parallel software. Data races are inherently non-deterministic, making them extremely challenging to detect and fix. High performance computing (HPC) applications are particularly vulnerable to data races as they are generally large complex applications involving massive levels of parallelism. Detecting data races in large scale, complex, and highly parallel applications can be nearly impossible without the help of domain specific race detection tools. We present the OpenRace framework, the only open source project aimed at providing the foundation needed to build a fast and precise static race detection tool for LLVM based languages. OpenRace is designed to be extensible and allow new parallel programming frameworks to be easily modelled without the need to write an entirely custom race detection engine, while also providing the flexibility to model complex domain specific features. We show the core components of the framework, and demonstrate how those components have been used to create a race detection tool for OpenMP. OpenMP is the standard choice for shared memory parallelism in the majority of HPC applications, and involves a number of complex features that can be challenging to model statically.

The OpenRace tool has thus far passed 149 of the 172 C/C++ cases in DataRaceBench version 1.3.2, outperforming all dynamic tools and ranking second place overall among the tools with results published by the DataRaceBench authors.

pdf slides bibtex