CPU の数値計算性能について (2005 年)


はじめに

以前いくつかの CPU について数値計算能力を 調べたが新しい CPU がいくつか 登場しているのでそれらを含めて数値計算能力を調べてみた結果を記す. 基本的方針は前回と同様である. 方針,考え方について幾点かコメントする:

CPU 性能の比較

参考のために比較をした CPU の spec を表 2 にまとめておく.

表 2: CPU specs

Manuf. CPU Model # Clock [Ghz] Chipset Memory bus Kernel L2
Intel Pentium 4 3.2GHz 3.2 Intel 875P PC3200 Dual channel 2.6.0 i386 smp 512KB
Intel Itanium 2 1.6GHz 3.2 ? ? 2.6.5 ia64 smp 256KB
AMD AthlonMP x 2 2200+ 1.8 AMD760MPX PC2100 2.4.18 i386 smp 256KB
AMD Athlon64 3200+ 2.0 K8T800 PC3200 Dual channel 2.4.21 x86_64 1MB
AMD Athlon64 3800+ 2.4 K8T800Pro PC3200 Dual channel 2.6.12 x86_64 512KB
AMD Athlon64 4000+ 2.4 K8T800Pro PC3200 Dual channel 2.6.9 x86_64 1MB
AMD Athlon64 dual core 4800+ 2.4 Nforce4 PC3200 Dual channel 2.4.31 i386 smp 1MBx2

CPU の性能を測定するために 2 つ以上 thread を同時に走らせる事により CPU の性能を最大限に使っている. 1 thread だけを走らせる場合は特殊であり, この場合については別個に以下で言及する. まず MD の系の自由度の数とシミュレーションにかかる計算時間を図に示す. 基本的に自由度の数に計算時間が比例することがわかる. この際,計算時間は 2 つ thread を同時に走らせ, CPU 1 個あたりの 計算時間とするので dual core/HTT では 1 thread あたりは半分になっている.
CPU time/job
次に下のグラフで測定した計算時間を用いて CPU の性能を比較する. わかりやすくするため P4-3.2 を「業界標準」として 1 に規格化する. よって 2 であれば P4-3.2 の性能の 2 倍あるということである. 横軸は上のグラフと同様に横軸は自由度の数である.
CPU time/job
性能の比較について気が付く点をまとめてみる.


1 thread を走らせた場合の性能について

1 thread を走らせた時に同じ CPU で 2 thread 以上走らせた場合に比較し てどれだけ性能を引き出せるか以下の表にまとめた. HTT, Dual core を持つ CPU の本来の 性能を 100% 使うためには 2 thread 以上同時に走らせることが必要である. 2 thread 以上であれば性能は基本的に同じであるので 1 thread 走らせる場 合がむしろ特殊とも言える. その一方,主に 1 thread しか走らせないという状況は普通に生じるのでその性能を調べた. 参考のために dual CPU (物理的に CPU が 2個ある場合) も含めた.

表 1: 1 thread 時の性能

Manuf. CPU Model # Clock [Ghz] Chipset 1 thread 時の性能 Comments
Intel Pentium 4 3.2GHz 3.2 Intel 875P 0.74 HTT on
AMD AthlonMP x 2 2200+ 1.8 AMD760MPX 0.5 CPU 2個
AMD Athlon64 4000+ 2.4 K8T800Pro 1
AMD Athlon64 dual core 4800+ 2.4 Nforce4 0.5

Comments:

前置きが長くなったが 1 thread だけ走らせた場合の性能の比較も同様に図示する. P4-3.2 GHz を基準にするのは上と同様である. 1 thread の場合についてまとめた通りである. 基本的に dual core では性能は半分になり,HTT では 0.7 倍程度になる. (半分で無いことに注意.) つまり CPU 性能のかなりが遊んでいることになる.

以下に 1 thread を走らせた場合の CPU の性能を図示する. 比較の対象として Pentium4-3.2GHz を 1 と規格化したのは先と同じである. 横軸は自由度の数 (同時に解く微分方程式の数) である.
CPU capabilities

  1. Dual core も single core も 1 thread では同じ性能になってしまう. たとえば 4800+ と 4000+ は基本的に同じ性能である. 細かく見ると私のデータでは若干 4800+ の方が速いが,これは chipset の性能差ということも考えられる.
  2. 2200+ は大きい問題ではメモリバスの速度が遅い影響が出ているようである.
  3. 1 thread に特化するのであれば Pentium4 では HTT off にすることにより 1 thread だけ走らせる場合は 10% 程度性能はアップする. (そのかわり 2 thread 以上走らせる場合は大幅な性能ダウンになる.)
  4. Itanium 2 はクロックが 1.6GHz なのに P4-3.2 程度の速さを持って おり,クロックが半分であることを考えればすごい事である. データのやりとりが 1 回に倍になることを考えれば理論値が叩き出せ ている事になり, P4-3.2 より概ね 1 割程度速いので素晴らしいとも いえる (かも知れない). ただこれはあくまでも価格を無視した場合で あり,価格を考えると数値計算にコストパフォーマンスが良いとはおよ そ言い難い印象を私は受ける.P4-3.2 より速いのも architecture の 素晴らしさから来るのか単に大きい cache から来るのかも明らかでは ない.(問題が大きくなると性能が比較的落ちるのことも suggestive である…) もちろん,他の用途 (eg. サーバ)のための評価には他の要因も大きいので (eg. task switching の速さ,etc) 適しているかも知れない.

まとめ

以下に得られた結論とコメントをまとめる.
Home page for Kenichiro AOKI
Last modified: Sat Mar 11 15:25:39 JST 2006