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

インテル® Xeon Phi™ コプロセッサーでのパフォーマンスを向上する

インテル® Xeon Phi™ コプロセッサーでインテル® MKL のパフォーマンスを向上させるには、以下のインテル® MIC アーキテクチャー固有の設定を行います。「コーディング手法」で説明されている一般的なパフォーマンス向上の推奨事項も使用できます。

詳細は、ナレッジベースの記事 (http://software.intel.com/en-us/articles/performance-tips-of-using-intel-mkl-on-intel-xeon-phi-coprocessor (英語)) を参照してください。

メモリー割り当て

多くのインテル® 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 FFT 関数のパフォーマンスを向上させるには、以下の推奨事項に従ってください。

ほかのインテル® MKL 関数ドメインについては、一般的な「コーディング手法」を使用します。

スレッド数

FFT では、変換操作の入出力データの合計サイズに応じて適切なスレッド数を使用します。

Number-of-Cores は、システムのインテル® Xeon Phi™ コプロセッサーの数です。

詳細は、「スレッド化を使用してパフォーマンスを向上する」および「スレッド数の決定」を参照してください。

OpenMP* スレッド・アフィニティー

インテル® MKL ルーチンのパフォーマンスを向上するには、すべての関数ドメインに対し KMP_AFFINITY=balanced を設定します。

インテル® TBB の機能

インテル® MKL ルーチンのパフォーマンスを向上するには、tbb::affinity_partitioner クラスを使用します。

スレッド数を調整するには (例えば、FFT のスレッド数など)、tbb::task_scheduler_init クラスを使用します。

詳細は、インテル® TBB ドキュメント(https://www.threadingbuildingblocks.org/documentation) を参照してください。

最適化に関する注意事項

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

改訂 #20110804

関連情報