210 likes | 390 Views
メモリ使用量の少ない GCR 法の提案. 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰 東京大学大学院理学系研究科情報科学専攻 片桐 孝洋 東京大学情報基盤センター 金田 康正. 反復解法、特に Krylov 部分空間法がポピュラー. Krylov 部分空間法の分類. Approach. The Ritz-Galerkin approach. The minimum residual approach. The petrov-Galerkin approach. The minimum error approach.
E N D
メモリ使用量の少ないGCR法の提案 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰 東京大学大学院理学系研究科情報科学専攻 片桐 孝洋 東京大学情報基盤センター 金田 康正
反復解法、特にKrylov部分空間法がポピュラー 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法の特徴 • CG法の非対称問題への拡張として開発された[Eisenstat, 83] • Arnoldi原理に基づき、各反復で残差を最小にする (GMRES法と数学的に同値な残差) GCR法の利点 広範囲の非対称問題が解ける 逐次成分がなく、並列性が高い GMRESR法[Vorst,91]の一部として使われている
連立一次方程式 を解くGCR(k)法のアルゴリズム GCR法の 問題点 • 計算量が大きい(O(k 2N)の計算が3回) • メモリ使用量が大きい(GMRESの約2倍) 計算量大! メモリ使用量大!
過去の研究 • 計算量を減らすefficient GCR(eGCR)法が考案された[Yang,95] しかし、依然としてメモリ使用量が大きい という問題は解決されていない!!
提案する2つのアルゴリズム • Memory efficient GCR(meGCR)法 • 計算量はeGCR法とほぼ同じ • メモリ使用量はeGCR法の約半分まで減る可能性がある • Unrolled GCR(uGCR)法 • 計算量、メモリ使用量とも、eGCR法より少ない
Originalの GCR法 Efficient GCR法
各反復で解xを ループの外に 出した Efficient GCR法 方向ベクトルpはここにしか表れない また、pをApを使って表すことができる
^ さらに、uもApを使って表すことができる ^ ベクトルuは、過去の分まで覚えておく pの計算が 無くなった Efficient GCR Efficient GCR法
係数行列、解ベクトル以外の メモリ使用量は既存のアルゴリズムの約半分! Memory efficient GCR法 覚えておくベクトルはApのみでよい 計算量はeGCR法と同程度 ベクトルuを使用しない ^
ループの前で、Air0を計算しておく • ループ内の計算で必要な(Air0, Ajr0)も • 計算しておく Unrolled GCR法 ループ内で使われている値は、 すべてAir0を使って表すことができる Air0はdominantな固有ベクトルの 方向を向いてくるので、 精度の低下が予想される 密行列積(BLAS3)の演算となり、 効率的 ループ内はスカラー計算のみとなる メモリ使用量は meGCRと同じ
(k X nの) 密行列-密行列積 サイズk の 密行列-ベクトル積 サイズnの 密行列-ベクトル積 計算量の比較 1リスタート周期の計算量 注 *は、問題や前処理の 方法によって変わってくる k = リスタート周期(数十~数百) n = 問題サイズ (数万~数百万)
既存の手法の 約半分! メモリ使用量の比較1(係数行列、解ベクトル以外) k = リスタート周期(数十~数百) n = 問題サイズ (数万~数百万)
メモリ使用量の比較2(係数行列、解ベクトルを含んだ全体のメモリ使用量)メモリ使用量の比較2(係数行列、解ベクトルを含んだ全体のメモリ使用量) k = リスタート周期(数十~数百) n = 問題サイズ (数万~数百万) z = 係数行列の一行の最大非零要素
実験環境 • 計算機: 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法 • 計算量、メモリ使用量とも既存の方法より少ない 収束性に問題がなく、実用的! 精度の問題があるので、今後の研究が必要