Leveraging Static Analysis to Accelerate Dynamic Race Detection for Remote Memory Access Programs
摘要
MPI Remote Memory Access (RMA) allows processes to modify the memory of other processes directly. Due to its complexity, however, data races may occur when concurrent conflicting remote or local memory accesses are synchronized incorrectly. Dynamic race detectors for MPI RMA detect those races at runtime. They rely on compile-time instrumentation of all remote and all local memory accesses and subsequently analyze them during program execution. Not all the local memory accesses are relevant for RMA race detection, but their instrumentation leads to unnecessary tool overhead. This paper presents three static analysis approaches that detect irrelevant local memory accesses at compile time to avoid their instrumentation. The analyses are implemented as compiler passes working on LLVM IR. An evaluation using six RMA proxy applications shows that, depending on the application, the static analysis filters reduce the race detection overhead by a factor of 1.3 to 10.