distributed.net 使用CPUについて
投稿者: 無謀庵 / 2016年5月29日 - 13:52 / カテゴリー: distributed.net, PC
私が前からやってるdistributed.netの最短ゴロム定規探索なのだけど、今年からぼちぼち頑張っているので、ついにOGR-28ランキングで世界1000位を突破した。
現在のところ、総参加者は4万人弱。その中で1000位以内だったら、まあ上位2.5%くらいか。
とはいえ、2年3ヶ月のOGR-28プロジェクト実施期間のうち、私が稼働率を上げているのは今年に入ってからの5ヶ月くらい。そんなんで世界の上位2.5%とは、いかに盛り上がってないかがよくわかる。
まあ、誰か参加者増えたらいいなー、と思いつつ、今回の記事は、distributed.netをやるのに適したCPUの考察。
RC5-72に有力なCPU
自分ではRC5-72には興味がないので、細かいところは色々雑だけども。
RC5-72については、GPUを使うOpenCLクライアントが抜群に速い。
GTX750Ti程度でも960Mkeys/s。Core i7-3517U (実働2.8GHz / 2C4T / Ivy Bridge)で25Mkeys/s程度。文字通り桁が違う。
OpenCLクライアントは、グラフィックボードを増設しなくても、最近のCPU内蔵グラフィックなら利用可能。
Intelの内蔵グラフィックでも、Core i5-4440で54Mkeys/sと出た。Ivy Bridge以前のものだと、CPUよりGPUが速い可能性が出てくる。
ましてAMD Fusion APUだとGPUがより強力で、A8-7600のR7は368Mkeys/sと、まったくもってGPUらしいパワーをだしてくれる。
RADEONならStreamクライアント、GeForceならCUDAクライアントを使うともう少し速いかもしれない。ただしドライバーのインストールが必要だったりの手間があり、今回は省略。友人にベンチ取ってくれと頼むのにそこまでやれなくて。
CPUなら、16年2月にプレリリースされたクライアントver. 2.9112.521で、RC5-72用に追加されたAVX2対応コアが強力。実にこれまでの3.6倍という極端な高速化がなされた。
ただしあいにく、AVX2が使えるのはHaswell以降のCore i/Pentium/Celeronのみ。HaswellやSkylakeなら、GPUよりCPUの方が数倍のオーダーで速くなる。
Ivy Bridge以前だと、ハイエンド寄りのCPUだとかろうじてGPUより速い場合もあるかな、という程度と思われる。Fusion APUは比べるまでもなくGPUが速い。
よって、RC5-72をやるなら、予算や消費電力に見合うGPUを増設する。ノートなら、内蔵GPUの利用を試みる。そんなのが最適解。
GPUと、Haswell以降とが飛び抜けて高性能だから、それ以前の古いCPUの単体処理について細かな差を求めたって意味がない状態。
OGR-NGに有力なCPU
RC5-72は正直私は興味ないので、OGRが本題。
OGR-NGについては、以下の様な式で処理性能が出せる。
Pow = Cex × Clk × Cn × HTT係数
- Pow : 処理性能(Mnodes/s)
- Clk : CPU動作クロック (GHz)
- Cn : 物理コア数
- HTT係数: Hyper Threading有効なら1.2、無効なら1
- Cex : CPUアーキテクチャによる1GHzあたりのシングルスレッド処理性能
- Intel Core i (64bit) – 21
- Intel Core i (32bit) – 17
- Intel Core 2 (32bit) – 17
- Intel Pentium M (32bit) – 12
- Intel Atom (Silvermont – 32bit) – 9
- Intel Atom (Bonnell – 32bit) – 5
- AMD Fusion APU (64bit) – 13
- AMD Fusion APU (32bit) – 9
- AMD Phenom II (64bit) – 13
- VIA Nano (32bit) – 11
- VIA C7 (32bit) – 5
例えば、Core i3-6100 (3.7GHz / 2コア / HyperThreading有効) であれば、21×3.7×2×1.2 = 186.48Mnodes/sと出る。これは実効値と遠からぬ数字。
CPU選択の基本
ただただCPUの性能だけが問題になって、SSD/HDDとかメモリーとか、そういうI/O関係の性能はほとんど関係無い。
CPU内部も、廉価モデルと高級モデルの差になっているキャッシュの容量や、ベースクロックの違いなども影響がない。
はっきり影響があるのは、まず動作クロック。クロックには単純に比例して処理速度が速くなる。
長時間連続稼働が前提になるので無茶はしづらいが、オーバークロッキングもやっただけ効果が出る。
もちろん、実際に動作しているクロックが影響する。昔はCPUクロックは書いてる通りだったけど、最近のCPUでは温度や状況に応じてクロックが変わる。
また、distributed.netのベンチマークはシングルスレッドで実行されるので、この時だけTurbo Boostが効いて最高クロックで回ったりする。でも実際に実行する時は全コア同時稼働で、ベンチマークより低いクロックになる。
例えば、Lavie ZのCore i7-3517Uは公称1.9GHzだが、distributed.net実行中は2.8GHzで動いていた。Turbo Boost最高クロックは3.0GHz。VAIO Pro 11のCore i5-4200Uも、公称1.6GHzで、実働2.1GHzだった。Turbo Boostで2.6GHz。
モバイル用Core iシリーズは、実働クロックは実行してみるまでわからない。
それから、マルチコアであれば、コア数にほぼ比例する性能が出る。
ただし、Hyper Threadingは、せいぜい2割増。2割増せば無駄ではないが、劇的とも言いにくい向上。
Core iシリーズだと、モバイル用はi7でもi5でも2コアにHyper Threadingで4スレッド実行のものがほとんどなので、デスクトップ用のi3くらいの性能しか出ない。
このへんをひとつの計算式にまとめたのが上のやつ。
他に、x86 (32bit)クライアントより、64bit OSで、AMD64クライアントを使うと処理能力が上積みされる。64bit版WindowsならAMD64クライアントを使うべし。IntelのCPUでもAMD64を使う。
以上のことから、例え古いローエンドのCeleronでも、デュアルコアモデルならまずまずの戦力になる。かつてハイエンドだったCore 2 QuadやPhenom II X4なども、まだまだ強力。
新規にデスクトップPCを買うなら、クロック高めでデュアルコアのCore i3より、少しクロック低くてもクアッドコアのCore i5が有利。
CPUアーキテクチャについて
上の式にもある通り、CPUアーキテクチャの影響は大きい。
distributed.netのクライアントは、OGRやRC5の解読に使うアルゴリズムを複数持っている。CPUの特性によって最速のアルゴリズムは変わるので、最適なものを自動的に選んでくれる。
基本的には、新しいCPUが有利。RC5-72がAVX2対応で一気に3.6倍高速化したのは、Haswell以降の新しいCPUでしか恩恵を得られなかった。
ただまあ、ここまで極端に高速化することが、そうしょっちゅうあるわけでもない。
Core i / Core 2
OGRについては、Core iならSandy BridgeでもSkylakeでも、クロックあたりの性能は変わらないまま。
Core 2とCore iを比べてさえ、32bit版で比べるとほぼ差がない。Core 2で64bit OSを使ってる環境が手元になかったのでよくわからないが、64bit環境でも差がないのかもしれない。
同じコアのものなら、Core i7でもCeleronでも、クロックあたりの性能は変わらない。
よって、Core 2・Core iは、古いPCを復帰させて投入するにもオススメしやすい。ローエンド品でも、もちろんコア数とクロックなりではあるが、まずまず悪くない性能を出す。
Atom
Atomは、少しややこしい。初期のものは遅かったが、アーキテクチャが刷新された第三世代Silvermontになって、一気にクロックあたりの処理量が2倍近く上昇した。
またSilvermontには、4コアのものが広く使われているのも強み。消費電力も低いし価格も安い。発熱が小さいから、クーリングファンもさほど轟音を立てないし、部屋が暑くなったりもしにくいという大きなメリットがある。
Atom Z3735G (1.33GHz / 4C4T / BayTrail-T)だったら、モバイル用のCore 2 Duo Uシリーズくらいの処理能力を出してくれる。
最近激安WindowsタブレットやノートPCなどによく入ってる、Atom Z3000番台やCeleron J/Nは、そこそこの処理能力を出してくれる。
しかしAtom Z2000番台以前は、残念ながらイマイチ。クロックあたりの性能も低ければ、クアッドコアモデルも存在しない。
Fusion APU / Phenom II
IntelもCore i とCore 2で、クロック当たりの性能は差がなさそうに見えたが、AMDもどうやらPhenom IIとFusion APUとで差がなさそうだ。
シングルスレッド性能は、Fusion APUはCore iの3/5程度しかない。
その代わり、4コアのものを手に入れるには、Intelではi5以上のそこそこ上等な物が必要だが、Fusion APUはローエンド以外は4コア。
シングルスレッドでは負けるけど、コア数が多いものが割安に買えるので、中級以下のクラスだとAMDが優位。
Core 2 DuoとPhenom II X4もそういう関係だった。
その他
その他のCPU、Pentium MとかPentium 4まで古くなると、消費電力に見合った性能が出ないので、投入してもあまり旨味がない。
その世代だとOSもWindows XP以前でセキュリティに問題があるけど、distributed.netとのインターネット通信が必要なので、ネットに繋がっていないのも困る。
古いコンピューターであえて稼働させてみるという遊びはあるけれども。