VORD: A Versatile On-the-fly Race Detection Tool in OpenMP Programs

Abstract

Shared-memory based parallel programming with OpenMP and Posix-thread APIs becomes more common to fully take advantage of multiprocessor computing environments. One of the critical risks in multithreaded programming is data races that are hard to debug and greatly damaging to parallel applications if they are uncaught. Although ample effort has been made in building specialized data race detection techniques, the state of art tools such as the Intel Thread Checker still have various functionality and performance problems. In this paper, we present a Versatile On-the-fly Race Detection (VORD) tool that provides an agile, efficient, and scalable race detection environment for various parallel programming models. VORD can automatically construct an empirically optimal set of race engines by utilizing classification and adaptation mechanisms. A Race-Detection Classification (RDC) table is created to categorize adequate engines in the aspect of labeling, detecting, and filtering. An Engine Code Property Selector (ECPS) uses the RDC table to adapt optimal engines for the given target programming models. In addition to RDC and ECPS, we have also implemented an OpenMP parser and a source instrumentor. The functionality and efficiency of VORD were compared with those of the Intel Thread Checker by using a set of OpenMP based kernel programs. The experimental results show that VORD can detect data races in more challenging programming models such as nested thread and synchronization models, and can achieve a couple of orders of a magnitude faster processing time than the Intel Thread Checker in the large parallel programs.

This is a preview of subscription content, access via your institution.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20
Fig. 21
Fig. 22

References

  1. 1.

    Audenaert, K.: Clock trees: logical clocks for programms with nested parallelism. IEEE Trans. Softw. Eng. 23(10), 646–658 (1997)

    Article  Google Scholar 

  2. 2.

    Banerjee, U., Bliss, B., Ma, Z., Petersen, P.: A theory of data race detection. In: Proceedings of Workshop on Parallel and Distributed Systems: Testing and Debugging (PADTAD), pp. 69–78. ACM, Portland, USA, July 2006

  3. 3.

    Callahan, D., Kennedy, K., Subholk, J.: Analysis of event synchronization in a parallel programming tool. In: 2nd Symposium on Principles and Practice of Parallel Programming, pp. 21–30. ACM, March 1990

  4. 4.

    Choi, J.D., Min, S.L.: Race Fronitor: reproducing data races in parallel program debugging. In: 3rd Symposium on Priciple and Practice of Prallel Programming, pp. 145–154. ACM, April 1991

  5. 5.

    Choi, J., Lee, K., Loginov, A., O’Callahan, R., et al.: Efficient and precise datarace detection for multithreaded object-oriented program. In: Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), Berlin, Germany, ACM, June 2002

  6. 6.

    Dagum, L., Menon, R.: OpenMP: an industry-standard API for shared memory programming. IEEE Comput. Sci. Eng. 5(1), 46–55 (1998)

    Article  Google Scholar 

  7. 7.

    Dinning, A., Schonberg, E.: An empirical comparison of monitoring algorithms for access anomaly detection. In: 2nd Symposium on Principles and Practice of Parallel Programming, pp. 1–10. ACM, March 1990

  8. 8.

    Dinning, A., Schonberg, E.: Detecting access anomalies in programs with critical sections. In: 2nd Workshop on Parallel and Distributed Debugging, pp. 85–96. ACM, May 1991

  9. 9.

    Ha, K., Jun, Y., Yoo, K.: Efficient on-the-fly detection of first races in nested parallel programs. In: Proceedings of Workshop on State-of-the-Art in Scientific Computing (PARA), pp. 75–84, Copenhagen, Denmark, June 2004

  10. 10.

    Harkness, J.: Extending the EPCC OpenMP microbenchmarks for OpenMP 3.0. MSc in High Performance Computing, The University of Edinburgh (2010)

  11. 11.

    Intel Corp.: Getting started with the Intel C++ Compiler 11.0 for Windows. 2200 Mission College Blvd., Santa Clara, CA 95052–8119, USA (2009)

  12. 12.

    Intel Corp.: Intel Thread Checker 3.1 for Windows Release Notes, 2200 Mission College Blvd., Santa Clara, CA 95052–8119, USA (2007)

  13. 13.

    Jin, H., Frumkin, M., Yan, J.: The OpenMP implementation of NAS parallel benchmarks and its performance. NAS Technical, Report NAS-99-011 October 1999

  14. 14.

    Jun, Y., Koh, K.: On-the-fly detection of access anomalies in nested parallel loops. In: 3rd ACM/ONR Workshop on Parallel and Distributed Debugging, pp. 107–117. ACM, May 1993

  15. 15.

    Jun, Y., McDowell, C.E.: Scalable monitoring technique for detecting races in parallel programs. In: Proceedings of the 5th IEEE International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS), IEEE. Lecture Notes in Computer Science, vol. 1800, pp. 340–347. Springer, Cancun, Mexico, May 2000

  16. 16.

    Kulkarni, M., Burtscher, M., Inkulu, R., Pingali, K., Cascaval, C.: How much parallelism is there in irregular application? ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), pp. vol. 44, no. 4, pp. 3–14. ACM, USA, Feb 2009

  17. 17.

    Kim, J., Jun, Y.: Scalable on-the-fly detection of the first races in parallel programs. In: Proceedings of the 12nd International Conference on Supercomputing (ICS), pp. 345–352. ACM, Melbourne, Australia, July 1998

  18. 18.

    Kim, Y, D. Kim, Jun, Y.: An empirical analysis of Intel Thread Checker for detecting races in OpenMP programs. In: International Conference on Computer and Information Science (ICIS), pp. 409–414. IEEE, Portland, USA, May 2008

  19. 19.

    Lamport, L.: Time, clocks, and the ordering of events in a distributed system. Communications of the ACM 21(7), 558–565 (1978)

    Article  MATH  Google Scholar 

  20. 20.

    McDowell, C.E.: A practical algorithm for static analysis of parallel programs. Jounal of Parallel and Distributed Computing 6(3), 515–536 (1989)

    Article  Google Scholar 

  21. 21.

    Mellor-Crummey, J.M.: On-the-fly detection of data races for programs with nested fork-join parallelism. Supercomputing, pp. 24–33. ACM/IEEE, Nov 1991

  22. 22.

    Netzer, R.H.B., Miller, B.P.: What are race conditions? Some issues and formalizations. ACM Letters on Programming Languages and Systems 1(1), 74–88 (1992)

    Article  Google Scholar 

  23. 23.

    Nudler, I., Rudolph, L.: Tools for the efficient development of efficient parallel programs. In: 1st Israeli Conference on Computer System Engineering (1986)

  24. 24.

    O’Callahan, R., Choi, J.: Hybrid dynamic data race detection. In: Proceedings of ACM SIGPLAN Symp. on Priciple and Practice of Parallel Programming (PPoPP). ACM, San Diego, California, June 2003

  25. 25.

    OpenMP Architecture Review Board, OpenMP Application Programs Interface, Version 3.0, May 2007

  26. 26.

    Park, H., Jun, Y.: Two-pass on-the-fly detection of the first races in shared-memory parallel programs. In: Proceedings of the 2nd Symposium on Parallel and Distributed Tools (SPDT). ACM, Welches, Oregon, August 1998

  27. 27.

    Park, S., Park, M., Jun, Y.: A comparision of scalable labeling schemes for detecting races in OpenMP programs. In: International Workshop on OpenMP Applications and Tools (Wompat), pp. 66–80, West lafayette, Indiana, July 2001

  28. 28.

    Petersen, P., Shah, S.: OpenMP support in the Intel Thread Checker. In: Proceedings of the International Workshop on OpenMP Application and Tools (WOMPAT), Berlin Heidelberg. Lecture Notes in Computer Science, vol. 2716, pp. 1–12. Springer (2003)

  29. 29.

    Ramanujam, J., Mathew, A.: Analysis of event synchronization in parallel programs. In: Pingali, K. et al. (eds.) Languages and Compilers for Parallel Computing. Lecture Notes in Computer Science, vol. 892, pp. 300–315. Springer (1995)

  30. 30.

    Ratanaworabhan, P., Burtscher, M., Kirovski, D., Nagpal, R., Pattabiraman, K., Zorn, B.: Detecting and tolerating asymmetric races. In: ACM Proceedings of ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), vol. 44, no. 4, pp. 173–184 (2009)

Download references

Author information

Affiliations

Authors

Corresponding author

Correspondence to Young-Joo Kim.

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Kim, YJ., Song, S. & Jun, YK. VORD: A Versatile On-the-fly Race Detection Tool in OpenMP Programs. Int J Parallel Prog 42, 900–930 (2014). https://doi.org/10.1007/s10766-013-0257-6

Download citation

Keywords

  • Parallel programs
  • OpenMP
  • On-the-fly race detection
  • Intel thread checker
  • RDC
  • ECPS