ハイパースレッディングを使用して 2 つの異なるシステムで omp コードを実行する方法で観察された違いを調整しようとしています。システム 1 は、Centos 5.4 を搭載した Intel Xeon X5680 (12 個の物理プロセッサ/24 個の論理プロセッサ) です。システム 2 は、Windows 7 を搭載した Intel Xeon E5645 (6 つの物理プロセッサ/12 の論理プロセッサ) です。
コードは高度に並列化可能で、各スレッドをうまく活用します。
最初にシステム 1 でコードを実行しました。このコードは、スレッド数が物理コア数を超えるまで、スレッド数を増やして標準的なスピードアップを示しました。物理コアの数を超えた後、スピードアップは一貫性がなくなり、12 スレッドを使用して達成したピーク時のスピードアップよりも低くなりました。最初は、12 個のスレッドが 12 個の物理プロセッサを完全に使用し、最初の 12 個が物理プロセッサを完全に使用していたため、追加のスレッドが役に立たなかったと仮定すると、この動作は理にかなっていることがわかりました。
次に、システム 2 で実行したところ、最大 12 スレッド (物理プロセッサの数の 2 倍) まで速度が向上しました。物理プロセッサの数を超えるとスピードアップが止まると思っていたので、これは不可解でした。そこで、6 つのスレッドで実行を調べたところ、各スレッドは物理プロセッサの半分に制限されており、物理プロセッサを完全に利用するには 12 スレッドを開始するしかないことがわかりました。
私の質問は、システム 1 では単一のハイパースレッドが物理プロセッサを完全に利用できるのに、システム 2 ではハイパースレッドが物理プロセッサの 50% の使用率に制限されているのはなぜですか? おそらくこれは構成オプションですか?
ご回答ありがとうございます。