next up previous contents index
Next: ユーザーによるFNAN+SNANの定義 Up: O(N)法 Previous: 局在自然軌道による分割統治法(DC-LNO)   Contents   Index

O($N$) Krylov部分空間法

DC法は広範な系に適用でき、数値的にも安定な方法です。しかし金属系に対して高精度な結果を得るには、図16に示したように切り取られたクラスターの サイズを大きくする必要があり、その場合には計算量が増大します。 計算量を削減する一つの方法は、切り取られたクラスターによって定義されるベクトル空間を次元数がより小さなKrylov部分空間[43]に マッピングすることです。 次のキーワードによりO($N$) Krylov部分空間法を利用できます。

     scf.EigenvalueSolver       Krylov
基本的に計算精度と計算効率は次の2つのキーワードで制御されます。
    orderN.HoppingRanges         6.0
    orderN.KrylovH.order         400
キーワード「orderN.HoppingRanges」は、DC法の場合と同様に、各原子を中心とする球の半径を定義します。 ハミルトニアンに対するKrylov部分空間の次元は、キーワード「orderN.Krylov.order」で指定します。 さらに次のキーワードでO($N$) Krylov部分空間法による計算の詳細が設定可能です。

一般にキーワード「orderN.Exact.Inverse.S」と「orderN.Expand.Core」は 共有結合性物質に対しては「on」とした方が収束性が向上しますが、単純金属では「off」とした方が収束性が向上する場合もあります。 図 23 に、種々の物質に対し、Krylov法とDC法で計算した全エネルギーの絶対誤差を示します。 特に金属系ではDC法と比較してKrylov部分空間法の方が効率的であり、共有結合性とイオン性の増大とともに計算時間は同じ程度に なることが分かります。


Figure 23: (a) Krylov部分空間法とDC法で計算された金属および絶縁固体の全エネルギー(Hartree/atom)における絶対誤差と(b) その計算時間(s/atom/MD)。 比較を容易にするため、1 MPIプロセスを用いて計算。 図(a)のカッコ内の数値はコア領域およびバッファ領域における平均原子数。 図(b)のカッコ内の数値は、切り取られたクラスター内の基底関数の数に対するKrylov部分空間の次元の百分率を示す。
\includegraphics[width=10.0cm]{Compare_Krylov.eps}

大規模な計算を実現するために、O($N$) Krylov部分空間法は並列化に配慮して実装されています。 MPIによる並列化の場合には原子数と同じMPIプロセス数までは計算を加速させることができます。 またOpenMP/MPIハイブリッド並列によってOpenMPスレッドを使用すればさらに計算速度の向上が可能です。 超並列計算機を用いて10万個以上の原子から構成される系の並列計算を実施した例を図 24 に示します [44,45]。 この例では、ベンチマーク系として131072個の炭素原子から構成されるダイヤモンドの計算を行い、131072 MPIプロセス を使用し、その並列化効率は68%に達しています。


Figure 24: スーパーコンピュータ「京」上でのハイブリッド並列計算におけるO($N$) Krylov部分空間法の並列化効率。 すべての場合でOpenMPの8スレッドを使用。ベンチマーク系として131072個の炭素原子から成るダイヤモンド構造を計算。
\includegraphics[width=13.0cm]{Parallel_Krylov.eps}