We present OMPRacer, a static tool that uses flow-sensitive, interprocedural analysis to detect data races in OpenMP programs. OMPRacer is fast, scalable, has high code coverage, and supports the most common OpenMP features by combining state-of-the-art pointer analysis, novel value-flow analysis, happens-before tracking, and generalized modelling of OpenMP APIs.
Unlike dynamic tools that currently dominate data race detection, OMPRacer achieves almost 100% code coverage using static analysis to detect a broader category of races without running the program or relying on specific input or runtime behavior. OMPRacer has competitive precision with dynamic tools like Archer and ROMP: passing 105/116 cases in DataRaceBench with a total accuracy of 91%.
OMPRacer has been used to analyze several Exascale Computing Project proxy applications containing over 2 million lines of code in under 10 minutes. OMPRacer has revealed previously unknown races in an ECP proxy app and a production simulation for COVID19.