< 目次

インテル® MKL 2017 デベロッパー・ガイド

クラスターフーリエ変換関数のパフォーマンスの管理

異なるアプリケーションにおけるインテル® MKL クラスター FFT (CFFT) のパフォーマンスは、主にクラスター構成、メッセージ・パッシング・インターフェイス (MPI) 通信のパフォーマンス、および実行の構成に依存します。MPI 通信は通常、CFFT 計算時間全体の約 70% を占めることに注意してください。CFFT アルゴリズムの時間のかかる部分をより柔軟に制御できるように、インテル® MKL には、CFFT のパフォーマンスに影響する特別な値を設定する MKL_CDFT 環境変数が用意されています。CFFT 呼び出しを多用するアプリケーションのパフォーマンスを向上するには、環境変数を使用して、クラスター、アプリケーション、MPI その他に最適な値を設定します。

MKL_CDFT 環境変数の構文を、下記の表に示します。

MKL_CDFT=option1[=value1],option2[=value2],…,optionN[=valueN]

重要

この表では特定の条件下で通常パフォーマンスが向上する設定を説明していますが、実際のパフォーマンスはクラスター構成に大きく依存します。そのため、状況に応じてリストされている値を変更してください。

オプション

設定可能な値

説明

alltoallv

0 (デフォルト)

標準 MPI_Alltoallv 関数を使用してグローバル転置を行います。

1

MPI_Alltoallv 関数の代わりに MPI_Isend および MPI_Irecv に対する一連の呼び出しを使用します。

4

グローバル転置とローカルメモリーのデータ移動をマージします。この場合、CFFT は MPI_Isend および MPI_Irecv を呼び出してグローバル転置を行います。

ハイブリッド (MPI + OpenMP*)、特にノードあたりのプロセス数が 1 の場合にこの値を使用してください。

wo_omatcopy

0

ローカル FFT およびローカル転置を別に行います。

構成パラメーター DFTI_TRANSPOSEDFTI_ALLOW の場合、wo_omatcopy = 1 よりも 0 のほうが通常は高速に実行されます。詳細は、『インテル® MKL デベロッパー・リファレンス』を参照してください。

1

ローカル FFT 呼び出しとローカル転置をマージします。

構成パラメーター DFTI_TRANSPOSEDFTI_NONE の場合、wo_omatcopy = 0 よりも 1 のほうが通常は高速に実行されます。

-1 (デフォルト)

DFTI_TRANSPOSE の値に応じて CFFT が使用する値 (上記の 2 つのいずれか) を決定します。

enable_soi

適用不可

標準の 9 ステップ (または 6 ステップ) アルゴリズムよりも少ない MPI 通信が必要な 1 次元複素数-複素数 CFFT で通信量の少ない対象セグメントの FFT (SOI FFT) アルゴリズムを有効にするフラグ。

注意

SOI FFT アルゴリズムを使用することで MPI 通信が少なくなり、精度がわずかに (およそ小数点 1 桁分) 低下します。

次の例は、環境変数の使用法を示しています。

set MKL_CDFT=wo_omatcopy=1,alltoallv=4,enable_soi
mpirun –ppn 2 –n 16 mkl_cdft_app.exe

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804