How to use Intel® Compiler OpenMP* Compatibility Libraries on Windows*

The new OpenMP* Compatibility library
The Intel® Parallel Composer 2011, Intel C++ Composer XE for Windows, Intel Visual Fortran Composer XE for Windows, and the Intel C++ or Visual Fortran Compiler 10.1 or 11.x for Windows include the following new OpenMP* compatibility libraries:

  • libiomp5md.dll, libiomp5md.lib: dynamic performance library; options "/MD /Qopenmp-link:dynamic"
  • libiomp5mt.lib: static performance library; options "/MT /Qopenmp-link:static"
  • libiompprof5md.dll, libiompprof5md.lib: dynamic profile library; options "/MD /Qopenmp-profile"
  • libiompprof5mt.lib: static profile library; options "/MT /Qopenmp-profile"
  • libiompstubs5md.dll, libiompstubs5md.lib: dynamic stub library; options "/MD /Qopenmp-stubs"
  • libiompstubs5mt.lib: static stub library; options "/MT /Qopenmp-stubs"

Visual C++ 2005* provides only dynamic OpenMP libraries: vcomp.lib, vcomp.dll
Visual C++ 2008* provides only dynamic OpenMP libraries: vcomp90.lib, vcomp90.dll
Visual C++ 2010* provides only dynamic OpenMP libraries: vcomp100.lib, vcomp100.dll - this is supported by Intel Parallel Composer 2011, Intel C++ Composer XE for Windows and Intel Visual Fortran Composer for Windows only.

In one application there should be only ONE OpenMP run time library.

The Intel OpenMP compatibility libraries can be used with Microsoft* Visual C++ 2005, 2008 and 2010. Followings are some examples on how to use:

  • Using the Intel Compiler OpenMP compatibility libraries with Visual C++ 2008:

>> cl /c /MD /D_OPENMP_NOFORCE_MANIFEST /openmp ompSrc1.cpp
>> link /nodefaultlib:vcomp90 libiomp5md.lib ompSrc1.obj

  • Using the Intel Compiler OpenMP compatibility libraries with both Visual C++ 2008 and Intel C++ Compiler:

>> cl /c /MD /D_OPENMP_NOFORCE_MANIFEST /openmp ompSrc1.cpp
>> icl /c /MD /Qopenmp ompSrc2.cpp
>> xilink /nodefaultlib:vcomp90 libiomp5md.lib ompSrc1.obj ompSrc2.obj


The legacy OpenMP runtime library:
The legacy OpenMP runtime library is deprecated in 11.x release and are removed in the later compiler products. In case you're using a 3rd party library that uses the legacy OpenMP runtime, you can use the following option with 11.x compiler to link with the legacy libraries:

/Qopenmp-lib:legacy

The primary legacy OpenMP files are below: for full list of files, please see the Documentation installed.

  • libguide40.dll, libguide40.lib: dynamic library
  • libguide.lib: static library

Note: this option "/Qopenmp-lib:legacy" is only available in 11.x release and is not supported by the later compilers.

Optimization Notice in English

For more complete information about compiler optimizations, see our Optimization Notice.

3 comments

Top

Please add information for Visual Studio 2012 and Intel C++ compiler version 14 ( as soon as it is released ).

Those two options are for different usage. Compiler has default behavior as well.
In 11.0 the new compatibility dynamic libary will be linked by default (icl /Qopenmp t.cpp).
In 10.1 the legacy dynamic library will be linked by default (icl /Qopenmp t.cpp).

"/Qopenmp-lib" should be used for selecting the legacy library or the new compatibility library.
"/Qopenmp-link" should be used for selecting dynamic library or static library.

jinhoyoo's picture

/Qopenmp-lib:compat is right, not /Qopenmp-link. Please update upper document.

Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.