インテル® マス・カーネル・ライブラリー 11.2 ユーザーズガイド
インテル® MKL は、シーケンシャル実行および並列実行をサポートしています。並列実行用に、インテル® MKL のスレッドレイヤーは次のライブラリーを提供します。
libmkl_intel_thread.a、libmkl_gnu_thread.a および libmkl_pgi_thread.a ライブラリー (スタティック・リンク)
libmkl_intel_thread.so、libmkl_gnu_thread.so および libmkl_pgi_thread.so ライブラリー (ダイナミック・リンク)
並列モードは OpenMP* スレッド化テクノロジーをベースにしているため、適切な OpenMP* ランタイム・ライブラリーが必要です。インテル® コンパイラーは libiomp5.so ライブラリーで OpenMP* のランタイム機能を提供しています。 アプリケーションをビルドしたコンパイラー (インテル® コンパイラー、GNU* コンパイラー、または PGI* コンパイラー) に関係なく、このライブラリーを実行時に使用できます。 インテル® MKL を呼び出すアプリケーションは、GNU* または PGI* コンパイラーで提供される OpenMP* ランタイム・ライブラリーを使用することもできます。 このライブラリーを使用するには、アプリケーションと libmkl_gnu_thread.* または libmkl_pgi_thread.* ライブラリーをそれぞれリンクします。
以下の表は、選択するインテル® MKL ライブラリーと OpenMP* ランタイム・ライブラリーの説明です (スタティックの場合のみ)。
スレッドレイヤーで libmkl_sequential.a ライブラリーを選択すると、インテル® MKL 呼び出しからスレッド化が削除されます。
コンパイラー |
マルチスレッド? |
スレッドレイヤー |
RTL を推奨 |
---|---|---|---|
インテル |
問題になりません |
libmkl_intel_thread.a |
libiomp5.so |
PGI* |
○ |
libmkl_pgi_thread.a または libmkl_sequential.a |
PGI* が提供 |
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 または libmkl_sequential.a |
GNU* OpenMP* ランタイム・ライブラリー |
GNU* |
X |
libmkl_intel_thread.a |
libiomp5.so |
GNU* |
X |
libmkl_gnu_thread.a |
GNU* OpenMP* ランタイム・ライブラリー |
GNU* |
X |
libmkl_sequential.a |
なし |
インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。 改訂 #20110804 |