計算化学を始めたばかりの人と懇親会などでお話しすると、計算機についてよく質問されます。
計算化学を専門にやっているってことは、すごい計算機使っているんですか?
とか
自分はデスクトップで計算しているから計算にすごい時間がかかっているんです。
といったことを言われます。
しかし、同じコア数での計算であればスーパーコンピューター(以下、スパコン)もデスクトップも計算速度にはそれほど差はありません!
今回の記事では、初心者が勘違いしがちなスパコンとデスクトップの性能差について少し解説したいと思います。
目次
Single Thread Performance
今回の記事では、実験科学者にも広く普及している Gaussian での DFT 計算を中心にお話します。
計算の種類によって、計算速度の律速段階は異なるのですが、DFT 計算の場合、計算速度は CPU の性能に依存します。
すなわち、良い CPU を使えば早く計算が終わりますし、性能の低い CPU を使えば時間がかかります。
しかし、世の中には無数の CPU が存在しています。では、どのようにして CPU の性能を調べれば良いのでしょうか?
CPU の性能比較はベンチマークテストで行います。CPU のベンチマークテストとは、異なる CPU で同一のプログラムを走らせたり、同一の計算をさせた場合に実行終了までにどの程度の時間がかかるかを比べたものです。
一番良いのは gaussian の test file を使って異なる CPU を用いた場合の DFT 計算の計算時間を比較することですが、そのようなベンチマークは全ての CPU について出回っている訳ではありません。
そこで、目安となるのが PASSMARK の Benchmark です。多くの種類の CPU を網羅しているため、非常に有用です。
2019 年 3 月 25 日現在の Single Thread Performance のランキングを見ますと、intel Core i9-9900k が一位です。サーバー向けの CPU だと Intel Xeon E-2186G が一位となっております。
4 コアの計算なら intel Core i9-9900k で回すのが現在のところ最速だと予想されます。
コア数が多ければ多いほど速い?
通常 1 job に使うコア数は 4 コアが一般的だと思いますが、8 コア、16 コアと増やしていくと計算速度はどんどん速くなっていきます。
そのため、100 コアとか 1000 コア使ったら一瞬で計算が終わるんじゃないかと勘違いしてしまいがちです。
実際には、計算速度はどこかで頭打ちになります。コア数を増やす際には、並列化率というものを考える必要があります。
並列化率とは、使用するプロセッサ数を倍にした時に、どの程度実行速度が速くなるかの割合のことです。Gaussian16 だと、 4 コアと 8 コアの計算速度を比較すると、だいたい 1.8 倍程度です。単純計算で 2 倍には絶対になりません。
並列化率の限界については、こちらの HPC さんのベンチマーク結果を見てもらえれば更にわかりやすいと思います。例えば、freq 計算の結果を見ますと、32 コア までは計算速度が伸びていますが、44 コアと 32 コアの計算速度はほぼ同じで、頭打ちになっています。
もし手元に 44 コアの計算機があった場合、並列化率を考慮すると、44 コアで 1 job 投げるより、4 コアで 11 job 投げた方が全体としての計算時間は短くなります。
計算資源は多ければ多い程良い!
4 コアが計算効率が良いと言われても、4 コアしか計算資源がないと全く研究が進みません。
計算資源は多ければ多いほど研究は早く進みます。そこで、みんなが目を付けるのがスパコンです。
個人で所有するデスクトップ PC のコア数はたかが知れていますが、スーパーコンピューターには数万コア搭載されていることもあります。
管理人は、計算を行う際にスパコンを使っています。1 日に 300 job くらい投げる日もありますし、job scheduler の限界数以上 job を投げたこともありますし、同時に 2000 コア使用したこともあります。これは、手元のデスクトップでは絶対に出来ないことです。
初心者の方は、スパコンではたくさんの job を投げることができる、8コア、16コアのコア数の多い job を投げることができる、デスクトップとスパコンは計算速度はそれほど変わらないと覚えて下さい。
このような話をすると、なぜスパコンはそんなにコア数が多いのか、スパコンは非常に特殊な構造をしていると思う方も多いかと思います。
でも、もっとシンプルに考えてもらって構いません。一般利用でスパコン上で gaussian を実行するだけならば、スパコンはデスクトップコンピューターが大量に繋がったものと捉えてしまっても構いません。(実際にはそんな単純なものではありませんが。)
もちろん、スパコンの高い並列性を利用した、スパコンでしか出来ない研究もあります。そのような研究に興味のある方は、是非ゴードン・ベル賞を調べてみてください。
最近のハイエンドデスクトップはコア数が多い!
gaussian ユーザーがなぜスパコンを使うかといえば、より多くの計算資源を必要としているからです。
数年前まで、デスクトップコンピューターと言うと、せいぜい 8 コア程度が限界でした。
しかし、近年ハイエンドデスクトップ用のコア数の増加には目を見張るものがあります。(サーバー向け CPU が一般向けに落ちてきただけとの見方もありますが。)
例えば、昨年発売された AMD の Threadripper 2990WX は 32 コアです。Intel の core i9 9980 XE は 18 コアです。驚くべきことにどちらも 20 万円程度と手の届く価格です。
管理人は、core i9 7960x (16コア) を手元に置いて計算しています。正直、その辺のスパコンよりもはるかに高速です。自分が今まで使用した全ての計算機の中で最も高速です。
そのため、急いで仕上げなければいけない計算の時など特に重宝しています。何より素晴らしいのは、スパコンと違って que にならないことです。反対に、急ぎでない場合や、大量に job を投げるような時はスパコンを利用しています。
参考: core i9 7960x 自作計算機【Gaussian】
注意ですが、自分のデスクトップ上で計算を実行する際には、core i7 や core i9 などで利用可能な Hyper threading を Off にしておいた方が計算速度が向上します!詳しくは下の記事を。
参考:【Gaussian 16】デスクトップ PC で並列計算する際の注意点【Hyperthreading】
迷ったら intel の CPU を買え!
CPU は様々なメーカーから販売されています。一般向けには intel と AMD の二択ですが、サーバー向けだと上記の 2 つのメーカー以外にも様々なメーカーから出ています。富士通、ARM、IBM などなど。
どのメーカーの CPU が良いかというのは、自分の使うソフト・プログラムとその CPU の構造の相性もあります。
例えば、管理人は以前富士通の CPU を使ったことがありました。Gaussian で FDT 計算を行うと、構造最適化は普通の速度なのですが、freq 計算は 3 倍以上の時間がかかりました!
スパコンを利用する際には、まずは計算機のスペックを確認する必要があります。また、本格的に計算を始める前にベンチマークテストを行うことをお勧めします。
話が逸れてしまいましたが、もし自分でパソコンを購入して計算するのであれば、intel の CPU がお勧めです。single thread 性能ならばおそらく一番早いのではないでしょうか?
また、intel の CPU だと intel compiler も使用することができます。管理人は、AMD のThreadripper 1950x を持っているのですが、最新の intel compiler を使おうとしたらエラーが出てしまいました。。。
おわりに
以上は、DFT 計算を始めたばかりの初心者向けの内容になります。カバーしきれていない点は多々あります。もし興味を持った人は、自分でコンピューターについて色々調べてみることをお勧めします。そして、できれば自分でコンピューターを作ってみると大変勉強になると思います。
もし、自分のデスクトップで計算すると非常に時間がかかるという場合には、CPU の性能が単純に低いだけと言うことが考えられます。または、コア数の指定の仕方が不適切とか(4 コアしかない計算機なのに inpu ファイルで 8 コア指定しているなど)、特殊なメーカーの CPU を使っているということも考えられます。
G09 E以降は AVX対応になっているのでAVX2とかAVX512が使えるintelのCPUが一番いいですね。ifort+mklで組み合わせると1.7倍ぐらいはやくなりますよ。