インテル® マス・カーネル・ライブラリー (インテル® MKL) がサポートしているいくつかのコンパイラーは、スレッド化に OpenMP* テクノロジーを使用しています。 インテル® MKL は、これらのコンパイラーが提供する OpenMP テクノロジーの実装をサポートしています。このサポートを使用するには、スレッド化レイヤーとコンパイラー・サポート・ランタイム・ライブラリー (RTL) の適切なライブラリーをリンクする必要があります。
インテル® MKL スレッド化ライブラリーにはそれぞれ、サポートしているコンパイラー (インテル® コンパイラー、GNU コンパイラーおよび PGI* コンパイラー(Linux* の場合) でコンパイルされた同じコードが含まれています。
このレイヤーには、インテル® コンパイラーの互換 OpenMP ランタイム・ライブラリー libiomp が含まれます。 インテル® コンパイラーに加えて、libiomp は、別のスレッド化コンパイラー (Linux* の場合 GNU) もサポートします。 つまり、GNU コンパイラーを使用してスレッド化されたプログラムは、インテル® MKL および libiomp と安全にリンクすることができます。
以下の表は、インテル® MKL を使用したときに選択するスレッド化ライブラリーと RTL の説明です (スタティックの場合のみ)。
コンパイラー |
マルチスレッド? |
スレッド化レイヤー |
RTL を推奨 |
コメント |
---|---|---|---|---|
インテル |
問題になりません |
libmkl_intel_thread.a |
libiomp5.so |
|
PGI |
○ |
libmkl_pgi_thread.a or libmkl_sequential.a |
PGI* が提供 |
libmkl_sequential.a を使用すると、インテル® MKL 呼び出しからスレッド化が削除されます。 |
PGI |
X |
libmkl_intel_thread.a |
libiomp5.so |
|
PGI |
X |
libmkl_pgi_thread.a |
PGI が提供 |
|
PGI |
X |
libmkl_sequential.a |
なし |
|
gnu |
○ |
libmkl_gnu_thread.a |
libiomp5.so または GNU OpenMP ランタイム・ライブラリー |
libiomp5 は優れたスケーリング・パフォーマンスを提供します。 |
gnu |
○ |
libmkl_sequential.a |
なし |
|
gnu |
X |
libmkl_intel_thread.a |
libiomp5.so |
|
その他 |
○ |
libmkl_sequential.a |
なし |
|
その他 |
X |
libmkl_intel_thread.a |
libiomp5.so |
© 2006 - 2010 Intel Corporation. 無断での引用、転載を禁じます。