インテル® MKL 11.3 ユーザーズガイド
OpenMP* ランタイム・ライブラリーは、OMP_NUM_THREADS 環境変数を使用します。 インテル® MKL には、MKL_NUM_THREADS や MKL_DOMAIN_NUM_THREADS 環境変数のような、OpenMP* スレッド数を設定するほかの方法も用意されています (「新しいスレッド化コントロールの使用」を参照)。
関連する環境変数がすべてのノードにおいて同じで正しい値になっていることを確認してください。インテル® MKL では、デフォルトの OpenMP* スレッド数は 1 に設定されません。コンパイラーで使用される OpenMP* ライブラリーに応じて、デフォルトのスレッド数が設定されます。インテル® コンパイラー・ベースのスレッド・ライブラリー (mkl_intel_thread.lib) では、この値は OS の CPU の数です。
例えば、ノードあたりの MPI ランクの数とノードあたりの OpenMP* スレッド数の両方が 1 よりも大きい場合、OpenMP* スレッド数が過剰に指定されないようにします。ノードあたりの MPI ランクの数とノードあたりの OpenMP* スレッド数の積が、ノードあたりのハードウェア・スレッド数を超えないようにしてください。
OMP_NUM_THREADS 環境変数については、下記の説明を参照してください。
ノードあたりの MPI ランクとノードあたりのスレッド数の積がノードあたりの物理コアの数と同じになるように OMP_NUM_THREADS を設定します。 ノードでハイパースレッディング・テクノロジーが有効な場合、Windows* で表示されるプロセッサー数の半分のみを使用します。
クラスター・スパース・ソルバーでは、ソルバーの実装がマルチスレッド・アルゴリズムのみサポートしているため、OpenMP* スレッド数を 2 以上に設定します。