インテル® MKL 2019 for Windows* デベロッパー・ガイド
MKL_NUM_STRIPES 環境変数は、?gemm 関数用のインテル® MKL のスレッド化アルゴリズムを制御します。MKL_NUM_STRIPES を正の整数値 nstripes に設定すると、インテル® MKL は nstripes 個のパーティションと出力行列のリーディング・ディメンジョンを使用しようとします。
次の表は、MKL_NUM_STRIPES の nstripes 値と対応する ?gemm 出力行列用のインテル® MKL の分割アルゴリズムを示します。max_threads_for_mkl は、インテル® MKL 用の OpenMP* スレッドの最大数です。
MKL_NUM_STRIPES の値 |
分割アルゴリズム |
|
---|---|---|
1 < nstripes < (max_threads_for_mkl/2) |
2 次元分割 (パーティション数 = nstripes)
|
|
nstripes = 1 |
リーディング・ディメンジョンと逆方向の 1 次元分割アルゴリズム |
|
nstripes ≥ (max_threads_for_mkl /2) |
リーディング・ディメンジョンに沿った 1 次元分割アルゴリズム. |
|
nstripes < 0 |
デフォルトのインテル® MKL スレッド化アルゴリズム |
次の図は、nstripes = 4、合計 8 OpenMP* スレッド (列優先と行優先) の場合の出力行列の分割を示します。
サポート関数 mkl_set_num_stripes と mkl_get_num_stripes を使用して、stripes の数を設定および照会できます。
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |