インテル® ハイパースレッディング・テクノロジー (インテル® HT テクノロジー) は、各スレッドが異なる演算を実行している場合、またはプロセッサー上に十分に活用されていないリソースがある場合に特に有効です。しかし、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) は、このどちらにも該当しません。ライブラリーのスレッド化された領域が利用可能なリソースの大半を使用して効率的に実行され、各スレッドで同一の演算を行っているためです。インテル® HT テクノロジーを無効にすると、より高いパフォーマンスを得られることがあります。
インテル® HT テクノロジーを有効にして実行する場合、物理コアの数よりも少ないスレッド数で実行すると、特にパフォーマンスに影響があります。また、例えば、すべての物理コアに対して 2 つのスレッドがある場合、スレッド・スケジューラーは一部のコアに 2 つのスレッドを割り当て、ほかのコアを無視することがあります。インテル® コンパイラーの OpenMP ライブラリーを使用している場合、この状況を回避するために、デベロッパー・ガイドおよびリファレンスを参照して、スレッド・アフィニティー・インターフェイスの最適な設定を行ってください。インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) では、次の設定を適用します。
export KMP_AFFINITY=granularity=fine,compact,1,0
インテル® TBB スレッディング・テクノロジーを使用してプログラムをスレッド化する場合のスレッド・アフィニティーの指定方法は、https://www.threadingbuildingblocks.org/documentation (英語) にある tbb::affinity_partitioner クラスの説明を参照してください。
製品および性能に関する情報 |
|---|
性能は、使用状況、構成、およびその他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) をご覧ください。 改訂 #20201201 |