インテル® MKL 2017 デベロッパー・ガイド
パフォーマンスを最大限に引き出すため、インテル® MKL はメモリー特性の制御と異なるメモリー間のヒープのパーティショニングを有効にする memkind ライブラリー (https://github.com/memkind/memkind) を使用します。デフォルトでは、インテル® MKL メモリー・マネージャーは、第 2 世代インテル® Xeon Phi™ 製品ファミリーの memkind ライブラリーを使用して、マルチチャネル・ダイナミック・ランダム・アクセス・メモリー (MCDRAM) にメモリーを割り当てようとします (MCDRAM の詳細は、https://software.intel.com/en-us/articles/mcdram-high-bandwidth-memory-on-knights-landing-analysis-methods-tools を参照)。MCDRAM にメモリーを割り当てることができない場合、インテル® MKL メモリー・マネージャーは通常のシステム・アロケーターを使用します。
デフォルトでは、インテル® MKL で利用可能な MCDRAM の量は無制限です。インテル® MKL で利用可能な MCDRAM の量を制御するには、次のいずれかの操作を行います。
次の呼び出しを行います。
mkl_set_memory_limit (MKL_MEM_MCDRAM <limit_in_mbytes>)
次の環境変数を設定します。
bash シェルの場合:
MKL_FAST_MEMORY_LIMIT="<limit_in_mbytes>"
C シェル (csh または tcsh) の場合:
setenv MKL_FAST_MEMORY_LIMIT "<limit_in_mbytes>"
この設定は、mkl_malloc などのユーザーが呼び出し可能なメモリー関数を含む、すべてのインテル® MKL 関数に適用されます。アプリケーションで mkl_malloc、mkl_calloc、または mkl_realloc を呼び出すと、これらの関数は常に MCDRAM にメモリーを割り当てようとするため、十分な量を設定する必要があります。
インテル® MKL メモリー・マネージャー関数を独自の関数を置換すると (詳細は、「メモリー関数の再定義」を参照)、インテル® MKL はそれらの関数を使用し、memkind ライブラリーと直接動作しません。
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |