ompVerify: Polyhedral Analysis for the OpenMP Programmer

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.

[1]  Ray Elliott Proceedings of the 1991 ACM/IEEE conference on Supercomputing , 1991 .

[2]  FeautrierPaul Some efficient solutions to the affine scheduling problem , 1992 .

[3]  Cédric Bastoul,et al.  Code generation in the polyhedral model is easier than you think , 2004, Proceedings. 13th International Conference on Parallel Architecture and Compilation Techniques, 2004. PACT 2004..

[4]  William Pugh,et al.  Eliminating false data dependences using the Omega test , 1992, PLDI '92.

[5]  Rudolf Eigenmann,et al.  Incorporation of OpenMP Memory Consistency into Conventional Dataflow Analysis , 2008, IWOMP.

[6]  Barbara M. Chapman,et al.  Parallel Data Flow Analysis for OpenMP Programs , 2007, IWOMP.

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

[8]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[9]  Nathan DeBardeleben,et al.  Eclipse Parallel Tools Platform , 2005 .

[10]  Bronis R. de Supinski,et al.  OpenMP in a New Era of Parallelism, 4th International Workshop, IWOMP 2008, West Lafayette, IN, USA, May 12-14, 2008, Proceedings , 2008, IWOMP.

[11]  Mitsuhisa Sato,et al.  Compiler optimization techniques for OpenMP programs , 2001, Sci. Program..

[12]  Paul Feautrier,et al.  Dataflow analysis of array and scalar references , 1991, International Journal of Parallel Programming.

[13]  Saman Amarasinghe,et al.  Parallelizing Compiler Techniques Based on Linear Inequalities , 1997 .

[14]  James Cownie,et al.  Portable OpenMP debugging with TotalView , .

[15]  William Pugh,et al.  Nonlinear array dependence analysis , 1994 .

[16]  Bronis R. de Supinski,et al.  OpenMP Shared Memory Parallel Programming - International Workshops, IWOMP 2005 and IWOMP 2006, Eugene, OR, USA, June 1-4, 2005, Reims, France, June 12-15, 2006. Proceedings , 2008, IWOMP.

[17]  Sanjay V. Rajopadhye,et al.  Generation of Efficient Nested Loops from Polyhedra , 2000, International Journal of Parallel Programming.

[18]  Albert Cohen,et al.  The Polyhedral Model Is More Widely Applicable Than You Think , 2010, CC.

[19]  Bronis R. de Supinski,et al.  A ROSE-Based OpenMP 3.0 Research Compiler Supporting Multiple Runtime Libraries , 2010, IWOMP.

[20]  David G. Wonnacott Extending Scalar Optimizations for Arrays , 2000, LCPC.

[21]  Samuel Williams,et al.  The Landscape of Parallel Computing Research: A View from Berkeley , 2006 .

[22]  Cédric Bastoul,et al.  Productivity via Automatic Code Generation for PGAS Platforms with the R-Stream Compiler , 2009 .

[23]  William Pugh,et al.  Constraint-based array dependence analysis , 1998, TOPL.

[24]  Yuan Lin,et al.  Static Nonconcurrency Analysis of OpenMP Programs , 2005, IWOMP.

[25]  Barbara Chapman A Practical Programming Model for the Multi-Core Era, 3rd International Workshop on OpenMP, IWOMP 2007, Beijing, China, June 3-7, 2007, Proceedings , 2008, IWOMP.

[26]  Mitsuhisa Sato,et al.  Beyond Loop Level Parallelism in OpenMP: Accelerators, Tasking and More, 6th Internationan Workshop on OpenMP, IWOMP 2010, Tsukuba, Japan, June 14-16, 2010, Proceedings , 2010, IWOMP.

[27]  Paul Feautrier,et al.  Some efficient solutions to the affine scheduling problem. Part II. Multidimensional time , 1992, International Journal of Parallel Programming.

[28]  Paul Feautrier,et al.  Some efficient solutions to the affine scheduling problem. I. One-dimensional time , 1992, International Journal of Parallel Programming.

[29]  Sanjay V. Rajopadhye,et al.  On Synthesizing Systolic Arrays from Recurrence Equations with Linear Dependencies , 1986, FSTTCS.

[30]  Claudia Fohry,et al.  Common Mistakes in OpenMP and How to Avoid Them - A Collection of Best Practices , 2005, IWOMP.