skip to main content
research-article
Open Access

LLOV: A Fast Static Data-Race Checker for OpenMP Programs

Published:22 December 2020Publication History
Skip Abstract Section

Abstract

In the era of Exascale computing, writing efficient parallel programs is indispensable, and, at the same time, writing sound parallel programs is very difficult. Specifying parallelism with frameworks such as OpenMP is relatively easy, but data races in these programs are an important source of bugs. In this article, we propose LLOV, a fast, lightweight, language agnostic, and static data race checker for OpenMP programs based on the LLVM compiler framework. We compare LLOV with other state-of-the-art data race checkers on a variety of well-established benchmarks. We show that the precision, accuracy, and the F1 score of LLOV is comparable to other checkers while being orders of magnitude faster. To the best of our knowledge, LLOV is the only tool among the state-of-the-art data race checkers that can verify a C/C++ or FORTRAN program to be data race free.

References

  1. A. Acharya, U. Bondhugula, and A. Cohen. 2018. Polyhedral auto-transformation with no integer linear programming. In Proceedings of the 39th ACM SIGPLAN Conference on PLDI. ACM, New York, NY, 529--542.Google ScholarGoogle Scholar
  2. Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. 2006. Compilers: Principles, Techniques, and Tools (2nd Ed.). Addison-Wesley Longman, Boston, MA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. ARM. 2020. ARM DDT. Retrieved July 21, 2020 from https://www.arm.com/products/development-tools/server-and-hpc/forge/ddt.Google ScholarGoogle Scholar
  4. S. Atzeni, G. Gopalakrishnan, Z. Rakamaric, D. H. Ahn, I. Laguna, M. Schulz, G. L. Lee, J. Protze, and M. S. Müller. 2016. ARCHER: Effectively spotting data races in large OpenMP applications. In Proceedings of the International Parallel and Distributed Processing Symposium (IPDPS’16). IEEE, USA, 53--62.Google ScholarGoogle Scholar
  5. S. Atzeni, G. Gopalakrishnan, Z. Rakamaric, Ignacio Laguna, Gregory L. Lee, and D. H. Ahn. 2018. Sword: A bounded memory-overhead detector of OpenMP data races in production runs. In Proceedings of the International Parallel and Distributed Processing Symposium (IPDPS’18). IEEE, 845--854.Google ScholarGoogle Scholar
  6. P. Barua, J. Shirako, W. Tsang, J. Paudel, W. Chen, and V. Sarkar. 2019. OMPSan: Static verification of OpenMP’s data mapping constructs. In OpenMP: Conquering the Full Hardware Spectrum. Springer, 3--18.Google ScholarGoogle Scholar
  7. Cédric Bastoul. 2004. Code generation in the polyhedral model is easier than you think. In Proceedings of the IEEE International Conference on Parallel Architecture and Compilation Techniques (PACT’13). France, 7--16.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. V. Basupalli, T. Yuki, S. Rajopadhye, A. Morvan, S. Derrien, P. Quinton, and D. Wonnacott. 2011. ompVerify: Polyhedral analysis for the OpenMP programmer. In Proceedings of the International Workshop on OpenMP. Springer, Berlin, 37--53.Google ScholarGoogle Scholar
  9. Marouane Belaoucha, Denis Barthou, Adrien Eliche, et al. 2010. FADAlib: An open source C++ library for fuzzy array dataflow analysis. Proc. Comput. Sci. 1, 1 (2010), 2075--2084.Google ScholarGoogle ScholarCross RefCross Ref
  10. M. W. Benabderrahmane, L. N. Pouchet, A. Cohen, and C. Bastoul. 2010. The polyhedral model is more widely applicable than you think. In Proceedings of the 19th Joint European Conference on Theory and Practice of Software, International Conference on Compiler Construction (CC’10/ETAPS’10). Springer-Verlag, Berlin, 283--303.Google ScholarGoogle Scholar
  11. A. Betts, N. Chong, A. Donaldson, S. Qadeer, and P. Thomson. 2012. GPUVerify: A verifier for GPU kernels. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA’12). ACM, NY, 113--132. DOI:https://doi.org/10.1145/2384616.2384625Google ScholarGoogle Scholar
  12. Jeff Bezanson, Alan Edelman, Stefan Karpinski, and Viral B. Shah. 2017. Julia: A fresh approach to numerical computing. SIAM Rev. 59, 1 (2017), 65--98. DOI:https://doi.org/10.1137/141000671Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. S. Blackshear, N. Gorogiannis, P. W. O’Hearn, and I. Sergey. 2018. RacerD: Compositional static race detection. Proc. ACM Program. Lang. 2, Article 144 (Oct. 2018), 28 pages. DOI:https://doi.org/10.1145/3276514Google ScholarGoogle Scholar
  14. R. D. Blumofe, C. F. Joerg, B. C. Kuszmaul, C. E. Leiserson, K. H. Randall, and Y. Zhou. 1996. Cilk: An efficient multithreaded runtime system. J. Parallel Distrib. Comput. 37, 1 (1996), 55--69.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Uday Bondhugula. 2017. PLUTO—An Automatic Parallelizer and Locality Optimizer for Affine Loop Nests. Retrieved May 15, 2020 from http://pluto-compiler.sourceforge.net/.Google ScholarGoogle Scholar
  16. U. Bondhugula, A. Hartono, J. Ramanujam, and P. Sadayappan. 2008. A practical automatic polyhedral parallelizer and locality optimizer. In Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’08). ACM, New York, NY, 101--113. DOI:https://doi.org/10.1145/1375581.1375595Google ScholarGoogle Scholar
  17. Utpal Bora, Johannes Doerfert, Tobias Grosser, and Ramakrishna Upadrasta. 2016. GSoC 2016: PolyhedralInfo—Polly as an Analysis Pass in LLVM. Retrieved May 8, 2019 from https://llvmdevelopersmeetingbay2016.sched.com/event/8Z2Z/lightning-talks.Google ScholarGoogle Scholar
  18. B. L. Chamberlain, D. Callahan, and H. P. Zima. 2007. Parallel programmability and the chapel language. Int. J. High Perform. Comput. Appl. 21, 3 (August 2007), 291--312. DOI:https://doi.org/10.1177/1094342007078442Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra, K. Ebcioglu, C. von Praun, and V. Sarkar. 2005. X10: An object-oriented approach to non-uniform cluster computing. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA’05). ACM, New York, NY, 519--538.Google ScholarGoogle Scholar
  20. P. Chatarasi, J. Shirako, M. Kong, and V. Sarkar. 2016. An extended polyhedral model for SPMD programs and its use in static data race detection. In Proceedings of the International Workshop on Languages and Compilers for Parallel Computing. Springer, 106--120.Google ScholarGoogle Scholar
  21. P. Chatarasi, J. Shirako, and V. Sarkar. 2016. Static data race detection for SPMD programs via an extended polyhedral representation. In Proceedings of the 6th International Workshop on Polyhedral Compilation Techniques (IMPACT’16).Google ScholarGoogle Scholar
  22. J.-F. Collard, D. Barthou, and P. Feautrier. 1995. Fuzzy array dataflow analysis. In Proceedings of the 5th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPOPP’95). ACM, New York, NY, 92--101.Google ScholarGoogle Scholar
  23. Cray. 2019. Chapel Language Specification (Version 0.9). Retrieved from http://chapel.cray.com/papers.html.Google ScholarGoogle Scholar
  24. Leonardo Dagum and Rameshm Enon. 1998. OpenMP: An industry standard API for shared-memory programming. IEEE Comput. Sci. Eng. 5, 1 (1998), 46--55.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Leonardo de Moura and Nikolaj Bjørner. 2008. Z3: An efficient SMT solver. In Tools and Algorithms for the Construction and Analysis of Systems. Springer, Berlin, 337--340.Google ScholarGoogle Scholar
  26. A. J. Dorta, C. Rodriguez, and F. de Sande. 2004. OpenMP Source Code Repository. Retrieved May 19, 2019 from https://sourceforge.net/projects/ompscr/files/OmpSCR/.Google ScholarGoogle Scholar
  27. A. J. Dorta, C. Rodriguez, and F. de Sande. 2005. The OpenMP source code repository. In Proceedings of the 13th Euromicro Conference on Parallel, Distributed and Network-Based Processing. IEEE, Los Alamitos, CA, 244--250. DOI:https://doi.org/10.1109/EMPDP.2005.41Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. A. J. Dorta, C. Rodriguez, F. de Sande, and U. Bora. 2019. OpenMP Source Code Repository (Updates to Support Latest Compilers and Scripts). Retrieved May 19, 2019 from https://github.com/utpalbora/OmpSCR_v2.0.git.Google ScholarGoogle Scholar
  29. L. Effinger-Dean, B. Lucia, L. Ceze, D. Grossman, and H.-J. Boehm. 2012. IFRit: Interference-free regions for dynamic data-race detection. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA’12). ACM, New York, NY, 467--484.Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. A. E. Eichenberger, J. Mellor-Crummey, M. Schulz, M. Wong, N. Copty, R. Dietrich, X. Liu, E. Loh, and D. Lorenz. 2013. OMPT: An OpenMP tools application programming interface for performance analysis. In OpenMP in the Era of Low Power Devices and Accelerators. Springer, Berlin, 171--185.Google ScholarGoogle Scholar
  31. D. Engler and K. Ashcraft. 2003. RacerX: Effective, static detection of race conditions and deadlocks. In Proceedings of the 19th ACM Symposium on Operating Systems Principles (SOSP’03). ACM, New York, NY, 237--252.Google ScholarGoogle Scholar
  32. Paul Feautrier. 1988. Parametric integer programming. RAIRO-Operat. Res. 22, 3 (1988), 243--268.Google ScholarGoogle ScholarCross RefCross Ref
  33. Paul Feautrier. 1991. Dataflow analysis of array and scalar references. Int. J. Parallel Program. 20, 1 (1991), 23--53. DOI:https://doi.org/10.1007/BF01407931Google ScholarGoogle ScholarCross RefCross Ref
  34. C. Flanagan and S. N. Freund. 2009. FastTrack: Efficient and precise dynamic race detection. In Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’09). 121--133.Google ScholarGoogle Scholar
  35. Project GNU. 2019. GCC, the GNU Compiler Collection. Retrieved from August 8, 2019 from https://gcc.gnu.org/.Google ScholarGoogle Scholar
  36. Tobias Grosser, Armin Größlinger, and Christian Lengauer. 2012. Polly - Performing polyhedral optimizations on a low-level intermediate representation. Parallel Process. Lett. 22, 4, Article 1 (2012), 27 pages. DOI:https://doi.org/10.1142/S0129626412500107Google ScholarGoogle ScholarCross RefCross Ref
  37. Tobias Grosser, Hongbin Zheng, Raghesh Aloor, Andreas Simbürger, Armin Größlinger, and Louis-Noël Pouchet. 2011. Polly-polyhedral optimization in LLVM. In Proceedings of the 1st International Workshop on Polyhedral Compilation Techniques (IMPACT’11), Vol. 2011. IEEE, IEEE Computer Society, Los Alamitos, CA, 1.Google ScholarGoogle Scholar
  38. Khronos OpenCL Working Group. 2019. The OpenCL Specification, v2.2-11 (July 2019). Retrieved August 8, 2019 from https://www.khronos.org/registry/OpenCL/.Google ScholarGoogle Scholar
  39. Y. Gu and J. Mellor-Crummey. 2018. Dynamic data race detection for OpenMP programs. In Proceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis (SC’18). IEEE Press, Los Alamitos, CA, Article 61, 12 pages.Google ScholarGoogle Scholar
  40. Intel. 2019. Intel Inspector. Retrieved May 8, 2019 from https://software.intel.com/en-us/inspector.Google ScholarGoogle Scholar
  41. Intel. 2019. Intel Threading Building Blocks. Retrieved August 8, 2019 from https://software.intel.com/en-us/tbb.Google ScholarGoogle Scholar
  42. B. Kasikci, C. Zamfir, and G. Candea. 2012. CoRD: A collaborative framework for distributed data race detection. In Proceedings of the 8th USENIX Conference on Hot Topics in System Dependability (HotDep’12). USENIX, 4--4.Google ScholarGoogle Scholar
  43. Pankaj Kukreja, Himanshu Shukla, and Utpal Bora. 2019. DataRaceBench FORTRAN. Retrieved October 19, 2019 from https://github.com/IITH-Compilers/drb_fortran.Google ScholarGoogle Scholar
  44. L. Lamport. 1978. Time, clocks, and the ordering of events in a distributed system. Commun. ACM 21, 7 (July 1978), 558--565. DOI:https://doi.org/10.1145/359545.359563Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. N. G. Leveson and C. S. Turner. 1993. An investigation of the Therac-25 accidents. Computer 26, 7 (July 1993), 18--41. DOI:https://doi.org/10.1109/MC.1993.274940Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. G. Li and G. Gopalakrishnan. 2010. Scalable SMT-based verification of GPU kernel functions. In Proceedings of the 18th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE’10). ACM, New York, NY, 187--196.Google ScholarGoogle Scholar
  47. G. Li, P. Li, G. Sawaya, G. Gopalakrishnan, I. Ghosh, and S. P. Rajan. 2012. GKLEE: Concolic verification and test generation for GPUs. In Proceedings of the 17th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP’12). Association for Computing Machinery, New York, NY, 215--224. DOI:https://doi.org/10.1145/2145816.2145844Google ScholarGoogle Scholar
  48. P. Li, X Hu, D. Chen, J. Brock, H. Luo, E. Z. Zhang, and C. Ding. 2017. LD: Low-overhead GPU race detection without access monitoring. ACM Trans. Archit. Code Optim. 14, 1, Article 9 (March 2017), 25 pages.Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. P. Li, G. Li, and G. Gopalakrishnan. 2012. Parametric flows: Automated behavior equivalencing for symbolic analysis of races in CUDA programs. In Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis (SC’12). 1--10.Google ScholarGoogle Scholar
  50. P. Li, G. Li, and G. Gopalakrishnan. 2014. Practical symbolic race checking of GPU programs. In Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC’14). 179--190.Google ScholarGoogle Scholar
  51. C. Liao, Pei-Hung Lin, J. Asplund, M. Schordan, and I. Karlin. 2017. DataRaceBench: A benchmark suite for systematic evaluation of data race detection tools. In Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC’17). ACM, New York, NY, Article 11, 14 pages.Google ScholarGoogle Scholar
  52. Chunhua Liao, Pei-Hung Lin, Joshua Asplund, Markus Schordan, and Ian Karlin. 2018. DataRaceBench v1.2.0. Retrieved May 19, 2019 from https://github.com/LLNL/dataracebench.Google ScholarGoogle Scholar
  53. C. Liao, P.-H. Lin, M. Schordan, and I. Karlin. 2018. A semantics-driven approach to improving DataRaceBench’s OpenMP standard coverage. In Evolving OpenMP for Evolving Architectures. Springer, 189--202.Google ScholarGoogle Scholar
  54. P. Lin, C. Liao, M. Schordan, and I. Karlin. 2019. Exploring regression of data race detection tools using DataRaceBench. In Proceedings of the IEEE/ACM 3rd International Workshop on Software Correctness for HPC Applications (Correctness’19). 11--18.Google ScholarGoogle Scholar
  55. Jacques-Louis Lions et al. 1996. Flight 501 failure. (1996).Google ScholarGoogle Scholar
  56. LLVM. 2019. LLVM Language Reference Manual. Retrieved August 8, 2019 from https://llvm.org/docs/LangRef.html.Google ScholarGoogle Scholar
  57. LLVM. 2019. Loop Access Info, Class Reference. Retrieved May 8, 2019 from https://llvm.org/doxygen/classllvm_1_1LoopAccessInfo.html.Google ScholarGoogle Scholar
  58. LLVM. 2019. The LLVM Compiler Infrastructure. Retrieved May 8, 2019 from http://llvm.org/.Google ScholarGoogle Scholar
  59. LLVM. 2020. LLVM Alias Analysis Infrastructure. Retrieved May 6, 2020 from https://llvm.org/docs/AliasAnalysis.html.Google ScholarGoogle Scholar
  60. LLVM/Clang. 2019. Clang: A C language family frontend for LLVM. Retrieved August 8, 2019 from https://clang.llvm.org.Google ScholarGoogle Scholar
  61. LLVM/Flang. 2019. Flang: A Fortran Compiler Targeting LLVM. Retrieved May 8, 2019 from https://github.com/flang-compiler/flang/wiki.Google ScholarGoogle Scholar
  62. LLVM/Polly. 2019. Polly: LLVM Framework for High-Level Loop and Data-Locality Optimizations. Retrieved May 8, 2019 from https://polly.llvm.org/.Google ScholarGoogle Scholar
  63. J. Mellor-Crummey. 1991. On-the-fly detection of data races for programs with nested fork-join parallelism. In Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (SC’91). ACM, New York, NY, 24--33. DOI:https://doi.org/10.1145/125826.125861Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. MPI. 2019. MPI-3.1 (May 2019). Retrieved August 8, 2019 from https://www.mpi-forum.org/docs/.Google ScholarGoogle Scholar
  65. S. Narayanasamy, Z. Wang, J. Tigani, A. Edwards, and B. Calder. 2007. Automatically classifying benign and harmful data races using replay analysis. In Proceedings of the 28th ACM SIGPLAN Conference on PLDI. ACM, New York, NY, 22--31. DOI:https://doi.org/10.1145/1250734.1250738Google ScholarGoogle Scholar
  66. N. Nethercote and J. Seward. 2003. Valgrind: A program supervision framework. Retrieved from http://valgrind.org/.Google ScholarGoogle ScholarCross RefCross Ref
  67. NVIDIA. 2020. CUDA-MEMCHECK. Retrieved July 21, 2020 from https://docs.nvidia.com/cuda/cuda-memcheck/index.html.Google ScholarGoogle Scholar
  68. OpenACC. 2019. The OpenACC Application Programming Interface, v2.7 (November 2018). Retrieved August 8, 2019 from https://www.openacc.org/specification.Google ScholarGoogle Scholar
  69. OpenMP Architecture Review Board. 1997. OpenMP Application Programming Interface. Retrieved October 19, 2019 from https://www.openmp.org.Google ScholarGoogle Scholar
  70. OpenMP Architecture Review Board. 2015. OpenMP Application Programming Interface Version 4.5. Retrieved May 19, 2019 from https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf.Google ScholarGoogle Scholar
  71. Y. Peng, V. Grover, and J. Devietti. 2018. CURD: A dynamic CUDA race detector. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’18). ACM, New York, NY, 390--403.Google ScholarGoogle Scholar
  72. PGI. 2018. PGI Accelerator Compilers with OpenACC Directives. Retrieved August 8, 2019 from https://www.pgroup.com/resources/accel.htm.Google ScholarGoogle Scholar
  73. Chuck Pheatt. 2008. Intel Threading building blocks. J. Comput. Sci. Coll. 23, 4 (April 2008), 298.Google ScholarGoogle Scholar
  74. Nathaniel Popper. 2012. Knight capital says trading glitch cost it $440 million. New York Times 2 (2012).Google ScholarGoogle Scholar
  75. Working Group for POSIX. 2018. IEEE Standard for Information Technology--Portable Operating System Interface (POSIX(R)) Base Specifications, Issue 7. IEEE Std 1003.1-2017 (Rev. of IEEE Std 1003.1-2008) (January 2018), 1--3951. DOI:https://doi.org/10.1109/IEEESTD.2018.8277153Google ScholarGoogle Scholar
  76. Louis-Noël Pouchet. 2012. PolyOpt/C: A Polyhedral Optimizer for the ROSE Compiler. Retrieved May 15, 2020 from http://web.cs.ucla.edu/ pouchet/software/polyopt/.Google ScholarGoogle Scholar
  77. Louis-Noël Pouchet. 2013. PoCC, the POlyhedral Compiler Collection Package: A Full Source-to-Source Polyhedral Compiler. Retrieved May 15, 2020 from https://sourceforge.net/projects/pocc/.Google ScholarGoogle Scholar
  78. Polyvios Pratikakis, Jeffrey S. Foster, and Michael Hicks. 2011. LOCKSMITH: Practical static race detection for C. ACM Trans. Program. Lang. Syst. 33, 1 (2011), 3.Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Dan Quinlan and Chunhua Liao. 2011. The ROSE source-to-source compiler infrastructure. In Proceedings of the Cetus Users and Compiler Infrastructure Workshop, in Conjunction with PACT, Vol. 2011. Citeseer.Google ScholarGoogle Scholar
  80. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. 1997. Eraser: A dynamic data race detector for multithreaded programs. ACM Trans. Comput. Syst. 15, 4 (1997), 391--411.Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Markus Schordan and Dan Quinlan. 2003. A source-to-source architecture for user-defined optimizations. In Modular Programming Languages. Springer, Berlin, 214--223.Google ScholarGoogle Scholar
  82. K. Serebryany and T. Iskhodzhanov. 2009. ThreadSanitizer: Data race detection in practice. In Proceedings of the Workshop on Binary Instrumentation and Applications (WBIA’09). ACM, New York, NY, 62--71. DOI:https://doi.org/10.1145/1791194.1791203Google ScholarGoogle Scholar
  83. K. Serebryany, A. Potapenko, T. Iskhodzhanov, and D. Vyukov. 2012. Dynamic race detection with LLVM compiler. In Proceedings of the 2nd International Conference on Runtime Verification (RV’11). Springer-Verlag, 110--114.Google ScholarGoogle Scholar
  84. Bradley Swain, Yanze Li, Peiming Liu, Ignacio Laguna, Giorgis Georgakoudis, and Jeff Huang. 2020. OMPRacer: A scalable and precise static race detector for OpenMP programs. In Proceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis (SC'20).Google ScholarGoogle ScholarCross RefCross Ref
  85. TOP500.Org. 2019. Top 500 Supercomputer Sites. Retrieved May 8, 2019 from http://www.top500.org/.Google ScholarGoogle Scholar
  86. R. Upadrasta and A. Cohen. 2013. Sub-polyhedral scheduling using (unit-)two-variable-per-inequality polyhedra. In Proceedings of the 40th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages.Google ScholarGoogle Scholar
  87. Valgrind-project. 2007. DRD: A Thread Error Detector. Retrieved May 8, 2019 from http://valgrind.org/docs/manual/drd-manual.html.Google ScholarGoogle Scholar
  88. Valgrind-project. 2007. Helgrind: A Thread Error Detector. Retrieved May 8, 2019 from http://valgrind.org/docs/manual/hg-manual.html.Google ScholarGoogle Scholar
  89. Sven Verdoolaege. 2010. Isl: An integer set library for the polyhedral model. In Proceedings of the 3rd International Congress Conference on Mathematical Software (ICMS’10). Springer-Verlag, Berlin, Article 1250010, 4 pages.Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. J. W. Voung, R. Jhala, and S. Lerner. 2007. RELAY: Static race detection on millions of lines of code. In Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. ACM, New York, NY, 205--214.Google ScholarGoogle Scholar
  91. F. Ye, M. Schordan, C. Liao, P. Lin, I. Karlin, and V. Sarkar. 2018. Using polyhedral analysis to verify openmp applications are data race free. In Proceedings of the 2018 IEEE/ACM 2nd International Workshop on Software Correctness for HPC Applications (Correctness’18). IEEE, Los Alamitos, CA, 42--50. DOI:https://doi.org/10.1109/Correctness.2018.00010Google ScholarGoogle ScholarCross RefCross Ref
  92. Yuan Yu, Tom Rodeheffer, and Wei Chen. 2005. RaceTrack: Efficient detection of data race conditions via adaptive tracking. SIGOPS Oper. Syst. Rev. 39, 5 (October 2005), 221--234. DOI:https://doi.org/10.1145/1095809.1095832Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. T. Yuki, G. Gupta, D. Kim, T. Pathan, and S. Rajopadhye. 2012. Alphaz: A system for design space exploration in polyhedral model. In Proceedings of the International Workshop on LCPC. Springer, 17--31.Google ScholarGoogle Scholar
  94. M. Zheng, V. T. Ravi, F. Qin, and G. Agrawal. 2011. GRace: A low-overhead mechanism for detecting data races in GPU programs. In Proceedings of the 16th ACM Symposium on Principles and Practice of Parallel Programming. ACM, New York, NY, 135--146. DOI:https://doi.org/10.1145/1941553.1941574Google ScholarGoogle Scholar
  95. M. Zheng, V. T. Ravi, F. Qin, and G. Agrawal. 2014. GMRace: Detecting data races in GPU programs via a low-overhead scheme. IEEE Trans. Parallel Distrib. Syst. 25, 1 (2014), 104--115.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. LLOV: A Fast Static Data-Race Checker for OpenMP Programs

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM Transactions on Architecture and Code Optimization
              ACM Transactions on Architecture and Code Optimization  Volume 17, Issue 4
              December 2020
              430 pages
              ISSN:1544-3566
              EISSN:1544-3973
              DOI:10.1145/3427420
              Issue’s Table of Contents

              Copyright © 2020 ACM

              Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 22 December 2020
              • Accepted: 1 August 2020
              • Revised: 1 July 2020
              • Received: 1 December 2019
              Published in taco Volume 17, Issue 4

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • research-article
              • Research
              • Refereed

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader

            HTML Format

            View this article in HTML Format .

            View HTML Format