Transcript ppt

第一原理分子動力学コード
FEMTECK における
計算技法の紹介
産業技術総合研究所 計算科学研究部門
土田 英二
構成
第一原理計算とは
~10分
FEMTECK の数値計算技法 ~25分
有限要素法
一般化固有値問題
多重格子法
最近の展開
T2K 上でのベンチマーク
混合精度計算
~10分
Part I:
第一原理計算とは
第一原理計算の紹介
量子力学に基き、原子・分子から凝縮系ま
で、様々な系を同じように扱うことができる
ミクロな平均構造や振動スペクトルを計算
することができる
実験と相補的な役割を果たす
古典的な力場で扱い難い系で威力を発揮
分極などの多体効果も自動的に考慮
電解質系のシミュレーションに最適の手法
フラーレン( C60 )の構造
Bond length[A]
Bond angle[degrees]
This work
1.39±0.003
1.45±0.002
108.0±0.17
120.0±0.22
Other
1.39
1.44
108
120
Exp.
1.40±0.015
1.45±0.015
フラーレンの電子密度
FEMTECK とは
Finite Element Method based Total
Energy Calculation Kit の略称
10年程前から開発を続けている
現在マニュアルを準備中
内部公開を目指している段階
解説記事:東大情報基盤センターニュース
(2009年2月)
FEMTECK の概略
ソースは 800 Kb (約3万行)
前後処理はC言語 (上のサイズには含まず)
カーネル部分は全てFORTRAN
必要なライブラリ
BLAS/LAPACK/ScaLAPACK
MPI
フラットMPIで並列化されている
最大 4096 並列まで動作確認済(T2K@東大)
応用計算
大規模な不規則系が中心
溶液系、界面など
オーダーN法にも対応している
燃料電池やリチウム電池が重要なテーマ
プロトンジャンプが起きる
古典MDでは扱うことが難しい
リン酸 (Phosphoric Acid)
H3PO4:
肥料や食品添加物、燃料電池の電解質等とし
て広く使われている
E.Tsuchida, J. Phys. Soc. Jpn. 75, 054801
(2006).
シミュレーションの条件
リン酸 48分子
原子数:384、軌道数:768
要素数:64000 (=40^3)
総変数~4億個
周期境界条件
日立 SR8000 を64ノード使って計算した
理論値:500 GFlops、実測値:300 GFlops
分子動力学~8000 ステップ(10ピコ秒)
分子動力学シミュレーション
液相の動径分布関数
振動スペクトル
NAFION (I)
燃料電池の電解質として広く使われている
水和のレベルを変えてシミュレーションを
行い、構造やプロトンのダイナミクスを比較
Y-K.Choe, E.Tsuchida, T.Ikeshoji,
S.Yamakawa, and S.Hyodo,
J.Phys.Chem.B 112, 11586 (2008).
産総研と豊田中研の共同研究(CREST)
NAFION (II)
λ=4.1
λ=12.7
計算の詳細
ナフィオン2本+水48分子
原子数:424、波動関数の数:1022
基底関数の数~50万個
Opteron クラスタ×128プロセッサを使用
理論ピーク性能 = 512 Gflops
約90℃でプロダクション・ラン
1ステップ毎に約5億個の未知数について最適化
1ステップ当たり5分程度かかる
20000 ステップ程度→二ヶ月以上かかる
液体エタノール(C2H5OH)
オーダーN法の実証計算
1125 原子、10ピコ秒
5倍弱の高速化を実現
J.Phys.:Condens. Mat. 20, 294212 (2008).
その他の応用例
水素結合性液体
水・メタノール・ホルムアミド・硫酸水溶液等
リチウム伝導体
炭化水素系高分子水溶液
半導体の表面構造
水・シリコン界面の解離吸着反応
大雑把に言って 15~20年前に古典分子動力
学法で扱っていた程度の大きさの系を第一原理
計算で調べることが可能
Part II:
FEMTECK における
数値計算技法の概略
Numerical Recipes
全17章から成る数値
計算の標準的教科書
FEMTECK では、前後
処理まで含めると、ほ
ぼ全ての章を参考に
している
第一原理計算は非常
に幅広い数値計算の
知識が必要とされる
主要な計算手法
有限要素法
基底関数、座標変換
一般化固有値問題の解法
レイリー商の最適化問題に変換
準ニュートン法(省メモリ版)
ポアソン方程式の解法
マルチグリッド法、共役勾配法
Kohn-Sham 方程式 (I)
ハミルトニアン
電子密度
Kohn-Sham 方程式 (II)
基本的には、一電子に対するシュレーディ
ンガー方程式と同形
一種の固有値問題に相当
以下では全て「周期境界条件」を仮定
原子の位置や他の電子の影響をポテン
シャルとして取り込んでいる
→ ハミルトニアンはψにも依存する
計算の手順
1:原子配置を決める
2:ハミルトニアンを計算
3:ハミルトニアンに対応する波動関数を計算
4:波動関数を使って原子に働く力を計算する
5:力に応じて原子を動かす→1へ
基底関数 (I)
Kohn-Sham 方程式を解くためには、波動関
数ψを基底関数で展開する必要がある
ハミルトニアンは「行列」になる
従来の基底関数:
原子基底(スレーター/ガウス関数)
平面波 (≒スペクトル法)
いずれも物理的な意味を持つ
基底関数 (II)
原子基底
主に孤立境界条件
少数の原子からなる「分子」の計算から発展
平面波
主に周期境界条件
周期性が本質であるような「結晶」から発展
現在、大規模計算のターゲットは「乱雑系」
原子基底や平面波が必ずしも最適ではない
基底関数 (III)
ミクロ系の場合も、三次元で偏微分方程式を解くこ
とに変わりはない
マクロ系の標準解法である差分法・有限要素法が使える
はず
近年、これらの手法が急速に適用され始めた
J. Chelikowski, 1994~(差分法)
E. Tsuchida and M. Tsukada, 1995~(有限要素法)
T. L. Beck, Reviews of Modern Physics 72, 1041
(2000).
有限要素法の特長 (I)
解像度を局所的に変えられる
局所分割や座標変換を利用
基底関数の数を大幅に減らせる
精度を体系的に改善できる
「機械的に」精度を上げることができる
基底関数同士が疎である
計算量は基底関数の数に比例(⇔ 原子基
底)
基底関数は常に線形独立
有限要素法の特長 (II)
オーダーN法に向いている
本来は原子数の三乗で計算量が増える(メ
モリは二乗)
多少の近似の下で、両方ともほぼ一乗にす
ることができる
高い並列性を持つ
最新のスパコンは全て大規模並列
通信の大半は局所的で済む
一次の有限要素展開
各節点での値のみで決まる
三次の有限要素展開
各節点での値と微分で決まる
三次の有限要素基底
各節点においた基底関数の線形
結合で波動関数を近似する
行列の特徴
ハミルトニアン:
三次元の場合、基底関数は最近傍の基底
関数のみと重なりを持つ→H0 は 8*33
=216個の非零成分を持つ疎行列
実際には密行列のブロックに分解する→他の
行列との演算はほぼ BLAS3 を使える
メッシュの取り方 (I)
各原子の近傍では波動関数が激しく振動
する
全空間を一様に分割するのは効率が悪い
何らかの方法で原子付近だけ解像度を上
げたい
局所分割
座標変換
...
メッシュの取り方 (II):局所分割
原子が動いた場合
の扱いが難しい
並列計算機上での
振舞いはあまり芳し
くない
解像度を極端に上
げる時には有力
メッシュの取り方 (III):曲線座標系
原子の近くでメッシュ
が密になるよう座標
変換
原子が複数あるとき
は線形に足合わせる
原子が移動すると
座標系も追随する
並列化し易い
メッシュの取り方 (IV): 座標変換
座標変換の式:
x → x は直接計算できないので、NewtonRaphson 法を使って反復して求める
極端に adaptation が強いと変換不能になる
2倍強程度ならば特に問題はない
電子状態計算の方法 (I)
Kohn-Sham 方程式を有限要素法で展開:
H, F は巨大な疎行列
バンド幅は200程度
有限要素法の場合は基底関数が非直交
なため、一般化固有値問題になる
電子状態計算の方法 (II)
ハミルトニアンの次元をNとすると、N/100
~N/1000 程度の固有値を(下から)求め
る必要がある
N は100万を超えることもある
求めたい固有値の上限と、その次の固有値の
間には通常ギャップがある
• 「半導体」「絶縁体」に相当
• 「金属」ではギャップがない→ここでは考えない
電子状態計算の方法 (III)
直接ハミルトニアンを変形するのはほぼ
不可能なため、反復法で計算する
固有値問題を最適化問題に変換して解く
求めたい固有値が一つの場合:
レイリー商
をψについて最適化すると、最小の固有値
+固有ベクトルが求まる
電子状態計算の方法 (IV)
複数の固有値を同時に求めたい場合:
をψについて最適化すれば良い。ただし
最適化問題に変換するメリット
「一般化」固有値問題であってもほとんど
手間が変わらない
特に求めたい固有値群と、その次の固有値の
間にギャップがある場合には非常にうまく行く
全ての固有ベクトルを同時に求めるので、
ブロック化が容易→ Flops が高い
H が非線形であることを考慮し易い
第一原理計算特有の事情
最適化の方法
準ニュートン法の省メモリ版(Limited memory
BFGS method)を使用
Liu and Nocedal, Math. Prog. 45, 503 (1989).
国内ではマイナーだが、600回以上引用
通常の準ニュートン法の収束性を保ちつつ、メモリ
の使用量を大幅に削れる
非線形問題に関しては共役勾配法よりも高速
• 1反復毎に目的関数を一回、微分を一回、前処理一回
計算すれば良い(一次元の最適化がほぼ不要)
準ニュートン法の収束
波動関数の初期値
最初のMDステップ
粗いメッシュで乱数から解いた結果を利用
(1-way multigrid)
2ステップ以降
直近2ステップ程度の波動関数から「外挿」
簡単な割に効果が大きい
ポアソン方程式の高速解法 (I)
電子状態が更新される度に、電子密度が
作るポテンシャルを再計算する必要がある
周期境界条件の下でポアソン方程式を解く
ことで計算できる
ポアソン方程式の高速解法 (II)
曲線座標系を使っているため、FFTでは済
まない
大規模な線形方程式に相当する
Ax=b の形
A は疎行列 / x, b は通常のベクトル
直接解法は現実的ではない
共役勾配法のような反復法を使う必要がある
ポアソン方程式の高速解法
(III)
共役勾配法は系が大きくなると収束率が
急激に悪化する
多重格子法(マルチグリッド)を用いた解法
系のサイズによらず、一定の収束率を持つ
単独で使うよりも、共役勾配法の前処理として
利用した方が効率が良い
マルチグリッド法 (I)
標準的な「Vサイクル」を使用
S=Smoother, E=Exact Solver
色々な波長の残差を同じ比率で減らせる
S
S
S
S
E
マルチグリッド法 (II)
Smoother
収束率が良い方法は大体逐次性が強い
• ガウス・ザイデルなど
並列性やメモリアクセスの観点からチェビシェフ
多項式を使用している
ブロック対角型前処理
Exact solver
教科書的には厳密に解くべきだが、実際には
Smoother を何回か施せば十分
レイテンシーを抑えられる
ポアソン方程式の収束
Part III:
最近の展開
T2K上でのパフォーマンス
東大センターのT2Kシステム上でベンチ
マークを取った
理論ピーク=9.2 GFlops/core, Quad
ASC-P32 は 4.0 GFlops/core, Dual
理想的には2.3倍速くなるべき
ベンチマークの詳細は東大情報基盤セン
ターニュース(2009年2月)
単体性能(小規模系)
ダイヤモンド結晶のMD(64原子)
P32:112.9秒(PGI+ACML)
T2K:112.7秒(日立+netlib)
T2K:87.8秒(IFC+MKL)
T2K:87.1秒(IFC+ACML)
インテルコンパイラ+ACMLが最有力
P32 から 1.3 倍程度の高速化
• 最新バージョンだともう少し出る
BLAS/LAPACK 部分は理論性能近く出ている
• 系が大きければもう少し改善するはず
並列化の方法
実空間を「曲線座標上で」分割し、各領
域をプロセッサ毎に割り当てている
各プロセッサは同数の要素を持つ
負荷分散はほぼ完全
必要な通信は主に隣接プロセッサ間での、
波動関数等の通信
グローバルな通信は最小限で済む
コア単位でMPI並列
曲線座標系
並列性能(中規模系)
水125分子系のFPMD計算
NUMA は指定した方が良い(特に高並列時)
FEMTECK の profile 分析(I)
100%
80%
その他
通信
O(N)
O(N^2)
O(N^3)
60%
40%
20%
0%
水125分子
水640分子
FEMTECK の profile 分析(II)
O(N) の部分はスカラー演算が多い
行列を生成する部分に相当
規則性が低いので、ベクトル・GPU には不向き
O(N2), O(N3) の部分はほぼ行列演算
極力 BLAS3 を使うようにしている
アクセラレータの恩恵を受けるはず
特に大規模計算では大きな効果が期待できる
混合精度計算の検討 (I)
単精度/倍精度の性能の差
Intel, AMD: 2倍
GPU, CELL: ~10倍
次世代スパコン:??
性能差が大きい程、工夫の余地が広がる
メモリ使用量は半分にできる
通信コストも(ほぼ)半分になる
混合精度計算の検討 (II)
第一原理計算は「反復法」
最終的な波動関数の精度は5~6桁くらい
全てを単精度で計算するのは困難
• 特に収束領域で飽和しやすい
ある程度収束するまで単精度で計算するのは
有力
収束領域でうまく行く方法を検討
グラム・シュミットの直交化 (I)
波動関数の正規直交化
一種のQR分解
「DTRMM」 に相当
グラム・シュミットの直交化 (II)
そのまま単精度化すると大幅に精度が落
ちるので、
と分割して(L は三角行列)
と変換すれば良い
反復部分の効率化 (I)
残差の計算:
本当の式はもっと複雑
桁落ちし易い
収束領域で単精度化するのは困難
反復部分の効率化 (II)
未知変数の更新:
「前処理」部分は収束領域でも単精度化できる
前処理部分に手間をかけて反復回数を減らし、
「単精度化しにくい」残差計算を最小限にしたい
単純な対角型前処理は損と言える
混合精度化による高速化
単精度が2倍速いシステムであれば、
FEMTECK の場合には全体で 20-30%
程度の高速化が期待できる
10倍の差があれば、2~3倍?
単精度と倍精度の性能比は最終的にど
の位に収まる?
まとめ
有限要素法に基く第一原理電子状態計算に
ついて紹介した
大規模・高精度向けの手法
条件が整えば数千台規模の分散メモリ型並列
計算機上でも十分な性能を発揮できる
次世代スパコンに向けてチューニングを進める
予定
濃リン酸の性質
リン以外全ての原子が水素結合に寄与しうる
プロトン移動が頻繁に起こる
→ 液体の構造は複雑
実験を中心に数多くの研究が行われてきた:
古典MD:定性的には良いが、定量的にはかなり
誤差がある
第一原理計算から信頼できる情報を出したい
特に動的な性質やプロトン移動を記述したい
リン酸のまとめ
動径分布関数など、実験と直接比較可能な
物理量は定量的に一致している
リン酸分子の約30%はイオン化している
各プロトンは平均してほぼ1本の共有結合と
1本弱の水素結合を持つ
プロトン移動が頻繁に起きている事を確認
この際、共有結合と水素結合が切り替わる
同時に P-O と P=O も入れ替わる
基底関数の基準
波動関数は通常 singularity を持たない
ある程度高次の基底関数を使った方が、
基底の数を減らせる
ただし、基底関数同士の重なりが増えるので、
ハミルトニアンが密行列に近づく
三次元問題では、三次か五次程度の基底
関数が最適と考えられる