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

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

異なるアプリケーションにおけるインテル® 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 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。

改訂 #20110804