インテル® MKL 2020 デベロッパー・ガイド

MKL_NUM_STRIPES

MKL_NUM_STRIPES 環境変数は、?gemm 関数用のインテル® MKL のスレッド化アルゴリズムを制御します。MKL_NUM_STRIPES を正の整数値 nstripes に設定すると、インテル® MKL は nstripes 個のパーティションと出力行列のリーディング・ディメンジョンを使用しようとします。

次の表は、MKL_NUM_STRIPESnstripes 値と対応する ?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_stripesmkl_get_num_stripes を使用して、stripes の数を設定および照会できます。

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804