The Intel® compiler supports the OpenMP* C/C++ version 2.5 API specification. The OpenMP directives relieve the user from having to deal with the low-level details of iteration space partitioning, data sharing, and thread scheduling and synchronization.
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 scheduling and synchronization.
Provides the benefit of the performance available from shared memory, multiprocessor and dual-core processor systems and on IA-32 architecture processors with Hyper-Threading Technology (HT Technology).
For information on HT Technology, refer to the hardware and software programming manuals in Other Resources.
The compiler performs transformations to generate multithreaded code based on the user'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, except WORKSHARE, and compiles parallel programs annotated with OpenMP directives.
The compiler provides Intel-specific extensions to the OpenMP C/C++ version 2.5 specification including run-time library routines and environment variables.
For complete information on the OpenMP standard, visit the OpenMP* web site: http://www.openmp.org. For complete C++ language specifications, see the OpenMP version 2.5 specifications, which are available from the OpenMP web site.
To compile with OpenMP, you need to prepare your program by annotating the code with OpenMP directives. The Intel compiler first processes the application and 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 for Windows might not be interoperable. To avoid possible linking or run-time problems, keep the following guidelines in mind:
Avoid using multiple copies of the OpenMP runtime libraries from different compilers.
Compile all the OpenMP sources with one compiler or compile the parallel region and entire call tree beneath it using the same compiler.
Use dynamic libraries for OpenMP.
While parallelizing a loop, the Intel compiler's loop parallelizer, OpenMP, tries to determine the optimal set of configurations for a given processor. At run time, a check is performed to determine which processor OpenMP should optimize a given loop. See detailed information in Processor-specific Runtime Checks for systems based on IA-32 architecture.