1

CPU 時間の増加 ( timeCLI コマンドによって報告される) は、ハイパースレッディングが使用されているときの非効率性を示していますか (スピンロックやキャッシュ ミスに費やされた時間など)、または HT の奇妙な性質によって CPU 時間が膨張している可能性はありますか? (例: 実際のコアがビジー状態で、HT が開始できない)

私はクアッドコア i7 を使用しており、OpenMP プログラムの単純に並列化可能な部分 (イメージからパレットへの再マッピング) をテストしています— ロックもクリティカル セクションもありません。すべてのスレッドは、読み取り専用の共有メモリ (ルックアップ テーブル) に少しアクセスしますが、独自のメモリにのみ書き込みます。

 cores real CPU
  1:   5.8  5.8
  2:   3.7  5.9
  3:   3.1  6.1
  4:   2.9  6.8
  5:   2.8  7.6
  6:   2.7  8.2
  7:   2.6  9.0
  8:   2.5  9.7

コア数が 1 ~ 2 を超えると、使用する CPU 時間が急激に増加することが懸念されます。

理想的なシナリオでは、CPU 時間はそれほど増加しないと思います (同じ量の作業が複数のコアに分散されるだけです)。

これは、プログラムの並列化にオーバーヘッドの 40% が費やされているということですか?

4

2 に答える 2

1

これは、CPU 時間の測定方法の人工物である可能性が非常に高いです。些細な例として、100 MHz の CPU と 3 GHz の CPU をそれぞれ 1 秒間実行すると、それぞれが 1 秒間実行されたと報告されます。2 番目の CPU は 30 倍の作業を行う可能性がありますが、1 秒かかります。

ハイパースレッディングでは、1 つのコアがたとえば 2000 MHz で 1 つのタスクを実行するか、たとえば 1200 MHz で 2 つのタスクを実行できるという合理的な (正確ではない) モデルになります。2 つのタスクを実行すると、スレッドごとに作業の 60% しか実行されませんが、両方のスレッドを合わせると作業の 120%、つまり 20% の改善になります。しかし、OS が何秒の CPU 時間を使用したかを尋ねた場合、最初はリアルタイムで 1 秒ごとに「1 秒」と報告され、2 番目は「2 秒」と報告されます。

したがって、報告された CPU 時間は増加します。2 倍未満の場合、全体的なパフォーマンスが向上します。

于 2014-06-08T23:52:37.413 に答える