Skip to main content

ompVerify: Polyhedral Analysis for the OpenMP Programmer

  • Conference paper
OpenMP in the Petascale Era (IWOMP 2011)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 6665))

Included in the following conference series:

Abstract

We describe a static analysis tool for OpenMP programs integrated into the standard open source Eclipse IDE. It can detect an important class of common data-race errors in OpenMP parallel loop programs by flagging incorrectly specified omp parallel for directives and data races. The analysis is based on the polyhedral model, and covers a class of program fragments called Affine Control Loops (ACLs, or alternatively, Static Control Parts, SCoPs). ompVerify automatically extracts such ACLs from an input C program, and then flags the errors as specific and precise error messages reported to the user. We illustrate the power of our techniques through a number of simple but non-trivial examples with subtle parallelization errors that are difficult to detect, even for expert OpenMP programmers.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Petersen, P., Shah, S.: OpenMP support in the Intel® thread checker. OpenMP Shared Memory Parallel Programming, 1–12 (2003)

    Google Scholar 

  2. Cownie, J., Moore, S., et al.: Portable OpenMP debugging with totalview. In: Proceedings of the Second European Workshop on OpenMP (EWOMP 2000), Citeseer (2000)

    Google Scholar 

  3. Rajopadhye, S.V., Purushothaman, S., Fujimoto, R.M.: On synthesizing systolic arrays from recurrence equations with linear dependencies. In: Nori, K.V. (ed.) FSTTCS 1986. LNCS, vol. 241, pp. 488–503. Springer, Heidelberg (1986); later appeared in Parallel Computing (June 1990)

    Chapter  Google Scholar 

  4. Feautrier, P.: Some efficient solutions to the affine scheduling problem. I. One-dimensional time. International Journal of Parallel Programming 21(5), 313–347 (1992)

    Article  MathSciNet  MATH  Google Scholar 

  5. Feautrier, P.: Some efficient solutions to the affine scheduling problem. Part II. Multidimensional time. International Journal of Parallel Programming 21(6), 389–420 (1992)

    Article  MathSciNet  MATH  Google Scholar 

  6. Feautrier, P.: Dataflow analysis of array and scalar references. International Journal of Parallel Programming 20(1), 23–53 (1991)

    Article  MATH  Google Scholar 

  7. Pugh, W.: The Omega test: a fast and practical integer programming algorithm for dependence analysis. In: Proceedings of the 1991 ACM/IEEE Conference on Supercomputing, p. 13. ACM, New York (1991)

    Google Scholar 

  8. Pugh, W., Wonnacott, D.: Eliminating false data dependences using the Omega test. In: Proceedings of the ACM SIGPLAN 1992 Conference on Programming Language Design and Implementation, ser. PLDI 1992, pp. 140–151. ACM, New York (1992), http://doi.acm.org/10.1145/143095.143129

    Chapter  Google Scholar 

  9. Pugh, W., Wonnacott, D.: Constraint-based array dependence analysis. ACM Trans. Program. Lang. Syst. 20, 635–678 (1998), http://doi.acm.org/10.1145/291889.291900

    Article  Google Scholar 

  10. Quilleré, F., Rajopadhye, S., Wilde, D.: Generation of efficient nested loops from polyhedra. International Journal of Parallel Programming 28(5), 469–498 (2000)

    Article  Google Scholar 

  11. Bastoul, C.: Code generation in the polyhedral model is easier than you think. In: PACT’13: IEEE International Conference on Parallel Architectures and Compilation and Techniques, Juan-les-Pins, pp. 7–16 (September 2004)

    Google Scholar 

  12. Wikipedia, Frameworks supporting the polyhedral model — wikipedia, the free encyclopedia (2011), http://en.wikipedia.org/w/index.php?title=Frameworks supporting the polyhedral model (accessed March 21, 2011)

  13. Asanovic, K., Bodik, R., Catanzaro, B., Gebis, J., Keutzer, K., Patterson, D., Plishker, W., Shalf, J., Williams, S., Yelick, K.: The landscape of parallel computing research: A view from berkeley. EECS, University of California, Berkeley, Tech. Rep. UCB/EECS-2006-183 (December 2006)

    Google Scholar 

  14. Verdoolaege, S.: ISL, http://freshmeat.net/projects/isl

  15. Süß, M., Leopold, C.: Common mistakes in OpenMP and how to avoid them. In: OpenMP Shared Memory Parallel Programming, pp. 312–323 (2008)

    Google Scholar 

  16. Amarasinghe, S.A.: Paralelizing compiler techniques based on linear inequalities. Ph.D. dissertation. Stanford University (1997)

    Google Scholar 

  17. Eclipse parallel tools platform, http://www.eclipse.org/ptp/

  18. CAIRN, IRISA, Generic compiler suite, http://gecos.gforge.inria.fr/

  19. Benabderrahmane, M.W., Pouchet, L.-N., Cohen, A., Bastoul, C.: The polyhedral model is more widely applicable than you think. In: Compiler Construction, pp. 283–303. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  20. Pugh, W., Wonnacott, D.: Nonlinear array dependence analysis. In: Third Workshop on Languages, Compilers, and Run-Time Systems for Scalable Computers, Troy, New York (May 1995)

    Google Scholar 

  21. Wonnacott, D.: Extending scalar optimizations for arrays. In: Midkiff, S.P., Moreira, J.E., Gupta, M., Chatterjee, S., Ferrante, J., Prins, J.F., Pugh, B., Tseng, C.-W. (eds.) LCPC 2000. LNCS, vol. 2017, pp. 97–111. Springer, Heidelberg (2001), http://portal.acm.org/citation.cfm?id=645678.663949

    Chapter  Google Scholar 

  22. Meister, B., Leung, A., Vasilache, N., Wohlford, D., Bastoul, C., Lethin, R.: Productivity via automatic code generation for PGAS platforms with the R-Stream compiler. In: APGAS 2009 Workshop on Asynchrony in the PGAS Programming Model, Yorktown Heights, New York (June 2009)

    Google Scholar 

  23. Pop, S., Cohen, A., Bastoul, C., Girbal, S., Silber, G.-A., Vasilache, N.: Graphite: Polyhedral analyses and optimizations for gcc. In: Proceedings of the 2006 GCC Developers Summit, p. 2006 (2006)

    Google Scholar 

  24. Satoh, S., Kusano, K., Sato, M.: Compiler optimization techniques for OpenMP programs. Scientific Programming 9(203), 131–142 (2001)

    Article  Google Scholar 

  25. Lin, Y.: Static nonconcurrency analysis of openMP programs. In: Mueller, M.S., Chapman, B.M., de Supinski, B.R., Malony, A.D., Voss, M. (eds.) IWOMP 2005 and IWOMP 2006. LNCS, vol. 4315, pp. 36–50. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  26. Huang, L., Sethuraman, G., Chapman, B.: Parallel data flow analysis for openMP programs. In: Chapman, B., Zheng, W., Gao, G.R., Sato, M., Ayguadé, E., Wang, D. (eds.) IWOMP 2007. LNCS, vol. 4935, pp. 138–142. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  27. Basumallik, A., Eigenmann, R.: Incorporation of openMP memory consistency into conventional dataflow analysis. In: Eigenmann, R., de Supinski, B.R. (eds.) IWOMP 2008. LNCS, vol. 5004, pp. 71–82. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  28. Liao, C., Quinlan, D.J., Panas, T., de Supinski, B.R.: A ROSE-based OpenMP 3.0 research compiler supporting multiple runtime libraries. In: Sato, M., Hanawa, T., Müller, M.S., Chapman, B.M., de Supinski, B.R. (eds.) IWOMP 2010. LNCS, vol. 6132, pp. 15–28. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  29. Kolosov, A., Ryzhkov, E., Karpov, A.: 32 OpenMP traps for C++ developers (November 2009), http://www.viva64.com/art-3-2-1023467288.html

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Basupalli, V. et al. (2011). ompVerify: Polyhedral Analysis for the OpenMP Programmer. In: Chapman, B.M., Gropp, W.D., Kumaran, K., Müller, M.S. (eds) OpenMP in the Petascale Era. IWOMP 2011. Lecture Notes in Computer Science, vol 6665. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-21487-5_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-21487-5_4

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-21486-8

  • Online ISBN: 978-3-642-21487-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics