Threadripper の Gaussian16 ベンチマーク

Share This:

前回の記事では、Threadripper の自作 PC を紹介しました。

この記事では、実際に Threadripper 上で Gaussian 16 を動かした時の様子を紹介します。今回の記事ではデータ数が少ないですが、時間を見つけてさらに詳細なベンチマークを取っていきたいと考えています。

管理人が実際に使用してみての感想としては、Threadripper は”買い”だと思います。
かなりコスパが良いと感じました。また、その気になれば ECC 対応にすることも可能ですし、オーバークロックもできます。

英語版Ryzen Threadripper Gaussian16 Benchmark


パソコンのセットアップ

前回の記事でも書きましたが、今回使用した機材は以下になります。

CPU: AMD THreadripper 1950x, 16 core, 3.4 GHz
m/o: MSI Gaming AMD Ryzen ThreadRipper Extended-ATX Motherboard (X399)
SSD: SanDisk SSD PLUS 240GB Solid State Drive (SDSSDA-240G-G26)
RAM: Corsair Vengeance LPX 16GB (2x8GB) DDR4 DRAM 3200MHz (CMK16GX4M2B3200C16)
GPU: Radeon x550 2GB
冷却: ARCTIC Liquid Freezer 240

今回は、管理人が個人的に慣れ親しんでいる Linux のディトロである Fedora26 を OS としてインストールし、その後 Gaussian16 の AVX2 版をインストールしました。

今回のベンチマーク測定をするにあたり、メモリは 3200 GHz にオーバークロックし、SMT (Intel でいう Hyper Threadding) は OFF にしました。

また、比較対象としては Intel core i7-7700, 64 GB のメモリを積み、Gaussian 16 の AVX2 版をインストールしたデスクトップ PC と 管理人が主力計算機として使ってきた Intel Xeon E5-2667 v2 (8cpu-64core)に Gaussian09 E をインストールしたものを用いました。

計算方法

vomilenine という天然物の構造を Gauss View 上で適当に作り、構造最適化と振動計算を行いました。原子数は 47 で、C,H,N,O で構成されています。実際に計算に用いられる平均的な分子サイズだと思います。

以下の input file を用いて計算しました。

Intel core i7-7700 では、4 core 用いた場合の計算、Intel Xeon E5-2667 v2 では 4core と 8 core 用いた場合の計算、Threadripper では 4core, 8 core, 16 core 用いた場合の計算を行いました。

メモリは 1core 1GB を割り当て、4 core の場合は 4 GB、16 core の場合は 16 GB としました(実際にはこんなにメモリ必要ありませんが、、、)。

Intel Xeon E5-2667 v2 には gaussian16 を入れていませんので厳密には比較できないのですが、g09 で計算する場合は、int=grid=ultrafine と scf=tight を付け加えて計算しました。

結果

測定の結果は以下のようになりました。

Xeon E5-2667 vs で用いた g09 では log の最後に elapsed time が表示されないので、cpu time をコア数で割ったものを赤字で表記しております。

次に、時間の単位をすべて秒に統一してグラフにしました。まずは、三種類の CPU の性能差比較です。

4 core 用いた計算の時にもっとも性能が良いのは core i7-7700 でした。その次に良いのは Threadripper 1950X でした。PassMark Software の single thread のベンチマークをそのまま反映した結果でした。

Ryzen は計算が遅いという噂も耳にしていましたが、今回の結果からは大差無いと言えそうです。Xeon E5-2667 v2 と Threadripper の速度差を g16 と g09 の速度差と思う人かもしれませんが、あまり関係ないと管理人は考えています。また、後ほど述べますが、Threadripper では AVX2 による計算速度の向上はありません。

1 job に 4 コアまでしか使わず、早さにすごくこだわるのであれば、Intel Core i7-7740Xcore i9-7900X などを購入するのが良いかもしれません。

並列化効率が低い

先ほどのグラフで少し気になったのが、8 core 用いた場合に Threadipper と Xeon の計算速度が逆転している点です。 そこで、Threadripper と Xeon E5-2667 v2 の並列化効率について調べてみました。

<注>その後、検討を重ねたところ並列化効率が改善しました。以下の記事もお読みください。
参考:Threadripper 並列化効率改善?【gaussian16】

cpu time でグラフを作ると以下のようになります。

Threadripper では 4 コア から 8 コア へとコア数を倍にしても計算速度は約 1.6 倍にしかなりません。また、8 コアから 16 コアへとコア数を倍にした時は計算速度は 1.3 – 1.4 倍にしかなりませんでした。

16 コア全部使うのは、並列化効率が非常に悪いということがわかりました。なので通常時は 1 job 4 コアまたは 8 コアで運用していくのが良いと思います。でも、まだ普通に組んだだけなので、まだまだ改善の余地はあると考えています。もしも並列化効率を上げる良い方法がありましたら、コメント欄等で教えてください。

しかし、並列化効率が低いとはいえ、16 コア使うと 8 コア使った時よりも短時間で終わるため、
”論文の revise が近い!この 1 job にすべてを賭ける!”
みたいな時は16 コア使うのが良いと思います。

AVX2 の効果は無い?

Ryzen は AVX2 が遅いと様々なベンチマーク等で報告されています。
今回は、SSE4 と AVX2 を比較しましたが、大差ありませんでした。むしろ SSE4 の方が若干早いような気さえします。誤差レベルかもしれませんが、、、。とりあえず、AVX2 による速度向上は、様々なベンチマークで報告されているように、無さそうです。

こうなると SSE4 と AVX の比較もしてみたくなるところですが、残念ながら AVX はまだテストしていません。今度テストしたら、この記事に追記しておきます。

まとめ

4 コアでの計算速度比は PassMark Softwares の single thread benchmarkをそのまま反映した結果でした。

ベンチマークを測定する前は、”Ryzen は AVX2 が遅い、演算が遅い” と言う噂を聞いていました。しかし、実際に gaussian で計算する上では全く気になりませんでした。実用に耐えうる性能です。

また、コストパフォーマンスが高いと感じました。single thread 性能が高い 4 core の CPU を 16 core 分揃えるとなると、マザーボード、メモリ、電源と 4 node 分揃えなくてはならなく、トータルとして高くなってしまいます。Threadripper なら、$2,000 以下で一台計算機ができてしまいます!

ちなみに、管理人がこれまで使ってきた Intel の Xeon E5-2667 v2 は 1cpu 8コアで 28 万円しました!しかし、Threadripper は倍の 16 コアで同等の single thread 性能を持つにも関わらず、約 11 万円 ($999) で買えてしまいます。5 分の 1 程度の価格です!

並列化効率が非常に低いですが、まだ PC を組んだばかりなので、改善の余地は多分にあると考えております。

個人的には、Threadripper は非常にオススメです。

関連する記事

汎関数一覧に戻る

計算手法に戻る

コメントを残す(投稿者名のみ必須)