OpenMP* ランタイム・ライブラリーは、OMP_NUM_THREADS 環境変数を使用します。インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) には、MKL_NUM_THREADS や MKL_DOMAIN_NUM_THREADS 環境変数のような、OpenMP* スレッド数を設定するほかの方法も用意されています (追加のスレッド制御を使用を参照)。
すべてのノードで関連する環境変数が正しい値 (同じ値) になっていることを確認します。インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) では、 OpenMP* スレッド数のデフォルトは 1 に設定されません。コンパイラーで使用される OpenMP* ライブラリーに応じて、デフォルトのスレッド数が設定されます。インテル® コンパイラー・ベースのスレッド・ライブラリー (mkl_intel_thread.lib) では、この値は OS の CPU の数です。
たとえば、ノードあたりの MPI ランク数とノードあたりの OpenMP* スレッド数が両方とも 1 より大きい場合に発生する可能性がある、OpenMP スレッド数の過剰指定を避けてください。ノードあたりの MPI ランク数にノードあたりの OpenMP* スレッド数を掛けた数が、ノードあたりのハードウェア・スレッド数を超えてはなりません。
以下の説明では、OMP_NUM_THREADS 環境変数が前提となっています。
OMP_NUM_THREADS を、その値とノードあたりの MPI ランク数の積がノードの実際のプロセッサー数またはコア数と等しくなるように設定します。ノードでインテル® ハイパースレッディング・テクノロジーが有効になっている場合、Windows* で表示されるプロセッサー数の半分だけを使用します。
クラスター・スパース・ソルバーでは、ソルバーの実装ではマルチスレッド・アルゴリズムのみがサポートされるため、OpenMP* スレッド数を 1 より大きい数に設定します。