4E19

大規模分子の超並列計算のための MPI/Open-MP ハイブリッド
並列 RI-MP2 アルゴリズム（理研 AICS）河東田 道夫，中嶋	  隆人MPI/Open-MP hybrid parallel RI-MP2 algorithm for
massively parallel computations of large molecules(RIKEN AICS) Michio Katouda, Takahito Nakajima【序】近年のスーパーコンピュータや PC クラスタでは、マルチコア CPU を複数搭載したノードを高速なインターコネクトで接続したマルチコア超並列クラスタシステム構成が一般的となっている。現在では京コンピュータのような数万ノード・数十万 CPU コアで構成された 10 ペタフロップス級の演算性能を持つスーパーコンピュータも登場している。これらのシステムを活用し、ナノ分子の機能のデザインや生体系の現象解明のために巨大分子の量子化学計算を行うためには、マルチコア超並列クラスタシステムの性能を十分に引き出せるアルゴリズムとプログラムの開発が重要となっている。特にナノマテリアルや生体分子といった巨大分子内では、ファンデルワールス力などの非結合相互作用が重要な寄与をするので、これらの相互作用を高精度に記述することが可能な Møller–Plesset 2 次摂動(MP2)法に基づいた計算が必要となる。本研究では、巨大分子の RI-MP2 計算を京コンピュータなどのマルチコア超並列クラスタシステム上で高速・高並列に行うことを目的として、RI-MP2 法のMPI/Open-MP ハイブリッド並列アルゴリズムの開発を行った。
【方法】発表者らは以前の研究において、大規模分子の MP2 計算を PC クラスタ上で行うことを目的として、RI-MP2 法の並列計算アルゴリズムおよびプログラムの開発を行った[1,2]。しかしながら、以前に開発した RI-MP2 並列計算アルゴリズムでは、MPI あるいは TCP/IP ソケットを利用したプロセス並列化のみを行ったため、マルチコア超並列クラスタシステムのノード内共有メモリ・通信インターフェースを効率よく使って高並列性能を出すことが困難であった。また、プロセス並列のタスク分割を占有軌道を用いて行なっていたため、並列度が占有軌道数で制限され、プロセス数の増加に対して並列性能が頭打ちになることも問題となっていた。そこで、本研究ではノード間の並列化を MPI、ノード内の並列化を Open-MP で行う MPI/Open-MP ハイブリッド並列化を行い，仮想軌道を並列分割軸に使うことで、これらの問題を解決することが可能な並列アルゴリズムを開発した。
図 1 に本研究で開発した RI-MP2 計算の並列アルゴリズムの概要を示す。この図に示す 3 つのステップの処理について、最外のループを MPI でプロセス並列を行なっている。また、ステップ 2、3 の処理では、以前に開発したアルゴリズムでは占有軌道のループを MPI 並列化を行なっていたが、本アルゴリズムでは仮想軌道のループが最外になるようにループの順を入れ替えて MPI 並列化を行った。一般に仮想軌道の数は占有軌道の数より多くなるので、以前のアルゴリズムと比べて並列プロセス数を増やした場合でもより高い並列性能を達成することが可能である。MPI 並列化された最外ループの内側で行われる処理については Open-MP でスレッド並列化を行っている。RI-MP2 計算では計算コスト的にボトルネックとなる 3 中心積分の積分変換や 4 中心積分生成計算は行列-行列積計算の形で処理を行うことが可能である。そこで、本アルゴリズムを実装する際には、Intel Math Kernel Library などの最適化 BLAS ライブラリに実装されているスレッド並列版の DGEMM を用いることで高いスレッド並列性能および演算性能を容易に達成することが可能である。
[Step 1]Loop µ (MPI parallelization)
Evaluation of three-center AO ERIs (µν|l)(OpenMP parallelization)
1/3 and 2/3 index transformation of (µν|l)by threaded DGEMM in BLAS (OpenMP parallelization)(ia l ) = !C! a !Cµi (µ! l )!

[Step 3]Loop batch of virtual orbital A (MPI parallelization)
Read B ia (a ! A)nLoop bProc
Send B ia to Myrank- bProc nodenReceiveµ

Loop a ! A (MPI parallelization)
Loop b ! Myrank + b (MPI parallelization)

End Loop µProc[Step 2]
Evaluation of two-center AO ERIs (l|m)(OpenMP parallelization)
Cholesky decomposition and inversion of (l|m)
by threaded LAPACK (OpenMP parallelization)
Loop virtual orbital batches A (MPI parallelization)
3/3 index transformation of (ia|l)by threaded DGEMM in BLAS (OpenMP parallelization)

Bnia = " (ia l ) (l n )!1/2

Bnjb from Myrank+ bProc node

Evaluation of four-center MO ERIs by threaded
DGEMM in BLAS (OpenMP parallelization)(ia | jb) = ∑ Bnia Bnjb
nEvaluation of MP2 correlation energy E(2)(OpenMP parallelization)
End Loop b
End Loop a
End Loop bProc
End Loop A(a # A)l

End Loop A

図 1. MPI/Open-MP2 ハイブリッド並列 RI-MP2 アルゴリズム【結果】今回開発したアルゴリズムを分子科学計算プログラム NTChem に実装し、理研 RICC 超並列クラスタシステムで並列性能のテストを行った。図 2(a)にタキソールの RI-MP2/cc-pVDZ 計算の CPUコア数に対する高速化率を示す。MPI/Open-MP ハイブリッド並列化によりフラット MPI 並列化の場合より高速化率が大きく向上した。また、MPI 並列化の分割軸を仮想軌道にしたことにより、分割軸を占有軌道とした時よりも高速化率が大きく向上した。図 2(b)はバッキーキャッチャーC60@C60H28 のRI-MP2/cc-pVTZ 計算の高速化率を示す。512 ノード 4096CPU コアを用いた場合でも 2621 倍の高速化率を達成した。また、512 ノード 4096CPU コアを用いた場合、C60@C60H28 の計算は 15 分で終了した。本研究で開発したアルゴリズムおよびプログラムを用い、京コンピュータなどの超並列計算機上で数千 CPU コアを用いて計算を行うことにより、300 原子程度のサイズの分子の RI-MP2 エネルギー計算をルーチン的に実行可能であり、ナノマテリアル設計などへの応用が期待される。
&!#)"

(b)

*+,-./01*+"2345"*."/6467707"*+,-./01*+"8995"*."/6467707"'%("!"##$%"&%!)*"+*!,+*!-$&":76;"*+,"2345"*."/6467707"./012"'!($":76;"*+,"8995"*."/6467707",<067"!"##$%"&

(a)

$&#"

#$%"

$!%&"

#!$%"

!"
!"

#$%"
$&#"'%("'%()#*+,-+./0+1,*#&&!#)"

!"
!"

#!$%"
$!%&"
'!($"'%()#*+,-+./0+1,*#&%!)*"

図 2. MPI/Open-MP ハイブリッド並列 RI-MP2 アルゴリズムの高速化率(a) タキソール RI-MP2/cc-pVDZ (1123AOs)(b) C60@C60H28 RI-MP2/cc-pVTZ (3992AOs)[参考文献] [1] M. Katouda and S. Nagase, Int. J. Quant. Chem. 109, 2121 (2009).
[2] A. P. Rahalkar, M. Katouda, S. R. Gadre, and S. Nagase, J. Comput. Chem. 31, 2405 (2010).