CG法 — CAE用語解説
CG法
先生、CG法(共役勾配法)って名前はよく聞くんですが、どんな仕組みなんですか?
共役勾配法(Conjugate Gradient method)はAx = bという対称正定値線形系を解く反復法だ。基本アイデアは「残差ベクトルに対して共役な(直交する)探索方向を順番に選んで解を更新していく」こと。n次元問題なら理論的にはn回のステップで厳密解に達する。直接法(Cholesky分解)と違って行列を明示的に格納せずに済むから、何百万自由度という大規模スパース問題でもメモリが節約できる。
定義
でも収束が遅いときがありますよね? 前処理という言葉を聞きました。
CG法の収束速度は条件数κ(A)——最大固有値と最小固有値の比——に依存する。FEMの剛性マトリクスは細長い要素や極端に異なるヤング率が混在すると条件数が爆発的に大きくなって収束が遅くなる。そこで前処理行列M≈A^(-1)を使ってM^(-1)Ax = M^(-1)bという条件数の小さい系に変換するのが前処理付きCG法(PCG)だ。前処理の選択が性能を大きく左右する。
前処理手法の実際
前処理にはどんな種類があるんですか?
実用的なものを紹介しよう。①不完全Cholesky分解(IC(0)/ICCG):Cholesky分解のフィルインを省略した近似分解で計算が軽い。②AMG(代数的マルチグリッド):粗いグリッドで大域エラーを、細かいグリッドで局所エラーを消す多重解像度手法で、大規模FEM問題の事実上の標準前処理になっている。Ansys・Abaqus・OpenFOAMいずれもAMG系の前処理が使われている。③ドメイン分解法(FETI、Schwarz):並列計算と相性がよい。
GPUでCG法を高速化する話を聞きましたが、FEM解析に使えるんですか?
実用化が進んでいる。GPUはSpMV(スパース行列–ベクトル積)を並列化するのが得意で、CG法の主要コストがSpMVなのでGPUとの相性は良い。cuSolverやAmgXなどのGPU対応ライブラリが整備されていて、NVIDIA GPUを搭載したワークステーションで数倍〜10倍の高速化事例がある。ただし前処理(特にAMG)のGPU実装は難しく、CPUに比べて効果が出にくい部分もある。大規模CFDや電磁場解析ではGPU活用が本格化しつつある。
関連用語
大規模CAEの計算速度を左右する核心技術なんですね!
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
Project NovaSolver — CAE実務の課題に向き合う研究開発
「CG法をもっと効率的に解析できないか?」——私たちは実務者の声に耳を傾け、既存ワークフローの改善を目指す次世代CAEプロジェクトに取り組んでいます。具体的な機能はまだ公開前ですが、開発の進捗をお届けします。
進捗通知を受け取る →関連トピック
なった
詳しく
報告