インテル® MKL 2017 デベロッパー・ガイド
以下の表は、「同様の」結果になる自動オフロードの環境変数と関数を示しています。関数の詳細は、『インテル® MKL デベロッパー・リファレンス』を参照してください。ホスト CPU とインテル® Xeon Phi™ コプロセッサー間の作業の分割を制御するため、環境変数は 0 から 1 の範囲で指定された値を使用します。
環境変数 |
サポート関数 |
説明 |
値 |
---|---|---|---|
MKL_MIC_ENABLE |
mkl_mic_enable |
自動オフロード (AO) を有効にします。 |
1 |
OFFLOAD_DEVICES |
なし |
OFFLOAD_DEVICES は、インテル® MKL とインテル® コンパイラーに共通の設定です。インテル® MKL の AO を含む、オフロードに使用するコプロセッサーのリストを指定します。 特にこの設定は、AO モードでインテル® MKL を実行する MPI アプリケーションの環境を設定するのに役立ちます。 この変数が設定されていない場合、システムで利用可能なすべてのコプロセッサーが AO に使用されます。 この環境変数は、AO を環境設定または関数呼び出しで有効にした場合に設定できます。 この変数に空の値を設定すると、MKL_MIC_ENABLE の値に関係なく AO が完全に無効になります。 この環境変数を設定した後、インテル® MKL サポート関数と環境変数は、リストのインデックス (0 から開始) で指定されたコプロセッサーを参照します。 詳細は、『インテル® コンパイラー・デベロッパー・ガイドおよびリファレンス』を参照してください。 |
カンマ区切りのリスト。範囲は、0 からシステムで最も大きなインテル® Xeon Phi™ コプロセッサーの番号までの整数で、最大値は 31 です。この範囲外の値は無視されます。さらに、リストに整数以外のデータが含まれている場合、リストは完全に無視されます。 例えば、システムにインテル® Xeon Phi™ コプロセッサーが 4 つあり、リストの値が 1,3 の場合、インテル® MKL はコプロセッサー 1 および 3 のみを AO に使用し、インテル® MKL サポート関数と環境変数はこれらのコプロセッサーをコプロセッサー 0 および 1 として参照します。 |
OFFLOAD_ENABLE_ORSL |
なし |
インテル® MKL とインテル® コンパイラーがコプロセッサーへのアクセスを同期するモードを有効にします。アプリケーションでコンパイラーによるオフロード支援と AO の両方を使用し、独自の同期を実装していない場合、この変数を設定します。 |
1 |
MKL_HOST_WORKDIVISION |
mkl_mic_set_workdivision |
ホスト CPU で行う作業の割合を指定します。 |
値の範囲は 0.0 から 1.0 までです (例: 0.2 または 0.33)。負の値は無視されます。1 よりも大きい値は 1.0 として扱われます。 |
MKL_MIC_WORKDIVISION |
mkl_mic_set_workdivision |
システムのインテル® Xeon Phi™ コプロセッサー全体で行う作業の割合を指定します。 |
MKL_HOST_WORKDIVISION を参照してください。 |
MKL_MIC_<number>_WORKDIVISION |
mkl_mic_set_workdivision |
特定のインテル® Xeon Phi™ コプロセッサーで行う作業の割合を指定します。<number> は、0 から最も大きなインテル® Xeon Phi™ コプロセッサーの番号までの整数で、最大値は 31 です。例えば、システムにインテル® Xeon Phi™ コプロセッサーが 2 つある場合、<number> は 0 と 1 になります。 |
MKL_HOST_WORKDIVISION を参照してください。 |
MKL_MIC_MAX_MEMORY |
mkl_mic_set_max_memory |
システムのインテル® Xeon Phi™ コプロセッサー全体の AO 計算のために予約する最大コプロセッサー・メモリーを指定します。AO 計算を実行するプロセスは、環境変数で指定された追加のコプロセッサー・メモリーを使用します。 |
メモリーサイズは、キロバイト (K)、メガバイト (M)、ギガバイト (G)、またはテラバイト (T) で指定します。例えば、MKL_MIC_MAX_MEMORY = 4096M は、AO 計算に予約するコプロセッサー・メモリーを 4096 メガバイト (4 ギガバイト) に制限します。MKL_MIC_MAX_MEMORY = 4G と設定すると、ギガバイト単位で同じ量のメモリーが予約されます。 |
MKL_MIC_<number>_MAX_MEMORY |
mkl_mic_set_max_memory |
システムの特定のインテル® Xeon Phi™ コプロセッサーの AO 計算のために予約する最大コプロセッサー・メモリーを指定します。 <number> は、0 から最も大きなインテル® Xeon Phi™ コプロセッサーの番号までの整数で、最大値は 31 です。例えば、システムにインテル® Xeon Phi™ コプロセッサーが 2 つある場合、<number> は 0 と 1 になります。 |
メモリーサイズは、キロバイト (K)、メガバイト (M)、ギガバイト (G)、またはテラバイト (T) で指定します。例えば、MKL_MIC_MAX_MEMORY = 4096M は、AO 計算に予約するコプロセッサー・メモリーを 4096 メガバイト (4 ギガバイト) に制限します。MKL_MIC_MAX_MEMORY = 4G と設定すると、ギガバイト単位で同じ量のメモリーが予約されます。 |
MKL_MIC_REGISTER_MEMORY |
mkl_mic_register_memory |
割り当てられたメモリーを登録する mkl_malloc 関数の AO モードでの実行を有効/無効にします。 AO が無効な場合、この設定の効果はありません。 AO が有効なインテル® MKL 関数に mkl_malloc で割り当てられた同じメモリー領域が複数回渡される場合、環境変数を 1 に設定するとパフォーマンスが向上します (AO が有効な関数のリストは、『インテル® MKL リリースノート』を参照してください)。 |
mkl_malloc の動作: 0 - 割り当てられたメモリーを登録しません。 1 - 割り当てられたメモリーを登録します。 |
MKL_MIC_RESOURCE_LIMIT |
mkl_mic_set_resource_limit |
呼び出し元プロセスで使用できるインテル® Xeon Phi™ コプロセッサーの計算リソースの量を指定します。AO モードでインテル® MKL を呼び出す複数のプロセス間で、インテル® Xeon Phi™ コプロセッサーのコアを自動的に共有する必要がある場合は、この環境変数を使用します。例えば、これは MPI アプリケーションで役立ちます。 実際の予約は、インテル® MKL AO 関数の呼び出し中に行われます。 |
値の範囲は 0.0 から 1.0 までです 特別な値:
例:
|
MIC_OMP_NUM_THREADS |
mkl_mic_set_device_num_threads |
システムのインテル® Xeon Phi™ コプロセッサー全体で AO 計算に使用する最大 OpenMP* スレッド数を指定します。 |
0 よりも大きい整数。 |
MIC_<number>_OMP_NUM_THREADS |
mkl_mic_set_device_num_threads | システムの特定のインテル® Xeon Phi™ コプロセッサーで AO 計算に使用する最大 OpenMP* スレッド数を指定します。 <number> は、0 から最も大きなインテル® Xeon Phi™ コプロセッサーの番号までの整数で、最大値は 31 です。例えば、システムにインテル® Xeon Phi™ コプロセッサーが 2 つある場合、<number> は 0 と 1 になります。 |
0 よりも大きい整数。 |
OFFLOAD_REPORT |
mkl_mic_set_offload_report |
OFFLOAD_REPORT は、インテル® MKL とインテル® コンパイラーに共通の設定です。インテル® MKL の AO を含む、オフロードのプロファイル・レポートのレベルを指定します。 詳細は、『インテル® コンパイラー・デベロッパー・ガイドおよびリファレンス』を参照してください。 mkl_mic_set_offload_report 関数を使用して、実行時のプロファイル・レポートの生成を有効/無効にできますが、レポートのレベルは変更できません。 |
0 から 2 までの整数: 0 - レポートしません (デフォルト)。 1 - 以下の情報をレポートします。
2 - 上記の情報に加えて、以下の情報をレポートします。
|
MIC_LD_LIBRARY_PATH |
なし |
コプロセッサー側のダイナミック・ライブラリーの検索パスを指定します。 |
コプロセッサー側のインテル® MKL ライブラリーへのパスが含まれていなければなりません。デフォルトのパスは、<mkl ディレクトリー>/lib/mic です。 |
MKL_MIC_THRESHOLDS_?GEMM |
なし |
AO モードで ?GEMM 計算を行う際の行列サイズのしきい値を指定します。 |
カンマ区切りの 3 つの整数: M, N, K。この環境変数が設定されている場合、問題サイズ M1, N1, K1 の ?GEMM 関数は、M1>M、N1>N、および K1>K の場合のみ計算のオフロードを試みます。この設定はヒントなので、問題サイズと環境に応じて、インテル® MKL は計算をオフロードしないことがあります。 例: DGEMM のしきい値を M=2000、N=1000、K=500 に設定するには、MKL_MIC_THRESHOLDS_DGEMM=2000,1000,500 と指定します。 |
関数で指定された設定は、それぞれの環境変数で指定された設定よりも優先されます。
インテル® MKL は、コプロセッサー間で作業を分割するガイダンスとして MKL_HOST_WORKDIVISION、MKL_MIC_WORKDIVISION、MKL_MIC_<number>_WORKDIVISION の値を使用しますが、ライブラリーは必要に応じて異なる作業の分割を選択します。
LAPACK ルーチンの場合、作業の割合に 0.0 以外の値を設定すると、AO モード用に指定したプロセッサーが有効になります。ただし、インテル® MKL LAPACK は、作業を分割するために指定された値を使用しません。例えば、0.5 を設定した場合と 1.0 を設定した場合は同じです。