750 likes | 1.03k Views
第一原理分子動力学コード FEMTECK における 計算技法の紹介. 産業技術総合研究所 計算科学研究部門 土田 英二. 構成. 第一原理計算とは ~10分 FEMTECK の数値計算技法 ~25分 有限要素法 一般化固有値問題 多重格子法 最近の展開 ~10分 T2K 上でのベンチマーク 混合精度計算. Part I: 第一原理計算とは. 第一原理計算の紹介. 量子力学に基き、原子・分子から凝縮系まで、様々な系を同じように扱うことができる
E N D
第一原理分子動力学コード FEMTECK における計算技法の紹介 産業技術総合研究所 計算科学研究部門 土田 英二
構成 • 第一原理計算とは ~10分 • FEMTECK の数値計算技法 ~25分 • 有限要素法 • 一般化固有値問題 • 多重格子法 • 最近の展開 ~10分 • T2K 上でのベンチマーク • 混合精度計算
第一原理計算の紹介 • 量子力学に基き、原子・分子から凝縮系まで、様々な系を同じように扱うことができる • ミクロな平均構造や振動スペクトルを計算することができる • 実験と相補的な役割を果たす • 古典的な力場で扱い難い系で威力を発揮 • 分極などの多体効果も自動的に考慮 • 電解質系のシミュレーションに最適の手法
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年前に古典分子動力学法で扱っていた程度の大きさの系を第一原理計算で調べることが可能
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 は直接計算できないので、Newton-Raphson 法を使って反復して求める • 極端に 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