22

大規模なプロジェクト (GCC や Linux カーネルなど) をできるだけ速くコンパイルしたいとします。ハイパースレッディング機能を備えた CPU (Intel Core i7 など) は、ハイパースレッディングを有効または無効にすると、コンパイラの実行速度が速くなりますか? これをテストする公開されたベンチマークはありますか?

ハイパースレッディングに関する私の理解では、各コアは 2 つ (またはそれ以上) のプロセスから命令を選択できます。これにより、通常、機能ユニットがアイドル状態になる可能性が低くなるため、コアの効率が向上します。ただし、同じコアで実行されているプロセスはキャッシュなどのリソースを共有し、互いに干渉する可能性があるため、パフォーマンスが低下する可能性があります。実際にパフォーマンスが向上するかどうかは、ワークロードによって異なります。

では、コンパイラのワークロードの場合、パフォーマンスは向上しますか? もしそうなら、いくらですか?

4

2 に答える 2

27

Ubuntu 8.04 x86 での coreutils-8.4 のコンパイル

HT が有効な Intel Atom 1.6 GHz:

~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make > /dev/null

real    2m33.375s
user    2m22.873s
sys     0m10.541s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make -j2 > /dev/null

real    1m54.707s
user    3m26.121s
sys     0m13.821s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make > /dev/null

real    2m33.372s
user    2m22.753s
sys     0m10.657s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make -j2 > /dev/null

real    1m54.851s
user    3m26.145s
sys     0m13.685s
~/coreutils-8.4$

そのため、ハイパースレッディングは実行時間を 75% に短縮します。これは、処理能力が 33% 向上することに相当します。(すべてがメモリキャッシュにあることを確認するために、それらを2回実行しました。)

make -j2そして、これだけでは Ubuntu 8.04 x86 での coreutils-8.4 のコンパイル速度が向上しないことを示す制御実験があります。

シングルコア コア 2 クアッド 2.5 GHz VM (HT なし):

~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make > /dev/null

real    0m44.453s
user    0m38.870s
sys     0m5.500s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make -j2 > /dev/null

real    0m45.131s
user    0m40.450s
sys     0m4.580s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make > /dev/null

real    0m44.621s
user    0m39.090s
sys     0m5.340s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make -j2 > /dev/null

real    0m45.165s
user    0m40.390s
sys     0m4.610s
~/coreutils-8.4$
于 2010-04-01T23:41:51.483 に答える
0

それはすべて、コンパイラがマルチスレッド用に作成されているかどうかによって異なります。もしそうなら、OSはコンパイラのスレッドのさまざまな部分をさまざまなコアにスケジュールできるため、間違いなくハイパースレッディングは物事を少し高速化します。コンパイルは通常、処理負荷が高いというよりも I/O バウンドであるという Ken の意見に同意します。そのため、数百のコアを備えた高速プロセッサよりも、高速ハード ドライブを使用する必要性の方が高くなります。

于 2010-01-06T18:15:55.127 に答える