MKL_DYNAMIC

MKL_DYNAMIC 環境変数は、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) がスレッド数を動的に変更できるようにします。

OMP_DYNAMIC のデフォルト値が FALSE の場合でも、MKL_DYNAMIC のデフォルト値は TRUE です。

MKL_DYNAMIC が TRUE の場合、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) は指定された最大数よりも少ない OpenMP* スレッド を使用することがあります。

例えば、MKL_DYNAMIC が TRUE の場合、以下のようなケースでは最適なスレッド数が選択されます:

MKL_DYNAMIC が FALSE の場合、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) は、基盤となるアルゴリズムが許可する場合は常に推奨される OpenMP* スレッド数を使用します。たとえば、サイズ 1 の行列対行列の乗算を 8 スレッドで実行しようとすると、このイベントで 8 スレッドを使用することは非現実的であるため、ライブラリーは単一のスレッドのみを使用することを選択する場合があります。

プログラム内の OpenMP* 並列領域からインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) が呼び出される場合、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) はデフォルトで単一のスレッドのみを使用します。このような呼び出しでインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) を並列に実行するには、プログラムをインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) でサポートされる OpenMP* スレッド RTL にリンクし、次のように環境変数を設定します。

このように設定すると、プログラムの OpenMP* 並列領域で呼び出されたインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) は、MKL_NUM_THREADS を使用します。

一般に、ライブラリーが並列セクションからすでに呼び出されていて、入れ子の並列処理を使用する場合などインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) が検出できない状況でのみ、MKL_DYNAMIC を FALSE に設定してください。

製品および性能に関する情報

性能は、使用状況、構成、およびその他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) をご覧ください。

改訂 #20201201