Skip to content

離散化とスケーラブル解法による大規模計算設計

大規模計算では、離散化が決める誤差構造と、線形/非線形ソルバが決める計算量・通信量が強く結びつく。精度を上げるほど計算が遅くなるという単純な図式を超えて、誤差・安定性・条件数・メモリ帯域・並列分割を同時に設計することが要点である。

参考ドキュメント

  1. S. Williams et al., Roofline: An Insightful Visual Performance Model for Multicore Architectures (2009)
    https://people.eecs.berkeley.edu/~kubitron/cs262a-F13/handouts/papers/roofline-williams-etal.pdf
  2. PETSc User Manual / KSP: Linear System Solvers
    https://petsc.org/release/manual/ksp/
  3. 富岳 利用ガイド(日本語)
    https://www.r-ccs.riken.jp/fugaku/users-guide/

1. なぜ「離散化」がボトルネックになるのか

連続場(波動関数、電子密度、応力、磁化、濃度、温度、電磁場など)を格子や要素、基底で有限次元化すると、次の4点が同時に生じる。

  1. 誤差:連続解 u に対し近似解 uh を得るが、uhu は不可避である。
  2. 安定性:時間発展や反復計算が発散しない条件が必要である(特に陽解法)。CFL条件はその代表である。
  3. 条件数:離散化で得られる連立一次方程式 Ax=b の条件数が、反復法の収束回数を支配する。大規模化でこれが最重要になることが多い。
  4. 性能:計算コアのピーク性能より、メモリ帯域・通信・疎行列アクセスが支配的になりやすい。Rooflineモデルはこの状況を可視化する代表的枠組みである。

2. 離散化の基本:どの「枠」で連続場を表現するか

2.1 主要な離散化手法の系統

系統代表保存則/境界条件得意領域注意点
有限差分法 (FDM)近傍差分、スタガード格子実装が簡単、規則格子で強い拡散、波動、磁化ダイナミクス、電磁場の格子化複雑形状や局所精度に弱い
有限体積法 (FVM)セル上の保存則、フラックス保存則を自然に満たしやすい流体、拡散輸送、反応拡散フラックス設計が本質である
有限要素法 (FEM)弱形式、形状関数複雑形状・異方性材料・多物理連成弾性、電磁、拡散、相場行列組立と前処理が鍵である
不連続Galerkin (DG)要素間不連続+数値フラックス高次・局所適応・並列相性波動、対流拡散、スペクトル精度コスト増、安定化設計が必要である
スペクトル/高次要素Chebyshev/Legendre, SEM高精度(滑らかな解)量子/波動/電磁の高精度幾何と境界が難しくなる傾向である

2.2 誤差の言葉:局所誤差と大域誤差

離散化は一般に

uuhChp

という収束次数 p を目指す。ここで h は格子幅/要素サイズ、p は近似次数である。

重要なのは、同じ自由度数(DOF)でも、低次で細かく刻むのか、高次で粗く刻むのかで、誤差と性能の支配因子が変わる点である。DG/高次要素はこの選択肢を拡張する。

3. 一貫性・安定性・収束:精度議論の背骨

差分法を例にすると、安定性・一貫性・収束は三位一体で扱われ、線形な初期値問題では「一貫性+安定性 ⇒ 収束」という関係が基礎になる(Lax型の同値性定理の系譜である)。

3.1 CFL条件(陽解法の典型)

移流方程式 ut+aux=0 の陽的差分では、おおむね

|a|ΔtΔxC

の形の条件が出現する。これが破れると、離散的に増幅因子が1を超え、数値解が発散しやすい。CFL条件は差分/体積/一部DGに普遍的に現れる安定性指標である。

3.2 反応拡散・相場・弾性での硬さ

拡散項 2 は高周波(短波長)成分を強く抑制し、陽解法では Δth2 の厳しい制約を生む。これが大規模化で時間刻みを極端に小さくし、計算が進まない原因となる。したがって陰解法/半陰解法、あるいはIMEX(stiff項を陰、非stiff項を陽)の設計が重要となる。

4. 離散化が生む連立方程式と条件数の問題

離散化の結果、多くの計算は

Ax=b

や、非線形系 F(x)=0(Newton反復で線形系に帰着)に落ちる。大規模化で本質になるのは、行列 A の条件数とスペクトル構造である。

  • 拡散/弾性/静電ポテンシャルのような楕円型方程式では、メッシュを細かくすると条件数が悪化し、単純な反復法は収束が遅くなる。
  • したがって、反復法(Krylov法)と前処理(PC)の組み合わせが中心戦略となる。

5. スケーラブルソルバ:収束回数を格子サイズに依らせない

5.1 Krylov反復法+前処理

Krylov法(CG, GMRESなど)は、A の性質(対称正定値か、非対称か)に応じて選ばれる。成功の鍵は前処理 M1 を導入して

M1Ax=M1b

を解き、固有値分布をまとまった形に圧縮することである。

前処理は「近似逆行列」を作る行為であり、精密さと計算コストの釣り合いが要である。物理的意味に寄せるなら「支配的な結合(長距離/短距離、剛性の強いモード)を優先的に解消する」ことが狙いである。

5.2 マルチグリッド(幾何MG/代数AMG)

楕円型問題では、誤差が「低周波成分」と「高周波成分」に分解して考えられる。平滑化(smoother)で高周波を消し、粗視化格子で低周波を解くのがマルチグリッドの発想である。大規模並列でもスケールしうる代表手法として位置づけられる。

5.3 領域分割

計算領域(Domain Decomposition; DD)をサブドメインに分割し、局所問題と粗視化問題を組み合わせて解く。有限要素/有限体積の大規模並列では、手法論としても並列実装としても中核になることが多い。

6. 時間積分:長時間安定・保存性・サンプリングの観点

6.1 分子動力学(MD)での保存性とシンプレクティック性

MDでは運動方程式がハミルトニアン構造を持ち、長時間のエネルギー挙動が重要になる。そのためVerlet系に代表される可逆・シンプレクティック積分法が広く用いられている。エネルギー保存性(厳密保存ではなく、長時間でのドリフト抑制)が方法論として重要である。

6.2 連続体ダイナミクス(波動・LLG・Maxwell)での安定性

波動・電磁・スピンの時間発展ではCFL制約や分散誤差(数値位相速度のずれ)が支配的になりやすい。高次化は分散誤差に効く一方、安定化と実装コストが増えるため、目的量(スペクトルピーク、減衰率、エネルギー散逸など)を決めて時間積分法を選ぶ設計が必要である。

7. 大規模化(HPC)で支配的になる性能モデルと実装論

7.1 Rooflineモデルで見る計算律速の位置

カーネルの演算強度(operational intensity)を I とすると、性能上限は概ね

Pmin(Pmax,BmaxI)

という形で理解できる。疎行列ベクトル積やステンシルは I が小さく、メモリ帯域律速が起きやすい。大規模計算のチューニングでは、アルゴリズム自体を「帯域に優しい形」に変える発想が重要となる。

7.2 並列の基本設計:MPI+OpenMP

ノード内共有メモリ(OpenMP)とノード間通信(MPI)を組み合わせる設計は、現代の多コアHPCで標準的である。コア配置、NUMA相当の階層、通信の局所性(近接通信を増やす)といった設計が性能を支配する。

7.3 典型的なスケーリング障害と対策

  • 強スケーリング限界:問題サイズ固定でコア数だけ増やすと、通信・同期が支配する
    対策:粗視化(多重格子)、通信隠蔽、計算粒度の確保、非同期化
  • 弱スケーリング限界:局所DOF一定でも、粗視化成分やグローバル還元(dot、norm)が支配する
    対策:通信回数を減らすKrylov変種、二段階法、DDの粗視化空間設計
  • メモリ容量/帯域:精度を上げてDOFを増やすと、メモリが先に尽きる
    対策:行列フリー(matrix-free)、高次要素のテンソル積、混合精度、圧縮表現
  • I/O:チェックポイントや巨大出力が律速となる
    対策:出力頻度の設計、並列I/O、解析のインサイチュ化(計算中に要約量だけ作る)

8. 離散化選択を物理量の目的に結びつける設計指針

8.1 目的量(Quantity of Interest; QoI)を先に決める

同じ方程式でも、必要な精度は目的量で変わる。

  • 平衡構造(エネルギー差、応力、弾性定数)
  • 応答関数(スペクトル、共鳴周波数、輸送係数)
  • 界面形状(曲率、界面移動速度、核生成頻度)
  • ノイズ統計(ゆらぎ、相関時間、パワースペクトル)

QoI(Quantity of Interest)に対して「空間誤差が支配か」「時間誤差が支配か」「統計誤差が支配か」を切り分け、最も支配的な誤差源へ資源を投下する。

8.2 典型例:同じDOFでも効く改善は違う

  • 波動・電磁:高次化で分散誤差が下がり、同じ格子数でも位相精度が改善しやすい(ただし安定化設計が必要)
  • 拡散・弾性:前処理なしでは反復回数が増えやすく、ソルバ改善(MG/DD)が最優先になりやすい
  • MD:刻み幅を下げるだけでなく、保存性やサンプリングの性質を見て積分器を選ぶのが効く

9. 検証と妥当性確認

大規模計算ほど、見かけの「それらしい結果」が危険になりやすい。以下をルーチン化するとよい。

  1. 製造解法(Method of Manufactured Solutions; MMS):既知解を作り、収束次数 p を確認する
  2. メッシュ/時間刻み独立性:h,Δt を変えてQoIの変化を追う
  3. 保存則チェック:総エネルギー、発散条件、質量保存など
  4. 反復収束の記録:残差だけでなく、QoI収束や内外反復の相互作用を点検する
  5. 並列依存性:プロセス数を変えたときの数値差(非決定性、順序依存)を監視する

まとめ

離散化は誤差と安定性だけでなく、連立方程式の条件数と計算性能(帯域・通信)を同時に規定するため、大規模計算の成否を左右する。高精度化は「格子を細かくする」だけでなく、QoIに合わせた高次化・陰的化・前処理(MG/DD)・性能モデル(Roofline)・ハイブリッド並列の総合設計として実装されるべきである。