メモリ使用量の少ない gcr 法の提案
DESCRIPTION
メモリ使用量の少ない GCR 法の提案. 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰 東京大学大学院理学系研究科情報科学専攻 片桐 孝洋 東京大学情報基盤センター 金田 康正. 反復解法、特に Krylov 部分空間法がポピュラー. Krylov 部分空間法の分類. Approach. The Ritz-Galerkin approach. The minimum residual approach. The petrov-Galerkin approach. The minimum error approach. - PowerPoint PPT PresentationTRANSCRIPT
メモリ使用量の少ない GCR 法の提案
東京大学理学部情報科学科 工藤 誠東京大学情報基盤センター 黒田 久泰東京大学大学院理学系研究科情報科学専攻
片桐 孝洋東京大学情報基盤センター 金田 康正
連立一次方程式の解法大規模疎行列を係数行列に持つ連立一次方程式
反復解法、特に Krylov 部分空間法がポピュラー
SYMMLQGMERR
Bi-CGQMRCGS
Bi-CGSTAB
GMRESMINRES
GCR
CGMethod
Theminimum error
approach
The petrov-Galerkin a
pproach
The minimum residual approa
ch
The Ritz-Galerkin ap
proachApproach
Krylov 部分空間法の分類
NNN bxAbAx ,,
GCR 法の特徴CG 法の非対称問題への拡張として開発された [Eisenstat, 83]Arnoldi 原理に基づき、各反復で残差を最小にする ( GMRES 法と数学的に同値な残差)
広範囲の非対称問題が解ける逐次成分がなく、並列性が高いGMRESR 法 [Vorst,91] の一部として使われている
GCR 法の利点
GCR 法の 問題点計算量が大きい( O(k
2
N) の計算が3回)メモリ使用量が大きい( GMRES の約2倍)
計算量大!メモリ使用量大!
end
A
,
begin
:do r until,1,0for
0,1
11
0,1
11
,1
1,
,
1
1
,
,
n
i
n
iinnn
i
n
iinnn
iApiApnrAKiAp
in
nnnn
nnnn
nApnApnrnAp
AprAKp
prKp
ni
Aprr
pxx
n
tolkn
連立一次方程式
を解く GCR(k) 法のアルゴリズム NNN bxAbAx ,,
過去の研究
計算量を減らす efficient GCR(eGCR) 法が考案された [Yang,95]
しかし、依然としてメモリ使用量が大きいという問題は解決されていない!!
提案する2つのアルゴリズム
Memory efficient GCR(meGCR) 法 計算量は eGCR 法とほぼ同じ メモリ使用量は eGCR 法の約半分まで減る可能
性がある
Unrolled GCR(uGCR) 法 計算量、メモリ使用量とも、 eGCR 法より少な
い
Efficient GCR 法
end
A
,
begin
:do r until,1,0for
0,1
11
0,1
11
,1
1,
,
1
1
,
,
n
i
n
iinnn
i
n
iinnn
iApiApnrAKiAp
in
nnnn
nnnn
nApnApnrnAp
AprAKp
prKp
ni
Aprr
pxx
n
tolkn
Original のGCR 法
Efficient GCR 法
repeat
end
A
,
begin
:do r until,1,0for
01
0,1
11
0,1
11
,1
1,
,
1
,
,
n
k
iiinn
i
n
iinnn
i
n
iinnn
iApiApnrAKiAp
in
nnnn
nApnApnrnAp
pxx
AprAKp
prKp
ni
Aprr
n
tolkn
各反復で解xをループの外に
出した 方向ベクトル p はここにしか表れない
また、 p を Ap を使って表すことができる
Efficient GCR 法
repeat
ˆ
end
A
,
Ku
begin
:do r until,1,0for
111111
0,1
11
,1
1,
,
11-
n
1
,
,
n
kkkn
i
n
iinnn
iApiApnrAKiAp
in
n
nnnn
nApnApnrnAp
BUxx
AprAKp
ni
r
Aprr
n
tolkn
1
1
1
ˆ,,ˆˆ
,,
where
1,1
1,1
0,10,0
0
1,0
kk
k
k
k
k
Hkk
B
uuU
a
Efficient GCR
p の計算が無くなった
ベクトル uは、過去の分まで覚え
ておく
^
さらに、 u も Ap を使って表すことができる^
Memory efficient GCR 法
repeat
end
A
,
begin
:do r until,1,0for
11111
101
0,1
11
,1
1,
,
1
,
,
n
kkkkn
i
n
iinnn
iApiApnrAKiAp
in
nnnn
nApnApnrnAp
BCDKxx
AprAKp
ni
Aprr
n
tolkn
1100
1
11
000
1,1
1,1
0,10,0
1,0
,,,,
1111
1
1
1
,,
where
kk
k
k
kk
k
k
k
Hkk
ApApAprD
C
B
a
覚えておくベクトルは Apのみでよい
係数行列、解ベクトル以外のメモリ使用量は既存のアルゴリズムの約半分!
ベクトル uを使用し
ない
計算量は eGCR 法と同程度
^
Unrolled GCR 法ループ内で使われている値は、
すべて Air0 を使って表すことができる
ループの前で、 Air0 を計算しておくループ内の計算で必要な (Air0, A
jr0) も 計算しておく
密行列積( BLAS3 )の演算となり、
効率的
Air0 は dominant な固有ベクトルの方向を向いてくるので、精度の低下が予想される
ループ内はスカラー計算のみとな
る
メモリ使用量はmeGCR と同じ
計算量の比較
計算要素 dmv dp daxpy smv prec bin kmv Dmm
計算量 2kn 2n 2n * *
GCR3(k-1)
2k 2k-1 k k 0 0 0
eGCR 2k-1 2k k k k 1 1 0
meGCR 2k-1 2k k k k+1 1 2 0
uGCR 0 0 0 k k+1 1 4k 1
)1)(1(3
1 kkk 22k nk 22
k = リスタート周期 ( 数十~数百 ) n = 問題サイズ ( 数万~数百万 )
注 * は、問題や前処理の方法によって変わってくる
1 リスタート周期の計算量
サイズ n の密行列 - ベクトル
積サイズ k の
密行列 - ベクトル積
(k X n の )密行列 - 密行列積
メモリ使用量の比較 1(係数行列、解ベクトル以外)
Vector of length n Buffer of size k 2
GCR 2k+3 0
eGCR 2k+3 2
meGCR k+3 2
uGCR k+2 5
既存の手法の約半分!
k = リスタート周期 ( 数十~数百 ) n = 問題サイズ ( 数万~数百万 )
メモリ使用量の比較 2( 係数行列、解ベクトルを含んだ全体のメモリ使用
量 )
method 全体のメモリ使用量
GCR
eGCR
meGCR
uGCR
)42( zkN22)42( kzkN 22)4( kzkN 25)3( kzkN
k = リスタート周期 ( 数十~数百 ) n = 問題サイズ ( 数万~数百万 ) z = 係数行列の一行の最大非零要素
実験環境
計算機 : HITACHI SR2201 (東京大学情報基盤センター)
CPU: 300MFlops × 1024PE Main memory: 256MB/PE Communication: 300MB/s
通信ライブラリ: MPI (Message Passing Interface)
ProblemsProblem 1 Toeplitz 行列
Problem 2 楕円型偏微分方程式の境界値問題(2次元)
Problem3 楕円型偏微分方程式の境界値問題(3次元)
0.1
2000
0200
0120
00120
00012
0.1
1),(
),(
R
xyyxu
yxgRuuu xyyxx
0.1
0.0),(
),,(
R
yxu
zyxgRuuuu xzzyyxx
meGCR 法の実験結果 ( 逐次 )
問題 Problem 1 Problem 2 Problem 3
サイズ 400,000 160,000 64,000
前処理無し
GCR 22.8 4860 37.8
eGCR 18.3 3440 27.7
meGCR 17.9 3450 28.7
前処理有り
(B-ILU(0))
GCR 21.2 938 21.9
eGCR 19.8 812 19.9
meGCR 20.1 825 20.1
実行時間(秒) リスタート周期32
meGCR 法の実験結果(並列、前処理なし)
0
5
10
15
20
25
8 16 32 64Number of PE
Tim
e(se
c)
02040
6080
100120
140160
8 16 32 64Number of PE
Tim
e(se
c)
GCR
eGCR
meGCR
0
100
200
300
400
500
600
8 16 32 64Number of PE
Tim
e(se
c)
Problem 1 ( n=4,000,000 ) Problem 2 ( n=160,000 )
Problem 3 ( n=512,000 )
リスタート周期はすべて32
meGCR 法の実験結果(並列、 B-ILU(0) 前処理)
0
5
10
15
20
25
30
8 16 32 64Number of PE
Tim
e(se
c)
0
10
20
30
40
50
60
70
8 16 32 64Number of PE
Tim
e(se
c)
GCR
eGCR
meGCR
0
20
40
60
80
100
120
8 16 32 64Number of PE
Tim
e(se
c)
Problem 1 ( n=4,000,000 ) Problem 2 ( n=160,000 )
Problem 3 ( n=512,000 )
リスタート周期はすべて32
uGCR 法の実験結果
前処理無し B-ILU(0) 前処理Iteratio
nTime Iteratio
nTime
Problem 1(n=400,00
0)
GCR 46 18.5 17 20.3eGCR 46 15.4 17 18.2
meGCR 46 15.4 17 19.5uGCR 55 13.5 25 26.7
Problem 3(n=64,000)
GCR 1096 64.8 150 30.6eGCR 1096 53.6 150 29.6
meGCR 1096 55.7 150 31.7uGCR 1053 43.0 150 30.1
リスタート周期 8
まとめと考察
GCR 法の2つのアルゴリズムを提案した Memory efficient GCR 法
計算量は、既存の方法とほぼ同じ メモリ使用量は、最高で既存の方法の約半分
まで減らすことが可能 Unrolled GCR 法
計算量、メモリ使用量とも既存の方法より少ない
収束性に問題がなく、実用的!
精度の問題があるので、今後の研究が必要
より大きな問題が解けるリスタート周期を大きく 取れるので、収束の悪い 問題が解ける