Efficient Race Verification for Debugging Programs with OpenMP Directives
Races must be detected for debugging parallel programs with OpenMP directives because they may cause unintended nondeterministic results of programs. The previous tool that detects races does not verify the existence of races in programs with no internal nondeterminism because the tool regards nested sibling threads as ordered threads and has the possibility of ignoring accesses involved in races in program models with synchronization such as critical section. This paper suggests an efficient tool that verifies the existence of races with optimal performance by applying race detection engines for labeling and detection protocol. The labeling scheme generates a unique identifier for each parallel thread created during a program execution, and the protocol scheme detects at least one race if any. This tool verifies the existence of races over 250 times faster in average than the previous tool even in the case that the maximum parallelism increases with the fixed number of total accesses using a set of synthetic programs without synchronization such as critical section.
KeywordsOpenMP directive races verification labeling scheme protocol scheme
Unable to display preview. Download preview PDF.
- 5.Intel Co.: Intel C++ Compiler 8.1 for Windows: Getting Started Guide (2004)Google Scholar
- 6.Intel Corp.: Getting Started with the Intel Thread Checker, 2200 Mission College Blvd., Santa Clara, CA 95052-8119, USA (2004)Google Scholar
- 7.Intel Corp.: Intel Thread Checker for Windows 3.0 Release Notes, 2200 Mission College Blvd., Santa Clara, CA 95052-8119, USA (2005)Google Scholar
- 10.Mellor-Crummey, J.M.: On-the-fly Detection of Data Races for Programs with Nested Fork-Join Parallelism. Supercomputing, pp. 24–33, ACM/IEEE (November 1991)Google Scholar
- 12.OpenMP Architecture Review Board: OpenMP Fortran Application Program Interface, Ver. 2.0 (November 2000)Google Scholar