Several compilers that Intel MKL supports use the OpenMP* threading technology. Intel MKL supports implementations of the OpenMP* technology that these compilers provide. To make use of this support, you need to link with the appropriate library in the Threading Layer and Compiler Support Run-time Library (RTL).
Each Intel MKL threading library contains the same code compiled by the respective compiler (Intel, gnu and PGI* compilers on Linux OS).
This layer includes libiomp, the compatibility OpenMP* run-time library of the Intel compiler. In addition to the Intel compiler, libiomp provides support for one more threading compiler on Linux OS (GNU). That is, a program threaded with a GNU compiler can safely be linked with Intel MKL and libiomp.
The table below helps explain what threading library and RTL you should choose under different scenarios when using Intel MKL (static cases only):
Compiler |
Application Threaded? |
Threading Layer |
RTL Recommended |
Comment |
---|---|---|---|---|
Intel |
Does not matter |
libmkl_intel_thread.a |
libiomp5.so |
|
PGI |
Yes |
libmkl_pgi_thread.a or libmkl_sequential.a |
PGI* supplied |
Use of libmkl_sequential.a removes threading from Intel MKL calls. |
PGI |
No |
libmkl_intel_thread.a |
libiomp5.so |
|
PGI |
No |
libmkl_pgi_thread.a |
PGI* supplied |
|
PGI |
No |
libmkl_sequential.a |
None |
|
gnu |
Yes |
libmkl_gnu_thread.a |
libiomp5.so or GNU OpenMP run-time library |
libiomp5 offers superior scaling performance. |
gnu |
Yes |
libmkl_sequential.a |
None |
|
gnu |
No |
libmkl_intel_thread.a |
libiomp5.so |
|
other |
Yes |
libmkl_sequential.a |
None |
|
other |
No |
libmkl_intel_thread.a |
libiomp5.so |