Detecting Thread-Safety Violations in Hybrid OpenMP/MPI Programs

We propose an approach by integrating static and dynamic program analyses to detect thread-safety violations in hybrid MPI/OpenMP programs. We innovatively transform the thread-safety violation problems to race conditions problems. In our approach, the static analysis identifies a list of MPI calls related to thread-safety violations, then replaces them with our own MPI wrappers, which involve accesses to some specific shared variables. The static analysis avoids instrumenting unrelated code, which significantly reduces runtime overhead. In the dynamic analysis, both happen-before and lockset-based race detection algorithms are used to detect races on these aforementioned shared variables. By detecting races, we can identify thread-safety violations according to their specifications. Our experimental evaluation over real-world applications shows that our approach is both accurate and efficient.

[1]  Message P Forum,et al.  MPI: A Message-Passing Interface Standard , 1994 .

[2]  Stephen F. Siegel Verifying Parallel Programs with MPI-Spin , 2007, PVM/MPI.

[3]  Bronis R. de Supinski,et al.  The OpenMP Memory Model , 2005, IWOMP.

[4]  Martin Schulz,et al.  MPI runtime error detection with MUST: Advances in deadlock detection , 2012, 2012 International Conference for High Performance Computing, Networking, Storage and Analysis.

[5]  Samuel P. Midkiff,et al.  A two-phase escape analysis for parallel Java programs , 2006, 2006 International Conference on Parallel Architectures and Compilation Techniques (PACT).

[6]  Yong-Kee Jun,et al.  A Practical Tool for Detecting Races in OpenMP Programs , 2005, PaCT.

[7]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multi-threaded programs , 1997, TOCS.

[8]  Jong-Deok Choi,et al.  Hybrid dynamic data race detection , 2003, PPoPP '03.

[9]  Denis Barthou,et al.  PARCOACH: Combining static and dynamic validation of MPI collective communications , 2014, Int. J. High Perform. Comput. Appl..

[10]  Sarita V. Adve,et al.  Shared Memory Consistency Models: A Tutorial , 1996, Computer.

[11]  Gogul Balakrishnan,et al.  Feedback-directed unit test generation for C/C++ using concolic execution , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[12]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multithreaded programs , 1997, TOCS.

[13]  Matthias S. Müller,et al.  Detection of Violations to the MPI Standard in Hybrid OpenMP/MPI Applications , 2008, IWOMP.

[14]  Martin Schulz,et al.  Formal analysis of MPI-based parallel programs , 2011, Commun. ACM.

[15]  Zijiang Yang,et al.  SAM: Self-adaptive Dynamic Analysis for Multithreaded Programs , 2011, Haifa Verification Conference.

[16]  Harish Patil,et al.  Pin: building customized program analysis tools with dynamic instrumentation , 2005, PLDI '05.

[17]  Zijiang Yang,et al.  Symbolic Analysis of Concurrency Errors in OpenMP Programs , 2013, 2013 42nd International Conference on Parallel Processing.

[18]  Robert H. B. Netzer,et al.  Debugging race conditions in message-passing programs , 1996, SPDT '96.

[19]  Jack Dongarra,et al.  Recent Advances in Parallel Virtual Machine and Message Passing Interface, 14th European PVM/MPI User's Group Meeting, Paris, France, September 30 - October 3, 2007, Proceedings , 2007, PVM/MPI.

[20]  Bronis R. de Supinski,et al.  Dynamic Software Testing of MPI Applications with Umpire , 2000, ACM/IEEE SC 2000 Conference (SC'00).

[21]  Josep Torrellas,et al.  Accurate and efficient filtering for the Intel thread checker race detector , 2006, ASID '06.

[22]  Ok-Kyoon Ha,et al.  A Tool for Detecting First Races in OpenMP Programs , 2009, PaCT.