インテル® マス・カーネル・ライブラリー 11.2 ユーザーズガイド
インテル® 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 システムコールを使用します。 または、libhugetlbfs ライブラリーを使用することもできます。 詳細は、ホワイトペーパー (http://software.intel.com/sites/default/files/Large_pages_mic_0.pdf) を参照してください。
サイズが 2MB を超え、offload プラグマで転送するデータに対して 2MB ページのメモリー割り当てを可能にするには、MIC_USE_2MB_BUFFERS 環境変数を適切な値に設定します。 これにより、ランタイムの長さがこの環境変数の値を超えるポインターベースの変数はすべて、2MB ページに割り当てられます。例えば、MIC_USE_2MB_BUFFERS=64K に設定すると、ランタイムの長さが 64KB を超えるポインターベースの変数は、2MB ページに割り当てられます。 詳細は、インテル® ソフトウェア・ドキュメント・ライブラリー (英語) にある『Intel® Compiler User and Reference Guides』を参照してください。
自動オフロード計算に使用できる最大コプロセッサー・メモリーを指定すると、インテル® MKL は自動オフロード計算中にコプロセッサーのメモリーを予約して確保するため、パフォーマンスが向上します。最大メモリーを指定するには、MKL_MIC_MAX_MEMORY 環境変数に値を設定します。
インテル® MKL ルーチンのパフォーマンスを向上させるには、次の OpenMP* 設定とスレッド化設定を使用します。
すべての関数ドメイン:
KMP_AFFINITY=balanced に設定します。
FFT:
さらに、変換操作の入出力データの合計サイズに応じて適切なスレッド数を使用します。
合計サイズが Number-of-Phi-Cores/2MB より小さい場合は 2 の累乗
合計サイズが Number-of-Phi-Cores/2MB 以上の場合は 4*Number-of-Phi-Cores
Number-of-Cores は、システムのインテル® Xeon Phi™ コプロセッサーの数です。
詳細は、ナレッジベースの記事 (http://software.intel.com/en-us/articles/performance-tips-of-using-intel-mkl-on-intel-xeon-phi-coprocessor (英語)) を参照してください。
インテル® MKL FFT 関数のパフォーマンスを向上させるには、以下の推奨事項に従ってください。
入力データの最初の要素を 64 バイト境界でアライメントします。
2 次元以上の単精度変換では、8 で割り切れ、16 で割り切れないリーディング・ディメンジョン (ストライド) を使用します。
2 次元以上の倍精度変換では、4 で割り切れ、8 で割り切れないリーディング・ディメンジョン (ストライド) を使用します。
ほかのインテル® MKL 関数ドメインについては、一般的な「コーディング手法」を使用します。
インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。 改訂 #20110804 |