Selecting the Threading Layer

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).

Threading Layer

Each Intel MKL threading library contains the same code compiled by the respective compiler (Intel, gnu and PGI* compilers on Linux OS).

RTL

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 additional 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


Submit feedback on this help topic