異なるアプリケーションにおけるインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) クラスター FFT (CFFT) のパフォーマンスは、主にクラスター構成、メッセージ・パッシング・インターフェイス (MPI) 通信のパフォーマンス、および実行の構成に依存します。MPI 通信は通常、CFFT 計算時間全体の約 70% を占めることに注意してください。CFFT アルゴリズムの時間のかかる部分をより柔軟に制御できるように、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) には、CFFT のパフォーマンスに影響する値を設定する MKL_CDFT 環境変数が用意されています。CFFT を集中的に呼び出すアプリケーションのパフォーマンスを向上させるには、環境変数を使用して、クラスター、アプリケーション、MPI などに最適な値を設定します。
MKL_CDFT 環境変数の構文を、下記の表に示します。
MKL_CDFT=オプション 1[=値 1],オプション 2[=値 2],…,オプション N[=値 N]
この表では、特定の条件下で通常パフォーマンスが向上する設定について説明していますが、実際のパフォーマンスはクラスターの構成に大きく依存します。したがって、計算を高速化するには、リストされている値を試してください。
オプション |
設定可能な値 |
説明 |
---|---|---|
alltoallv |
0 (デフォルト) |
標準の MPI_Alltoallv 関数を使用してグローバル転置を実行するように CFFT を構成します。 |
1 |
MPI_Alltoallv 関数の代わりに、MPI_Isend と MPI_Irecv の一連の呼び出しを使用するように CFFT を構成します。 |
|
4 |
グローバル転置とローカルメモリー内のデータ移動をマージするように CFFT を構成します。この場合、CFFT は MPI_Isend と MPI_Irecv を呼び出してグローバル転置を行います。 この値は、ハイブリッド (MPI + OpenMP*)、特にノードあたりのプロセス数が 1 の場合に使用します。 |
|
wo_omatcopy |
0 |
CFFT を構成して、ローカル FFT およびローカル転置を個別に行います。 DFTI_TRANSPOSE 構成パラメーターが DFTI_ALLOW の場合、CFFT は通常、wo_omatcopy = 1 よりも 0 のほうが通常は高速に実行されます。インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) デベロッパー・リファレンスを参照してください。 |
1 |
CFFT を構成して、ローカル FFT 呼び出しとローカル転置をマージします。 DFTI_TRANSPOSE の値が DFTI_NONE の場合、CFFT は通常、wo_omatcopy = 0 よりもこの値の方が高速に実行されます。
|
|
-1 (デフォルト) |
DFTI_TRANSPOSE の値に応じて CFFT が使用する値 (上記の 2 つのいずれか) を決定します。 |
|
enable_soi |
適用不可 |
1 次元の複素数から複素数への CFFT に対して、通信量の少ない Segment Of Interest FFT (SOI FFT) アルゴリズムを有効にするフラグ。このアルゴリズムでは、標準の 9 ステップ (または 6 ステップ) アルゴリズムよりも MPI 通信が少なくて済みます。 注意SOI FFT アルゴリズムでは、MPI 通信量は少なくなりますが、精度がわずかに低下します (小数点 1 桁程度)。 |
以下に、この環境変数の使用例を示します。
set MKL_CDFT=wo_omatcopy=1,alltoallv=4,enable_soi mpirun –ppn 2 –n 16 mkl_cdft_app.exe
製品および性能に関する情報 |
---|
性能は、使用状況、構成、およびその他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) をご覧ください。 改訂 #20201201 |