インテル® MKL 11.3 ユーザーズガイド
MKL_DYNAMIC 環境変数は、インテル® MKL がスレッド数を動的に変更できるようにします。
OMP_DYNAMIC のデフォルト値が FALSE の場合でも、MKL_DYNAMIC のデフォルト値は TRUE です。
MKL_DYNAMIC が TRUE の場合、インテル® MKL は指定された最大数よりも少ない OpenMP* スレッド を使用することがあります。
例えば、MKL_DYNAMIC が TRUE の場合、以下のようなケースでは最適なスレッド数が選択されます。
物理コア数を超えるスレッド数が要求された場合 (インテル® ハイパースレッディング (HT) テクノロジーを使用する場合など)、インテル® MKL は OpenMP* スレッド数を物理コア数の値にスケールダウンします。
検出されたメッセージ・パッシング・インターフェイス (MPI) がスレッドセーフ・モードで呼び出されているかどうか不明な場合 (例えば、MPICH 1.2.x でこれを検出するのは不可能です)、インテル® MKL は 1 つの OpenMP* スレッドを実行します。
MKL_DYNAMIC が FALSE の場合、インテル® MKL はアルゴリズムで許可される限り推奨された OpenMP* スレッド数を使用します。 例えば、8 つのスレッドでサイズ 1 の行列-行列乗算を行おうとすると、このイベントで 8 つのスレッドを使用することは実用的でないため、ライブラリーは代わりに 1 スレッドのみ使用します。
プログラムの OpenMP* 並列領域から呼び出される場合、インテル® MKL はデフォルトで 1 スレッドのみ使用します。このような呼び出しでインテル® MKL を並列に実行するには、プログラムをインテル® MKL でサポートされる OpenMP* スレッド RTL にリンクし、次のように環境変数を設定します。
このように設定すると、プログラムの OpenMP* 並列領域で呼び出された際に、インテル® MKL は MKL_NUM_THREADS を使用します。
一般に、ライブラリーが並列セクションからすでに呼び出されていて入れ子の並列処理を使用する場合など、インテル® MKL が検出できない状況でのみ、MKL_DYNAMIC を FALSE に設定してください。
インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。 改訂 #20110804 |