TY - GEN
T1 - Towards providing low-overhead data race detection for large OpenMP applications
AU - Protze, Joachim
AU - Atzeni, Simone
AU - Ahn, Dong H.
AU - Schulz, Martin
AU - Gopalakrishnan, Ganesh
AU - Müller, Matthias S.
AU - Laguna, Ignacio
AU - Rakamarić, Zvonimir
AU - Lee, Greg L.
N1 - Publisher Copyright:
© 2014 IEEE.
PY - 2014/3/26
Y1 - 2014/3/26
N2 - Neither static nor dynamic data race detection methods, by themselves, have proven to be sufficient for large HPC applications, as they often result in high runtime overheads and/or low race-checking accuracy. While combined static and dynamic approaches can fare better, creating such combinations, in practice, requires attention to many details. Specifically, existing state-of-the-art dynamic race detectors are aimed at low-level threading models, and cannot handle high-level models such as OpenMP. Further, they do not provide mechanisms by which static analysis methods can target selected regions of code with sufficient precision. In this paper, we present our solutions to both challenges. Specifically, we identify patterns within OpenMP runtimes that tend to mislead existing dynamic race checkers and provide mechanisms that help establish an explicit happens-before relation to prevent such misleading checks. We also implement a fine-grained blacklist mechanism to allow a runtime analyzer to exclude regions of code at line number granularity. We support race checking by adapting ThreadSanitizer, a mature data-race checker developed at Google that is now an integral part of Clang and GCC; and we have implemented our techniques within the state-of-the-art Intel OpenMP Runtime. Our results demonstrate that these techniques can significantly improve runtime analysis accuracy and overhead in the context of data race checking of OpenMP applications.
AB - Neither static nor dynamic data race detection methods, by themselves, have proven to be sufficient for large HPC applications, as they often result in high runtime overheads and/or low race-checking accuracy. While combined static and dynamic approaches can fare better, creating such combinations, in practice, requires attention to many details. Specifically, existing state-of-the-art dynamic race detectors are aimed at low-level threading models, and cannot handle high-level models such as OpenMP. Further, they do not provide mechanisms by which static analysis methods can target selected regions of code with sufficient precision. In this paper, we present our solutions to both challenges. Specifically, we identify patterns within OpenMP runtimes that tend to mislead existing dynamic race checkers and provide mechanisms that help establish an explicit happens-before relation to prevent such misleading checks. We also implement a fine-grained blacklist mechanism to allow a runtime analyzer to exclude regions of code at line number granularity. We support race checking by adapting ThreadSanitizer, a mature data-race checker developed at Google that is now an integral part of Clang and GCC; and we have implemented our techniques within the state-of-the-art Intel OpenMP Runtime. Our results demonstrate that these techniques can significantly improve runtime analysis accuracy and overhead in the context of data race checking of OpenMP applications.
UR - http://www.scopus.com/inward/record.url?scp=84946689957&partnerID=8YFLogxK
U2 - 10.1109/LLVM-HPC.2014.7
DO - 10.1109/LLVM-HPC.2014.7
M3 - Conference contribution
AN - SCOPUS:84946689957
T3 - Proceedings of LLVM-HPC 2014: 2014 LLVM Compiler Infrastructure in HPC - Held in Conjunction with SC 2014: The International Conference for High Performance Computing, Networking, Storage and Analysis
SP - 40
EP - 47
BT - Proceedings of LLVM-HPC 2014
PB - Institute of Electrical and Electronics Engineers Inc.
T2 - 2014 LLVM Compiler Infrastructure in HPC, LLVM-HPC 2014 - Held in Conjunction with the International Conference for High Performance Computing, Networking, Storage and Analysis, SC 2014
Y2 - 17 November 2014
ER -