昨年末に、Ryzen Threadripper 3990x を購入しました!
いろいろと忙しくて、買ってからずっと倉庫に置きっぱなしでしたが、先週やっと時間が取れたので、組み立てました。
Gaussian を使ったことがある人なら「もっとコア数を多くしたらもっと計算時間が短くなるのではないか?」という妄想を誰でも一度はしたと思います。
そこで、検証してみました!
Ryzen Threadripper 3990x の 64 コア全て使うとどれくらい計算速度が早くなるのか?並列化効率はどれくらいなのか?のベンチマークを取りましたので、以下報告させて頂きます。
環境
CPU: Ryzen Threadripper 3990x
マザーボード:MSI TRX40 PRO WIFI マザーボード
メモリー:CORSAIR VENGEANCE DDR4 3200MHz 16GB x 8 枚 (合計 128 GB)
OS: Ubuntu 20.04
Gaussian 16: rev. C.01
結果(test397)
test397 のファイルを用いて、opt と freq 計算を行いました。
ベンチマークの結果、64 コア使用しても計算時間は短くならないことが分かりました。
意外なことに、むしろ 32 コア用いた時よりも計算時間は長くなっていました。。。
このような結果を受けて、「新しい計算機を購入したらベンチマークテストを行った方が良い」との格言の有効性を改めて実感しています。
もしベンチマークテストをしていなかったら、急ぎの計算の時などに 64 コアの job を回していたと思います。。。遅くなるとも知らずに。。。
並列化効率を犠牲にしても計算時間を早くしたい時は、32 コアが上限だと思います。
それ以上多くのコアを使用しても、逆効果ですね!
通常利用は、16 コアを上限にした方が計算効率が良さそうです。
以下に、並列化効率のグラフを示します。
オレンジ色が理論値で、青色が実測値です。
やはり、32 コアあたりで限界が来ています。。。job scheduler で、1 job に 32 コア以上使えないように設定しておいた方が良いと思います。
結果(vomilenine)
当サイトで以前から行なっている vomilenine の構造最適化と振動計算でも、ベンチマークを取ってみました。
シングルスレッド性能は、同じ zen2 世代の 3900x とほぼ同じでした。並列化効率は、16 コアを使ったところが最大で、32 コア以上になるとガクッと下がります。
32 コアだと、並列化効率は悪いものの計算時間はまだ短くなっています。
しかし、48 コア以上使うとかえって計算時間が長くなっています。。。
これは、計算機のせいではなく、Gaussian のプログラムに問題があるのだと思われます。
Intel の Xeon でも 32 〜 44 コアで頭打ちになるという報告があります。
【メモ】インストールに当たってのトラブル
Ryzen Threadripper 3990x のセットアップに際しトラブルがありましたので、以下メモとして残しておきます。
これまで Ryzen Threadripper 1950x で使用していた環境をそのまま使おうと思い、マザーボードと CPU だけ交換し、スイッチを入れてみましたが、全く反応ありませんでした。
BIOS は、きちんと起動しました。
何回か再起動したり、CMOS クリアなどもしてもダメでしたので、この時点で 1950x の環境をそのまま使うことは諦めました。
その後、新しい HDD を接続し、Ubuntu のインストールを試みました。
Ubuntu の最初の画面が出てきて、Ubuntu のインストールを選択しましたが、その後ずっと黒い画面のままでした。
ここでようやく、Zen2 が Linux に未対応だったことを思い出しました!!!
案の定 BIOS のバージョンを確認すると、一番古いバージョンでした。。。
そこで、MFlash で Bios を更新したところ、無事に Ubuntu をインストールし直すことが出来ました!!
zen2 の Ryzen CPU を使う場合には、Bios のバージョンを要確認ですね!
まとめ
Ryzen Threadripper 3990x は、64 コアもあるモンスター CPU ですが、single thread 性能は 3900x と同等で、計算性能は高かったです。
しかし、Gaussian の計算での並列化効率は、あまり高くなく、16 コアで計算するのがもっとも効率的である印象を受けました。並列化効率があまり良くないのは、Gaussian のソフトウェア側の問題のように考えらます。
雑感
CPU の進化の凄さに改めて驚いています。第一世代の Threadripper 1950x が出た時は、普通の人が買える価格帯で 16 コア CPU が出たと驚いていたのに、もう現在は 64 コア CPU です!
16 コア CPU などはもはや普通で、お年玉貯めれば買えそうな価格です!
また、AMD のシングルスレッド性能の伸びも半端ないです。もうインテルより早いです。
わずか 3 年前に発売された 1950x のシングルスレッド性能は、今や低すぎて、もう使い物になりません。。。(違う用途の計算機や解析用コンピューターとして使っていこうと考えています。)
そういえば、Threadripper 1950x が出た時、自分はアメリカで働いていたなぁ。そんな自分が今や日本に戻ってきて PI として研究室を運営しているなんて、、、時間の流れって早いですね。
これは、計算機のせいではなく、Gaussian のプログラムに問題があるのだと思われます。
>一つのジョブに対して使用するコア数が増えると、計算速度が上がってもコア間の通信に時間を食われてしまうので、効率が下がってしまうと思います。
自分はGaussian以外のソフトも使用したことがありますが、同様の現象が見られます(RyzenではなくXeonですが)。全体のコア数の半分を使用したあたりから計算効率が悪くなります。
これは、計算機のせいではなく、Gaussian のプログラムに問題があるのだと思われます。
>一つのジョブに対して使用するコア数が増えると、計算速度が上がってもコア間の通信に時間を食われてしまうので、効率が下がってしまうと思います。
自分はGaussian以外のソフトも使用したことがありますが、同様の現象が見られます(RyzenではなくXeonですが)。全体のコア数の半分を使用したあたりから計算効率が悪くなります。