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 behaviour. OMPRAcER has competitive precision with dynamic tools like Archer and ROMP: passing 105/116 cases in DataRacellench 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.
OMPRacer: A Scalable and Precise Static Race Detector for OpenMP Programs