OpenACC を利用して NVIDIA GPU で VASP 6 を 15 倍高速化
エヌビディアの古家です。
量子化学計算アプリの代表格である VASP (Vienna Ab initio Simulation Package) の Version 6.1.0 がリリースされていますが、これが GPU により高速化されていることをご存知でしょうか?おそらく「え?そうなの?知らなかった…」という方がたくさんいると思うので、ここで簡単に紹介したいと思います。
なお、この記事は NVIDIA Developer Blog “NVIDIA GPU Accelerated VASP 6 uses OpenACC to Deliver 15X More Performance” を基にしています。
VASP 6 における GPU 実装の概要
原子スケール モデリングの世界をリードする HPC アプリケーションの一つである VASP の開発者は、新たに OpenACC を利用して NVIDIA GPU で加速された VASP 6.1.0 を公開しました。
VASP は電子構造計算と第一原理 MD の分野で最も広く使われているコードの一つです。シニア サイエンティストで VASP のリード デベロッパーである Martijn Marsman は、オーダー N³ の RPA (ACFDT や GW 近似)、機械学習力場を使った MD を実行する際に不要であれば第一原理計算を自動的にスキップするオンザフライの機械学習力場、電子フォノン相互作用、MPI + OpenMP 並列化などの GPU 高速化機能を紹介しました。追加機能は製品機能ページにあります。
OpenACC で GPU に移植した VASP 6 は 2020 年 1 月下旬にリリースされましたが、NVIDIA GPU エンジニアリング チームと協力して、世界中の NVIDIA GPU を採用した HPC サイトからのフィードバックを通じて改善を続けていきます。
実空間プロジェクションのブロック化ダビッドソン法 (Exact Exchange 法も含む) と RMM-DIIS 法は、以前は CUDA C で移植されて GPU 上で良い高速化が得られていましたが、VASP は全体が Fortran で書かれているためメンテナンスのコストが増加していました。
OpenACC ディレクティブと NVIDIA ライブラリのコールを組み合わせた新しいアプローチにより CPU と GPU それぞれのコードが統一されるため、𝝘 点のみの一点計算、逆格子空間プロジェクション、直接最小化法に対して GPU 高速化を高い生産性で幅広く適用することができました。さらに Adaptively Compressed Exchange (ACE) や ハイブリッド DFT 計算のダブルバッファリング実装など、VASP に新たに追加された機能の GPU 高速化も可能となりました。パフォーマンスの向上とメンテナンス作業の大幅な削減により、 VASP は今後全ての GPU 移植のプログラミングモデルとして OpenACC を採用するようになりました。
OpenACC による新しい GPU バージョンは以前の実装よりも約 2 倍高速で、従来の CPU のみのシミュレーションと比較して約 15 倍のパフォーマンスを提供し、さらに次の機能が高速化されるようになりました。
- 𝝘 点簡略化
- 逆格子空間プロジェクション
- 直接最小化のための標準およびハイブリッド DFT 理論 (“Damped” および “All”)
- ダビッドソン法を使用してハイブリッド DFT を 3 倍高速化する Adaptively Compressed Exchange (ACE)
- 通信と演算をオーバーラップさせてより良いスケーリングを可能にするためのダブルバッファリング Exact Exchange
VASP 6 は、科学コミュニティに次のエキサイティングな機能も提供します。
- 電子フォノン相互作用
- オンザフライの機械学習力場
- オーダー N³ の RPA (ACFDT や GW 近似)
科学者はどの NVIDIA GPU でも VASP 6 を実行できます。VASP GPU 対応ガイドを使用すると、NVIDIA GPU で VASP 6 を実行するための最新情報を得ることができます。最強の倍精度パフォーマンスは、最新の GPU アーキテクチャである NVIDIA V100 と NVIDIA A100 で利用できます。NVIDIA A100 アーキテクチャの詳細については、NVIDIA Ampere アーキテクチャのホワイトペーパーを参照してください。
おわりに
この記事では、最新の VASP 6.1.0 が OpenACC プログラミングにより NVIDIA GPU で約 15 倍高速化されたということを紹介しました。また新たに GPU 化された機能についても紹介しました。VASP を利用されている方はぜひ試してみてください。
関連情報
VASP (Vienna Ab initio Simulation Package)
NVIDIA GPU Accelerated VASP 6 uses OpenACC to Deliver 15X More Performance