最近、Ubuntu 10.04で、浮動小数点を多用するシミュレーションを実行するためのデュアルIntelX5650ワークステーションを購入しました。
各X5650には6つのコアがあるため、合計で12のコアがあります。コードは自明に並列であるため、私はほとんど12スレッドで実行しており、「トップ」を通じて約「1200%」のプロセッサ使用率を観察しています。
BIOSでハイパースレッディングが有効になっているため、オペレーティングシステムは名目上24コアが使用可能であることを認識します。スレッド数を24に増やすと、topは約2000%のプロセッサ使用率を報告しますが、実際のコードパフォーマンスが20/12向上するようには見えません。
私の質問は、ハイパースレッディングが最新世代のXeonで実際にどのように機能するかということです。浮動小数点を多用するコードは、コアごとに複数のスレッドをスケジュールすることでメリットがありますか?ワーキングセットが数倍大きい場合と比較して、キャッシュサイズのオーダーである場合、または実質的なI / O操作(シミュレーション出力のディスクへの書き込みなど)がある場合、答えは変わりますか?
さらに、ハイパースレッディングが有効になっている場合、プロセッサ使用率を「上」からどのように解釈する必要がありますか?