OpenMP Validation Suite
The OpenMP validation suite is a collection of C and Fortran programs with OpenMP directives that were designed to validate the correctness of an OpenMP implementation. It is a joint effort of the High Performance Computing Center Stuttgart, the University of Houston and the TU Dresden.
In the last years OpenMP has found wide spread acceptance as portable programming model. This is not only reflected by the use of OpenMP in many applications but also by the availability of a large number of compilers supporting OpenMP.
The suite is designed to cover the 2.5 version of the OpenMP standard. This version not only merges the Fortran and C/C++ language binding from the former version 2.0, but it also contains a number of clarifications or more detailed specifications. Currently the OpenMP 2.5 standard has about two hundred pages. For the C/C++ language binding it consists of ten different constructs, two directives and eleven clauses that can be applied to the constructs. Additionally there are more than a dozend runtime routines and variables, too. Although not all clauses can be used together with all constructs this results in a sufficient complexity to make the implementation of an OpenMP compiler a difficult task. Unfortunately, to the best of our knowledge, there exists currently no freely available validation suite that could support the efforts to develop open source OpenMP compilers. The target of this work is to provide a starting point and open framework for such a suite.
Currently the suite consists of more than 50 different tests, each testing different constructs. For simple usage of the suite it brings two scripts simplifying the run of all tests. As the tests can deliver correct results on some platforms even if openmp was not used the testsuite includes a set of crosstests checking for this issue.
The testsuite has been tested with a lot of different compilers on different plattforms. The results show that the testsuite is capable of detecting unsupported OpenMP constructs.