170 likes | 389 Views
メモリ使用量の少ない GCR 法の提案. 理学部情報科学科 金田研究室 指導教官 金田 康正 工藤 誠. Krylov 部分空間法の分類. Approach. The Ritz-Galerkin approach. The minimum residual approach. The petrov-Galerkin approach. The minimum error approach. Method. CG. GMRES MINRES GCR. Bi-CG QMR CGS Bi-CGSTAB. SYMMLQ GMERR.
E N D
メモリ使用量の少ないGCR法の提案 理学部情報科学科 金田研究室 指導教官 金田 康正 工藤 誠
Krylov部分空間法の分類 Approach The Ritz-Galerkin approach The minimum residual approach The petrov-Galerkin approach The minimum error approach Method CG GMRES MINRES GCR Bi-CG QMR CGS Bi-CGSTAB SYMMLQ GMERR GCR法の特徴 • 連立一次方程式の反復解法(Krylov部分空間法)の一つ [Eisenstat, 83] 広範囲の非対称問題が解ける 並列性が高い GMRESR法[Vorst,91]の一部として使われている
GCR法の 問題点 • 計算量が大きい(O(k2N)の計算が3回) • メモリ使用量が大きい(GMRESの約2倍) 計算量大! メモリ使用量大!
過去の研究 • 計算量を減らすefficient GCR(eGCR)法が考案された[Yang,95] しかし、依然としてメモリ使用量が大きい という問題は解決されていない!!
提案する2つのアルゴリズム • Memory efficient GCR(meGCR)法 • 計算量はeGCR法とほぼ同じ • メモリ使用量はeGCR法の約半分! • Unrolled GCR(uGCR)法 • 計算量、メモリ使用量とも、eGCR法より少ない
Originalの GCR法 各反復で解xを ループの外に 出した ^ ベクトルuは、過去の分まで覚えておく pの計算が 無くなった Efficient GCR Efficient GCR法
メモリ使用量は既存のアルゴリズムの約半分!メモリ使用量は既存のアルゴリズムの約半分! Memory efficient GCR法 覚えておくベクトルはApのみでよい 計算量はeGCR法と同程度 ベクトルuを使用しない ^
ループの前で、Air0を計算しておく • ループ内の計算で必要な(Air0, Ajr0)も • 計算しておく Unrolled GCR法 ループ内で使われている値は、 すべてAir0を使って表すことができる Air0はdominantな固有ベクトルの 方向を向いてくるので、 精度の低下が予想される 密行列積(BLAS3)の演算となり、 効率的 ループ内はスカラー計算のみとなる メモリ使用量は meGCRと同じ
計算量の比較 1リスタート周期の計算量 注 *は、問題や前処理の 方法によって変わってくる k = リスタート周期(数十~数百) n = 問題サイズ (数万~数百万)
既存の手法の 約半分! メモリ使用量の比較 k = リスタート周期(数十~数百) n = 問題サイズ (数万~数百万)
実験環境 • 計算機: HITACHI SR2201 (東京大学情報基盤センター) • CPU: 300MFlops × 1024PE • Main memory: 256MB/PE • Communication: 300MB/s • 通信ライブラリ:MPI(Message Passing Interface)
Problems • Problem 1 • Toeplitz行列 • Problem 2 • 楕円型偏微分方程式の境界値問題(2次元) • Problem3 • 楕円型偏微分方程式の境界値問題(3次元)
meGCR法の実験結果(逐次) 実行時間(秒) リスタート周期32
meGCR法の実験結果(並列、前処理なし) Problem 1 ( n=4,000,000 ) Problem 2 ( n=160,000 ) Problem 3 ( n=512,000 ) リスタート周期はすべて32
meGCR法の実験結果(並列、B-ILU(0)前処理) Problem 1 ( n=4,000,000 ) Problem 2 ( n=160,000 ) Problem 3 ( n=512,000 ) リスタート周期はすべて32
uGCR法の実験結果 リスタート周期 8
まとめと考察 • より大きな問題が解ける • リスタート周期を大きく 取れるので、収束の悪い 問題が解ける • GCR法の2つのアルゴリズムを提案した • Memory efficient GCR法 • 計算量は、既存の方法とほぼ同じ • メモリ使用量は、既存の方法の約半分 • Unrolled GCR法 • 計算量、メモリ使用量とも既存の方法より少ない 収束性に問題がなく、実用的! 精度の問題があるので、今後の研究が必要