インテル® MKL 11.3 ユーザーズガイド

自動オフロードの制御

以下の表は、同様の結果になる自動オフロードの環境変数と関数を示しています。 関数の詳細は、『インテル® 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 までです

特別な値:

  • 0.0 - 複数のプロセス間でインテル® Xeon Phi™ コプロセッサーを共有しません。デフォルト。

  • MKL_MPI_PPN - MPI アプリケーションで完全自動モードを有効にします。このモードでは、インテル® MKL は、MPI によってプロセスに渡された環境変数からノードあたりの MPI プロセスの数 (ppn) を読み取ろうとします。読み取りに成功した場合、インテル® MKL は、実際のリソース制限を 1.0/ppn に設定します。

    インテル® MPI ライブラリー、Open MPI、IBM* Platform MPI、インテル® MKL は、ppn を自動的に検出します。 ほかの MPI 実装については、MKL_MPI_PPN 環境変数を使用して ppn を設定します。

例:

  1. 61 コアのインテル® Xeon Phi™ コプロセッサーが 2 つあります。3 つのプロセスが同時に MKL_MIC_RESOURCE_LIMIT=0.34 を設定し、AO モードで dpotrf を呼び出します。 1 つのプロセスにコプロセッサー 1 から 40 コア、別のプロセスにコプロセッサー 2 から 40 コア、残りのプロセスに 2 つのコプロセッサーから合計 40 コアが割り当てられます。

  2. 58 コアのインテル® Xeon Phi™ コプロセッサーが 2 つあります。次の設定を行います。

    MKL_MIC_1_WORKDIVISION=0.0

    MKL_MIC_PPN=4

    MKL_MIC_RESOURCE_LIMIT=MKL_MPI_PPN

    インテル® MKL の AO 呼び出しを使用して MPI アプリケーションを実行します。ユーザーがゼロ・ワークビジョンを設定して計算からコプロセッサー 1 を除外しているため、各 MPI プロセスにインテル® Xeon Phi™ コプロセッサー 0 から 14 コアが割り当てられます。

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 - 以下の情報をレポートします。

  • AO モードで呼び出された関数の名前
  • 効率的な作業分割。-1 の場合、この関数呼び出しでヒント (mkl_mic_set_workdivison 関数で指定される作業分割) または適切な MKL_*_WORKDIVISION 環境変数が無視されたことを示します

  • 呼び出し中にホスト CPU で費やした時間
  • 呼び出し中に利用可能なインテル® Xeon Phi™ コプロセッサーで費やした時間

2 - 上記の情報に加えて、以下の情報をレポートします。

  • 呼び出し中に利用可能なコプロセッサーとの間で転送されたデータの量

MIC_LD_LIBRARY_PATH

なし

コプロセッサー側のダイナミック・ライブラリーの検索パスを指定します。

コプロセッサー側のインテル® MKL ライブラリーへのパスが含まれていなければなりません。デフォルトのパスは、<mkl ディレクトリー>/lib/mic です。

MKL_MIC_THRESHOLDS_?GEMM

なし

AO モードで ?GEMM 計算を行う際の行列サイズのしきい値を指定します。

カンマ区切りの 3 つの整数: M, N, K。 この環境変数が設定されている場合、問題サイズ M1, N1, K1?GEMM 関数は、M1>MN1>N、および K1>K の場合のみ計算のオフロードを試みます。 この設定はヒントなので、問題サイズと環境に応じて、インテル® MKL は計算をオフロードしないことがあります。

例: DGEMM のしきい値を M=2000、N=1000、K=500 に設定するには、MKL_MIC_THRESHOLDS_DGEMM=2000,1000,500 と指定します。

関連情報