The Intel® compiler introduces support for the OpenMP* Version 3.1 API specification. For complete C++ language support for OpenMP, see the OpenMP Application Program Interface Version 3.1 specification, which is available from the OpenMP web site (http://www.openmp.org/, click the Specifications link).
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 benefit of performance available from shared memory multiprocessor and multi-core processor systems on all supported Intel 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.1 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.
Options that use OpenMP* are available for both Intel® and non-Intel microprocessors but these options may perform additional optimizations on Intel® microprocessors than they perform on non-Intel microprocessors. The list of major, user-visible OpenMP* constructs and features that may perform differently on Intel® vs. non-Intel microprocessors includes: locks (internal and user visible), the SINGLE construct, barriers (explicit and implicit), parallel loop scheduling, reductions, memory allocation, and thread affinity and binding.
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.
Copyright © 1996-2011, Intel Corporation. All rights reserved.