The Intel® compiler supports the OpenMP* Version 2.5 API specification. For complete Fortran language support for OpenMP, see the OpenMP Application Program Interface Version 2.5 specification, which is available from the OpenMP web site (http://www.openmp.org/).
OpenMP provides symmetric multiprocessing (SMP) with the following major features:
Relieves the user from having to deal with the low-level details of iteration space partitioning, data sharing, and thread creation, scheduling, and synchronization.
Provides the benefit of the performance available from shared memory multiprocessor and multi-core processor systems on IA-32, Intel® 64, and IA-64 architectures, including those processors with Hyper-Threading Technology.
The compiler performs transformations to generate multithreaded code based on a developer's placement of OpenMP directives in the source program making it easy to add threading to existing software. The Intel compiler supports all of the current industry-standard OpenMP directives and compiles parallel programs annotated with OpenMP directives.
The compiler provides Intel-specific extensions to the OpenMP Version 2.5 specification including run-time library routines and environment variables.
To compile with OpenMP, you need to prepare your program by annotating the code with OpenMP directives in the form of the Fortran program comments. The Intel compiler processes the application and internally produces a multithreaded version of the code which is then compiled. The output is an executable with the parallelism implemented by threads that execute parallel regions or constructs. See Programming with OpenMP.
The OpenMP specification does not define interoperability of multiple implementations; therefore, the OpenMP implementation supported by other compilers and OpenMP support in Intel compilers might not be interoperable. To avoid possible linking or run-time problems, keep the following guidelines in mind:
Compile all the OpenMP sources with one compiler.
Avoid linking multiple copies of the OpenMP runtime libraries from different compilers.
Use dynamic instead of static OpenMP libraries to avoid linking multiple copies of the libraries into a single program.