インテル® Xeon Phi™ コプロセッサーでインテル® MKL のパフォーマンスを向上させるには、以下のインテル® MIC アーキテクチャー固有の設定を行います。「コーディング手法」で説明されている一般的なパフォーマンス向上の推奨事項も使用できます。
多くのインテル® MKL ルーチンは、2MB ページで割り当てられたメモリーで入出力データを処理すると、より少ないページ数でより多くのメモリーへのアドレスが可能になり、デフォルトのページサイズ (4K) でメモリーを割り当てた場合よりも仮想メモリーアドレスと物理メモリーアドレスの変換に伴うオーバーヘッドが減少するため、パフォーマンスが向上します。詳細は、『Intel® 64 and IA-32 Architectures Optimization Reference Manual』(英語) および『Intel® 64 and IA-32 Architectures Software Developer's Manual』(英語) を参照してください (http://www.intel.com/ の Find Content ボックスにドキュメントの名前を入力)。
メモリーを 2MB ページで割り当てるには、MAP_HUGETLB フラグを付けて mmap システムコールを使用します。
サイズが 2MB を超え、offload プラグマで転送するデータに対して 2MB ページのメモリー割り当てを可能にするには、MIC_USE_2MB_BUFFERS 環境変数を 2M に設定します。 詳細は、『インテル® コンパイラー・ユーザー・リファレンス・ガイド』を参照してください。
自動オフロード計算に使用できる最大コプロセッサー・メモリーを指定すると、インテル® MKL は自動オフロード計算中にコプロセッサーのメモリーを予約して確保するため、パフォーマンスが向上します。最大メモリーを指定するには、MKL_MIC_MAX_MEMORY 環境変数に値を設定します。
インテル® MKL ルーチンのパフォーマンスを向上させるには、次の OpenMP* 設定とスレッド化設定を使用します。
BLAS、LAPACK、スパース BLAS の場合:
KMP_AFFINITY=compact,granularity=fine に設定
FFT の場合:
KMP_AFFINITY=balanced,granularity=fine に設定して 2 の累乗のスレッド数を使用
インテル® MKL FFT 関数のパフォーマンスを向上させるには、以下の推奨事項に従ってください。
入力データの最初の要素を 64 バイト境界でアライメントします。
2 次元以上の単精度変換では、8 で割り切れ、16 で割り切れないリーディング・ディメンジョン (ストライド) を使用します。
2 次元以上の倍精度変換では、4 で割り切れ、8 で割り切れないリーディング・ディメンジョン (ストライド) を使用します。
ほかのインテル® MKL 関数ドメインについては、一般的な「コーディング手法」を使用します。
| インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。
改訂 #20110804 |