At its most elemental level, OpenMP is a set of compiler directives and callable runtime library routines that extend Fortran (and separately, C and C++) to express shared memory parallelism. The base language is left unspecified and vendors may implement OpenMP in any Fortran compiler. Naturally, Fortan 90 and Fortran 95 require the OpenMP implementation to include additional semantics over Fortran 77 in order to support pointers and allocatables.
OpenMP leverages many of the X3H5 concepts while extending them to support coarse grain parallelism. Table 2 compares OpenMP with X3H5 and the SGI DOACROSS model [3].
The language extensions fall into one of three categories: control structures, data environment, and synchronization. The standard also includes a callable runtime library with accompanying environment variables. Table 2 summarizes the language extensions in terms of these categories.
Table 2: Comparison of X3H5, OpenMP and SGI DOACROSS functionality.