Journal of Computer Chemistry, Japan
Online ISSN : 1347-3824
Print ISSN : 1347-1767
ISSN-L : 1347-1767
速報
FMOプログラムABINIT-MPのOakforest-PACS上での多層並列化と性能評価
渡邊 啓正佐藤 伸哉坂倉 耕太齊藤 天菜望月 祐志
著者情報
ジャーナル フリー HTML

2018 年 17 巻 3 号 p. 147-149

詳細
Abstract

The Oakforest-PACS (OFP) system is a many-core type supercomputer with Intel's Knights Landing (KNL) processors. In this paper, we report the performance of fragment molecular orbital (FMO) calculations with the ABINIT-MP program (to which a three-layer parallelization was made recently) on the OFP system. The effect of hyper-threading in KNL is addressed as well.

1 序論

消費電力対性能の高いスーパーコンピュータとして,インテル社製Knights Landing 世代Xeon Phi (以下KNL)搭載ノードからなるOakforest-PACS (以下OFP)といったメニーコア構成が広まりつつある.そこではノードあたり64∼256という並列数での性能スケーラビリティが課題となる.

筆者らはFMO [1]プログラムであるABINIT-MP [2,3,4]の実行性能をメニーコア環境において高めるべく,多層並列化,具体的には,従来よりも深いレベルのOpenMP並列化を行った [5].これにより大きな並列数構成が使用可能となり,ハイパースレッディング(以下HT)を併用して,さらなる高速化を実現できた.この速報では,その方法の詳細と性能評価を報告する.

2 従来コードの性能限界

ABINIT-MPの従来コード(以下2階層版)はフラグメント間並列処理をMPIで実装している.MP2の積分変換のフラグメント内処理は基底添字s・r・q・pの4重ループで構成されており,s・rのループをMPIまたはOpenMPで並列化している(コンパイル時に選択できるよう実装されている).2階層版はChignolin/STO-3Gにてフラグメント内処理がKNL1ノードあたり64スレッド並列以上で性能向上の限界となった.また,TrpCage/6-31G*では,系が大きく基底関数系が6-31G*のためSTO-3Gより処理が増え,64スレッド並列以上でメモリ不足で実行できなかった.

3 多層並列化

KNLのノード上の全てのコアを有効活用するために,フラグメント内処理のs・rのループをMPIで並列実行し(以下2層目),その内側にあるq・pのループをOpenMPで並列化した(同3層目,Figure 1) [5].これにより2層目で性能飽和しない並列数を選択しながら,OpenMPの共有メモリを用いてメモリ消費増加を必要最小限におさえつつ,さらなるスレッド並列数を3層目で使用可能となる.以下,今回のコードを3階層版と呼ぶ.

Figure 1.

 3-layer hybrid paralellization

4 性能評価

KMP_AFFINITY=compact等の単純なスレッド割付指示では,KNL上の使用物理コアに偏りが生じ,HTによる加速効果を見極めにくい.そこでIntel MPIのI_MPI_PIN_DOMAIN環境変数による論理コアのドメイン定義,使用しない論理コアを指定するオプション,そしてKMP_AFFINITY環境変数を用いて,スレッドに割り付ける論理コアおよびハイパースレッドを明示的に限定し,HTによる速度向上が明らかとなるよう測定をOFP上で行った. 3層目のOpenMPスレッド並列/コア数を1・2・4に変化させた際の,TrpCageのFMO2の経過時間をFigure 2に示す.基底関数系は6-31G*,AVX512有効バイナリ,MCDRAMはcacheモードでの結果である.系列名には,1ノードあたりの最外側MPI並列数 x 2層目のMPI並列数を記載した.

Figure 2.

 Timing results of TrpCage

同一ノード数・同一コア数・同一スレッド/コア数の条件で,MPIプロセス数の組み合わせによっては,従来の2階層よりも高速に動作した.3階層版では,最外側MPI並列数よりも,2層目のMPI並列数を増やす方が速い.3階層版では,HTの効果が小さいか,または,むしろ遅くなっており,その度合いは,中層のMPI並列数を増やすほど大きくなっている.これらの結果から,3階層版コードによってOFPの演算器の稼働率を向上させる機会を作ることができたと思われる.2階層版では,配列参照における変数アクセス待ち等によって演算器が空いているタイミングがあり,HTによりスレッド/コア数を増やして実行することで,演算器の空きが使われて速くなったと考えられ,3階層版では,深いレベルのOpenMP並列化によって,この待ちが少なくなったと推測される.3階層版で4スレッド/コア時にむしろ遅くなってしまうのは,3層目と深度が深い部分で並列化したことによるOpenMP並列処理のオーバーヘッドが原因であろう. 同様の測定をHIV-1にて8ノードを使用して行った(Figure 3).2階層ではスレッド/コア数が1に対し2で1.39倍,4で1.57倍の速度向上であった.この加速は,Knights Corner上で分子軌道計算プログラムSMASHを測定した前報告 [6]の値と比較して同程度の加速であり,同種の計算処理を考えれば妥当と言える.一方,3階層では,スレッド/コア数が1のときは2階層よりも少々速くなったものの,2・4では3階層の方が遅く,TrpCageと比べて,3階層でのHT効果は良くない.フラグメント数が20であるTrpCageに比べ,HIV-1のフラグメント数が203と,10倍多いため,実行すべき演算の数が増え,演算器の空きが埋まりやすく,過剰にOpenMP並列の数を増やしたオーバーヘッドが現れやすくなったと考えられる.

Figure 3.

 Timing results of HIV-protease

5 おわりに

メニーコア環境でのFMOプログラムABINIT-MPの実行性能を高めるべく,より深いレベルのOpenMP化をABINIT-MPに施し,増えたスレッドをHTで多く同時に実行させることで,一部の対象系で高速化が見られた.今後,多様な系でさらなる高速化を図るべく評価・検討を重ねていく.

Acknowledgment

本研究開発は,文科省ポスト「京」プロジェクト(FS2020)重点課題6,並びに科研費(16H04635)からの支援を受けている.

参考文献
 
© 2018 日本コンピュータ化学会
feedback
Top