ADAT: An Adaptable Dynamic Analysis Tool for Race Detection in OpenMP Programs

Shared-memory based parallel programming with OpenMP and Posix-thread APIs is becoming more common to fully take advantage of multiprocessor computing environments. One of the critical risks in the multithreaded programming is data races which are hard to debug and greatly damaging to parallel applications if they are uncaughted. Although ample effort has been made in building specialized data race detection techniques, the state of art tools such as Intel thread checker still have various functionality and performance problems. In this paper, we present an efficient data race detection mechanism named ADAT (Adaptive Dynamic Analysis Tool). ADAT analyzes target program models to categorize the race engines (RDC: Race-Detection Classification) and then selects adequate engines to detect races automatically based upon the RDC (ECPS: Engine Code Property Selector). ADAT constructs an emperically optimal set of race engines in the aspect of labeling, filtering, and detection. In addition to RDC and ECPS, we have implemented an OpenMP parser and a source instrument or in ADAT to support OpenMP programs. The functionality and efficiency of ADAT are compared with those of Intel thread checker by using a set of OpenMP based kernel programs. The experimental results show that ADAT can detect data races with more challenging target program models and can achieve a couple of orders of magnitude faster processing time than Intel thread checker.

[1]  Edith Schonberg,et al.  Detecting access anomalies in programs with critical sections , 1991, PADD '91.

[2]  Yong-Kee Jun,et al.  Scalable on-the-fly detection of the first races in parallel programs , 1998, ICS '98.

[3]  Ken Kennedy,et al.  Analysis of event synchronization in a parallel programming tool , 1990, PPOPP '90.

[4]  John M. Mellor-Crummey,et al.  On-the-fly detection of data races for programs with nested fork-join parallelism , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[5]  L. Dagum,et al.  OpenMP: an industry standard API for shared-memory programming , 1998 .

[6]  Edith Schonberg,et al.  An empirical comparison of monitoring algorithms for access anomaly detection , 2011, PPOPP '90.

[7]  Jong-Deok Choi,et al.  Race Frontier: reproducing data races in parallel-program debugging , 1991, PPOPP '91.

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

[9]  Barton P. Miller,et al.  What are race conditions?: Some issues and formalizations , 1992, LOPL.

[10]  Charles E. McDowell,et al.  A Practical Algorithm for Static Analysis of Parallel Programs , 1989, J. Parallel Distributed Comput..

[11]  Charles E. McDowell,et al.  Scalable Monitoring Technique for Detecting Races in Parallel Programs , 2000, IPDPS Workshops.

[12]  Young-Joo Kim,et al.  An Empirical Analysis of Intel Thread Checker for Detecting Races in OpenMP Programs , 2008, Seventh IEEE/ACIS International Conference on Computer and Information Science (icis 2008).

[13]  So-Hee Park,et al.  A Comparison of Scalable Labeling Schemes for Detecting Races in OpenMP Programs , 2001, WOMPAT.

[14]  Koenraad Audenaert,et al.  Clock Trees: Logical Clocks for Programs with Nested Parallelism , 1997, IEEE Trans. Software Eng..

[15]  Yong-Kee Jun,et al.  Two-pass on-the-fly detection of the first races in shared-memory parallel , 1998, SPDT '98.

[16]  Zhiqiang Ma,et al.  A theory of data race detection , 2006, PADTAD '06.

[17]  Jong-Deok Choi,et al.  Efficient and precise datarace detection for multithreaded object-oriented programs , 2002, PLDI '02.

[18]  Kern Koh,et al.  On-the-fly detection of access anomalies in nested parallel loops , 1993, PADD '93.

[19]  Paul Petersen,et al.  OpenMP Support in the Intel® Thread Checker , 2003, WOMPAT.

[20]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.