今年発売された gaussian16 ですが、様々な新機能が追加されましたが、その一つに GPU 対応になったということがありました。昨今のディープラーニングブームや AI、自動運転などあらゆる場面で GPU は使用されています。また、先日の記事:GPU を用いた並列計算 で紹介したように計算化学の分野でも GPGPU は重要になってきております。
つい最近、JCTC に OpenCL を用いた ab initio 計算の高速化に関する論文が出ましたので、管理人が気になった部分だけを簡単に紹介します。
“Employing OpenCL to Accelerate Ab Initio Calculations on Graphics Processing Units”
Jörg Kussmann and Christian Ochsenfeld
J. Chem. Theory Comput. 2017, 13, 2712–2716. DOI: 10.1021/acs.jctc.7b00515
概要
今回紹介する論文では、AMD の FIREPRO 3D W8100 と NVIDIA の Tesla K40 と Titan Black を比較しています。計算ソフトウェアには、著者らが開発した FON を用いています。
CUDA vs OpenCL
GPU の有名な販売メーカーには二社あります。 NVIDIA と AMD です。現在、GPGPU の分野では NVIDIA が大きくリードしているように思います。なぜなら、CUDA という非常に使いやすい GPGPU のプラットフォームを用意したからです。Amber や gaussian16 を始め、多くの計算化学用ソフトも CUDA 対応になりつつあります。
一方、 AMD の GPU を用いる場合には OpenCL を使う必要があります。CUDA も OpenCL も C 言語をベースとしたプラットフォームです(管理人は CUDA でプログラムを書いているので、OpenCL については詳しくありません)。
今回の論文によると、CUDA と違い OpenCL はスクリプト言語に少し似ているところがあるそうで、カーネルがプログラム実行中に GPU アーキテクチャに合わせてコンパイルされるようです(オンラインコンパイル)。これは、方位量子数 l が大きな系の時に計算速度低下の主要因になるそうです。
そのため、今回筆者らは GPU の種類に合わせてあらかじめ kernel をコンパイルしておくという方針をとったようです(オフラインコンパイル)。
最新の CUDA 8.0 では分かりませんが、以前のバージョンの CUDA にも -arch オプションを用いることによりコンパイル時にアーキテクチャの指定ができた気がしますが、そのことについては触れられていませんでした。。。
NVIDIA vs AMD
一般消費者にとって NVIDIA と AMD のどちらかを購入するかを判断する一つの大きな要因はコストパフォーマンスだと思います。NVIDIA は非常に高性能な GPU を販売しています。性能だけを追求するならば NVIDIA だと思いますが、値段も高いです。特に professional 用の Tesla シリーズは個人では購入を躊躇するくらい高価です。
一方の AMD は NVIDIA に比べれば格安ですが、性能もそこそこ高いです。本当にハイエンドを目指すとしたら NVIDIA かもしれませんが、AMD でも十分に計算させることができます。今後 Vega や Navi でどれくらい性能が伸びるか期待しています。
今回使用した GPU の性能比較表(論文中 Table1)を見ると memory size において AMD は NVIDIA に負けています。特に FIREPRO では shared memory が 32 kb なのに対し Tesla では 48 kb です。この shared memory のサイズも方位量子数 l が大きな系の時の計算速度に影響を与えるそうです。
2電子反発積分アルゴリズムの選択
著者らによると McMurchie−Davidson または Rys-quadrature のどちらのアルゴリズムを選ぶかというのが計算速度に大きく関わってくるそうです。
Rys-quadrature は 1976 年に Rys らによって提案された手法(参考文献4 – 7)、 McMurchie−Davidson のアルゴリズムは、漸化式を用いて効率化するもので 1978 年に提案された手法です(参考文献 8)。
従来の CPU を使った計算に適したアルゴリズム、例えば Gill と Pople によって提案された PRISM アルゴリズム(参考文献 9)では FLOPS などを用いて性能の評価が行われているそうです。しかし、GPU を用いた計算の計算効率比較に際しては FLOPS はあまり有効ではないようです。ほとんどの積分のルーチンはメモリと密接に関わっているかららしいです。
今回の論文では 16 base pair までの adenine-thymine DNA fragments の計算を PBE0/def2-SVP で行い計算効率を比較したようです。その結果、CUDA では McMurchie−Davidson を使った時に計算効率がよく、AMD では Rys-quadrature を使った時に効率が良かったそうです。
結果
実際の計算効率の比較に関しては今回の論文を読んでもらいたいのですが、AMD の FIREPRO 3D W8100 が NVIDIA の GPU と同じかそれ以上のパフォーマンスを出しているという結果が得られました。また、TDDFT の計算において GPU を使うと、効率が劇的に上がったようです。
しかし、今回使用した NVIDIA の Tesla K40 は Kepler アーキテクチャの GPU です。Keplar 世代から Pascal 世代へと移る時に性能が大きく向上したので、Pascal 世代の GPU はもっと爆速になっていると思います(ちなみに、残念ながら gaussian 16 A.03 は Pascal 世代の GPU 未対応です)。
また、AMD の FIREPRO 3D W8100 も 2014 年に発売されたものです。最近 Vega や EPYC、Threadripper の発表で注目を浴びている AMD ですが、Profesional シリーズとして Polaris 世代の Radeon Pro WX3100 と WX2100 を発売すると先日発表しました。これらは、ストリームプロセッサ数があまり多くないモデルですが、Vega 世代の Radeon Pro Vega 64 と 54 も発売されるのではないかという噂が出ています。これらのストリームプロセッサ数はそれぞれ 4096、3584 であり、22-25 TFLOPS 出るとされています!!
いずれにしても、今後は GPU を使って計算していくのがスタンダードになっていきそうな気がしました。量子コンピュータで計算化学を行う研究も進んでいますし、まだまだ計算効率は上がっていきそうな感じですね。
記事中に間違い等ある場合は、コメント欄、twitter またはメールにてお知らせいただけると幸いです。
参考文献
- “Employing OpenCL to Accelerate Ab Initio Calculations on Graphics Processing Units”
Jörg Kussmann and Christian Ochsenfeld
J. Chem. Theory Comput. in press. DOI: 10.1021/acs.jctc.7b00515 - 【AMD】Radeon Pro WX3100とWX2100を発表
- “Vega”世代のRadeon Pro Vega 64と56の存在が明らかに
- “Evaluation of molecular integrals over Gaussian basis functions”
Michel Dupuis, John Rys, and Harry F. King
J. Chem. Phys. 1976. 65, 111; DOI:: 10.1063/1.432807 - “Numerical integration using rys polynomials”
Harry F. King, Michel Dupuis
J. Comput. Phys. 1976, 21, 144-165. DOI: 10.1016/0021-9991(76)90008-5 - “Computation of electron repulsion integrals using the rys quadrature method”
J. Rys, M. Dupuis, H. F. King
J. Comput. Chem. 1983, 4, 154-157. DOI: 10.1002/jcc.540040206 - “A novel Rys quadrature algorithm for use in the calculation of electron
repulsion integrals”
Bernie D. Shizgal
Comp. Theor. Chem. 2015, 1074, 178–184. DOI: 10.1016/j.comptc.2015.10.023 - “One- and two-electron integrals over Cartesian Gaussian functions”
Larry E McMurchie, Ernest R Davidson
J. Comput. Phys. 1978, 26, 218-231. DOI: 10.1016/0021-9991(78)90092-X - “The prism algorithm for two-electron integrals”
Peter M. W. Gill, John A. Pople
Int. J. Quant. Chem.. 1991, 40, 753-772 DOI: 10.1002/qua.560400605
関連する記事
- GPU を用いた並列計算
- gaussian 16 は pascal 世代の GPU に未対応?
- 量子コンピュータで計算化学!?
- 【Enthalpy】B3LYP での計算誤差について【Underestimation】
- Diels-Alder 反応に最適な汎関数はどれ?
- B3LYP とは?
- mPW1PW91 とは?
- M06 / M06-2X とは?
- B88 交換汎関数 とは?
- Minnesota 汎関数はどれくらい正確なのか?
- PBE0 混成汎関数とは?
- 構造最適化の閾値は、何を意味しているのか?
- 量子化学計算で a.u. を使う理由 〜Why Atomic Unit?〜