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

インテル® MKL での高帯域メモリーの使用

パフォーマンスを最大限に引き出すため、インテル® MKL はメモリー特性の制御と異なるメモリー間のヒープのパーティショニングを有効にする memkind ライブラリー (https://github.com/memkind/memkind) を使用します。デフォルトでは、インテル® MKL メモリー・マネージャーは、第 2 世代インテル® Xeon Phi™ 製品ファミリーの memkind ライブラリーを使用して、"メモリーキューブ" ダイナミック・ランダム・アクセス・メモリー (MCDRAM) にメモリーを割り当てようとします (MCDRAM の詳細は、http://wccftech.com/intel-xeon-phi-knights-landing-processors-stacked-dram-hmc-16gb を参照)。 MCDRAM にメモリーを割り当てることができない場合、インテル® MKL メモリー・マネージャーは通常のシステム・アロケーターを使用します。

デフォルトでは、インテル® MKL で利用可能な MCDRAM の量は無制限です。インテル® MKL で利用可能な MCDRAM の量を制御するには、次のいずれかの操作を行います。

この設定は、mkl_malloc などのユーザーが呼び出し可能なメモリー関数を含む、すべてのインテル® MKL 関数に適用されます。 アプリケーションで mkl_mallocmkl_calloc、または mkl_realloc を呼び出すと、これらの関数は常に MCDRAM にメモリーを割り当てようとするため、十分な量を設定する必要があります。

インテル® MKL メモリー・マネージャー関数を独自の関数を置換すると (詳細は、「メモリー関数の再定義」を参照)、インテル® MKL はそれらの関数を使用し、memkind ライブラリーと直接動作しません。

最適化に関する注意事項

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

改訂 #20110804