Dynamatic: An OpenMP Race Detection Tool Combining Static and Dynamic Analysis
View/
Open
Metadata
Show full item recordAbstract
Data races are a type of bug in concurrent programming which can result in unexpected program behavior. When multiple threads modify the same memory location in parallel, a data race occurs. Detecting these races is a difficult problem that becomes unrealistic for a programmer to perform at a large scale. Thus, automated data race detection has a large importance on fixing and verifying the correctness of parallel program behavior. There are two main types of data race detection: static and dynamic. Each analysis has its own set of limitations, and tools utilizing one type of analysis suffer from these drawbacks. We present Dynamatic, a hybrid race analysis tool which builds off of HPCRace for static analysis and Google’s Thread Sanitizer for dynamic analysis. Dynamatic performs analysis on C++ and Fortran code that is compiled down to LLVM’s IR. In particular, Dynamatic analyzes programs utilizing the OpenMP API for parallelization. The tool is able to leverage the best elements of both types of analysis - the level of coverage that static tools provide, and the low false positive rates of dynamic tools. Thus, the tool is able to mitigate these drawbacks 2
through its hybrid approach and analysis optimizations. Dynamatic efficiently and accurately
detects data races in OpenMP programs and is competitive with tools such as Archer and ROMP
on benchmarks.
Citation
Davis, Matthew James; Theriot, Dylan (2022). Dynamatic: An OpenMP Race Detection Tool Combining Static and Dynamic Analysis. Undergraduate Research Scholars Program. Available electronically from https : / /hdl .handle .net /1969 .1 /194411.