sakurapyon’s blog

sakurapyon’s blog

サーバーの速度 / 指し手生成速度

sakurapyonの居候しているサーバーは /proc/cpuinfo によると Intel(R) Xeon(R) E5645, 2.4GHz, cache 4MB というものらしいんだけど、これって他のマシンに比べてどれだけ速い(遅い)んだろうか?

世の中にはスーパーπランキングというのがあって、CPUごとのランキングが掲載されている。Super Πは整数演算なので、コンピュータ将棋の速度の参考にはなるだろう。将棋の方は置換表とかのメモリアクセスも絡むけど、まあいいや。

Kanada Lab Homepage japanese versionからSuperΠのバイナリをダウンロード。コンパイルオプションがCPUに合ってないかもしれないけど、だぶん条件は皆一緒だろう。419万桁実行するとこんな感じだ。

$ ../super_pi/pi 22
 Version 2.0 of the super_pi for Linux OS
 Fortran source program was translated into C program with version 19981204 of
 f2c, then generated C source program was optimized manually.
 pgcc 3.2-3 with compile option of "-fast -tp px -Mbuiltin -Minline=size:1000 -Mnoframe -Mnobounds -Mcache_align -Mdalign -Mnoreentrant" was used for the
 compilation.
 ------ Started super_pi run : 2012年 4月 15日 日曜日 10:37:48 JST
 Start of PI calculation up to 4194304 decimal digits
 End of initialization. Time=       1.603 Sec.
 I= 1 L=       0        Time=       4.300 Sec.
 I= 2 L=       0        Time=       4.865 Sec.
 I= 3 L=       1        Time=       4.156 Sec.
 I= 4 L=       2        Time=       3.825 Sec.
 I= 5 L=       5        Time=       4.615 Sec.
 I= 6 L=      10        Time=       5.058 Sec.
 I= 7 L=      21        Time=       4.351 Sec.
 I= 8 L=      43        Time=       4.109 Sec.
 I= 9 L=      87        Time=       3.882 Sec.
 I=10 L=     174        Time=       3.910 Sec.
 I=11 L=     349        Time=       4.306 Sec.
 I=12 L=     698        Time=       4.490 Sec.
 I=13 L=    1396        Time=       4.319 Sec.
 I=14 L=    2794        Time=       3.761 Sec.
 I=15 L=    5588        Time=       4.046 Sec.
 I=16 L=   11176        Time=       4.377 Sec.
 I=17 L=   22353        Time=       3.903 Sec.
 I=18 L=   44707        Time=       4.029 Sec.
 I=19 L=   89415        Time=       3.940 Sec.
 I=20 L=  178831        Time=       3.619 Sec.
 I=21 L=  357662        Time=       3.339 Sec.
 End of main loop
 End of calculation.    Time=      91.380 Sec.
 End of data output.    Time=       0.340 Sec.
 Total calculation(I/O) time=      91.720(       8.500) Sec.
 ------ Ended super_pi run : 2012年 4月 15日 日曜日 10:39:20 JST


90秒ちょいか。8bit機の頃を考えると桁違いに速いな。測るたびに1割ぐらい速度が変わるのはvpsのせいだろうなー。

スーパーπランキングの上位はover clockされているものばかり。Core i7 2600k@3.40GHzが44秒なのでクロック比からすると遅めな気がする。

ついでに指し手生成速度: gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
もうちょっと速くならんかなー。AddMovesがまずいんだと思うけど。simkみたいに事前に手を用意して配列アクセスの方が早いだろうか? (悩みどころ)

↓この表間違ってます。追記あり

PGOなし PGOあり
初期局面 614,860.19回/秒 1,689,226.28回/秒 30手
指し手生成祭り局面 465,374.94回/秒 1,038,586.61回/秒 198手

NHK杯見なきゃ…

追記:元の方は-pg残ってたんで測りなおし。ついでに always inline 入れて高速化してみた。

-pg付き PGOなし PGOあり
初期局面 627197.94回/秒 1638551.85回/秒 1766550.37回/秒 30手
指し手生成祭り局面 611332.52回/秒 1379780.42回/秒 1471510.09回/秒 198手

PGOの効果はご指摘の通り1割ぐらいでした。すんません。
always inlineの方が効果ありました(^_^;