The Intel® compiler supports the OpenMP* Version 3.0 API specification. For complete C++ language support for OpenMP, see the OpenMP Application Program Interface Version 3.0 specification, which is available from the OpenMP web site (http://www.openmp.org/, click the Specifications link).
This version of the Intel compiler also introduces OpenMP API Version 3.0 API specification support, as described in the OpenMP web site (http://www.openmp.org/, click Specifications).
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 3.0 specification including run-time library routines and environment variables. However, these extensions are only supported by the Intel compilers. A summary of the compiler options that apply to OpenMP* appears in OpenMP* Options Quick Reference.
To compile with OpenMP, you need to prepare your program by annotating the code with OpenMP directives . 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.
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. Even if you compile and build the entire application with one compiler, be aware that different compilers might not provide OpenMP source compatibility that would allow you to compile and link the same set of application sources with a different compiler and get the expected parallel execution results.
Intel compilers include two sets of OpenMP libraries, as described in OpenMP Source Compatibility and Interoperability with Other Compilers.