Fill-in LevelつきIC分解による
前処理について
染原一仁 †
藤野清次 ‡
† 九州大学大学院システム情報科学府
‡ 九州大学情報基盤センター
1
発表の手順


研究の背景、目的
前処理技法




IC(tol)分解 :閾値によるドロッピング
IC(p)分解 :fill-in levelによるドロッピング
数値実験
まとめ
2
研究の背景、目的
~背景~
 大規模な連立一次方程式 Ax = b を前処理つき共役
勾配(CG)法で高速に解きたい (行列Aは対称正定値行列)

CG法の収束性を高めるために前処理が併用して用い
られることが多く,その種類は様々である
~目的~
 棄却判定の異なる2つのIC分解(IC(tol)分解,IC(p)分
解)によって得られる前処理行列を適用したICCG法の
収束性評価を行う.
3
前処理(1)

連立一次方程式Ax=bに前処理行列M を以下の
ように作用させる
M-1Ax=M-1b

係数行列M-1Aが単位行列 I に近似される
1
0
固有値の重複,密集
|λ(M-1A)|
反復法の収束性向上
4
前処理(2)

対角スケーリング(CG法に適用)

IC分解(前処理つきCG法に適用)
前進(後退)代入

近似逆行列型前処理(前処理つきCG法に適
用)
行列ベクトル積
5
IC(不完全コレスキー)分解


係数行列が対称な場合に適用可能。
以下のように係数行列A を近似分解する。
A = LLT + R + RT
下三角行列

棄却行列
前処理行列M = LLT を作用させる。
(L-1AL-T) (LTx) = (L-1b)
計算時間小、使用メモリ量小⇒実用的。6
IC(tol)分解

閾値(tolerance)を用いたドロッピングによるIC分
解
lij < tol
lij = 0
ただし,i ≠ j

前処理行列の非零要素数が予測できない
7
IC(p)分解(1)

Fill-in levelを用いたドロッピングによるIC分解
levij > p
lij = 0
levij = min{levij, levik+levkj+1}
levij = min{levij, max(levik,levkj)+1}
(Y.Saad, Iterative methods for Sparse Linear Systems, 2003)


係数行列Aの非零要素パターンによりFill-inの深さを探
索
IC(0)分解では前処理行列Lの非零要素数と係数行列A
の下三角部分は等しくなる
8
IC(p)分解(2)
IC(0)
IC(1)
分解
係数行列:A
行列:L
9
数値実験
計算機
:IBM eServer p5 モデル 595
CPU
:IBM POWER5 (1CPU使用)
クロック周波数
:1.9 GHz
メモリ容量
:3 GB
プロセッサ/メモリ
間帯域幅(ピーク時)
:811.0GBps
キャッシュサイズ
:1.9MB
コンパイラ
:IBM XL Fortran version 9.1
オプション
:-O3 -qarch=pwr5 -qtune=pwr5
-qhot
10
計算条件






計算は全て倍精度演算
プログラム言語はfortran90を使用
前処理つきCG法の収束判定は相対残差
||rk+1||/||r0|| < 10-12
初期近似解 x0 はすべて 0
固有値計算は数値計算ライブラリLAPACKを使用
テスト行列はフロリダ大学,Matrix Marketのデータ
ベース,
http://www.cise.ufl.edu/research/sparse/matrices/index.html
http://math.nist.gov/MatrixMarket/
11
実験に用いた解法
(反復法はすべてCG法)
解法
前処理
DIAG
対角スケーリングのみ適用
SIC(tol) DIAG+シフトつきIC(tol)分解
SIC(p)
DIAG+シフトつきIC(p)分解
IC分解途中に対角要素が負にならないようにシフトを適用
A+αIを分解(α:シフト量),今回は0.2に固定
条件数:cond=||A|| ||A-1||
= (最大固有値) / (最小固有値)
実対称正定値行列
12
テスト行列(1)
次元数:1万以下
行列
bcsstk15
次元数 下三角部分の 半帯幅 分野
非零要素数
3,948
60,882
437
sts4098
4,098
38,227
3,323
nasa4704
4,704
54,730
423
bcsstk16
4,884
147,631
Muu
7,102
88,618
4,696
Kuu
7,102
173,651
4,697
bcsstk38
8,032
181,746
6,029
140 構造解析
13
行列bcsstk15
非零要素パターン



次元数
:3,948
非零要素数:60,882
半帯幅
:437
14
IC(tol)分解による
行列Lの非零要素パターン


tol = 0.1
非零要素数 = 15,125


tol = 0.005
非零要素数 = 53,518
15
IC(p)分解による
行列Lの非零要素パターン


p=0
非零要素数 = 60,882


p=1
非零要素数 = 126,535
16
IC(p)分解による
行列Lの非零要素パターン


p=0
非零要素数 = 60,882


p=2
非零要素数 = 191,225
17
行列bcsstk15


tol=0.1
次元数:3,948
条件数:6.54×109
p=0
tol=0.005
p=1
p=2
18
行列bcsstk15
(条件数:6.54×109)
解法
DIAG
SIC(tol)
SIC(p)
閾値/level Lの非零
要素数
0.1
15,125
0.05
21,525
0.01
41,149
0.005
53,518
0
60,882
1 126,535
2 191,225
条件数
8.21×104
8.55×103
4.71×103
4.04×103
3.93×103
5.77×103
4.18×103
3.89×103
反復回数
665
217
174
161
159
187
163
158
19
行列sts4098


次元数:4,098
条件数:2.17×108
tol=0.1
p=0
tol=0.005
p=1
p=2
20
行列sts4098
(条件数:2.17×108)
解法
DIAG
SIC(tol)
SIC(p)
閾値/level Lの非零
要素数
0.1
14,782
0.05
21,235
0.01
36,714
0.005
46,369
0
38,227
1 389,651
2 1,051,689
条件数
6.72×103
3.62×102
3.07×102
2.52×102
2.52×102
4.20×102
2.65×102
2.53×102
反復回数
547
137
119
115
115
140
117
114
21
テスト行列(2)
次元数:5万以上
行列
nasasrb
下三角部分の 半帯幅
分野
非零要素数
54,870
1,366,097
893
s3dkt3m2
90,449
1,921,955
shipsec8
114,919
3,384,159
4,627
bmwcra_1
148,770
5,396,386
141,050
thremal2
次元数
1,228,045
G3_circuit 1,585,478
614 構造解析
4,904,179 1,226,000 熱解析
4,623,152
947,128 回路問題
22
各前処理つきCG法の収束性
行列:nasasrb
23
IC(p)CG法の収束性
行列:nasasrb
24
行列nasasrb
次元数:54,870
解法
DIAG
SIC(tol)
SIC(p)
閾値/level 行列Lの
反復回数 計算時間
[sec]
非零要素数
19,779
118.11
0.05
481,328
5,573
59.83
0.01
940,936
4,821
66.93
0
1,366,097
4,360
75.88
1
2,192,348
3,852
108.88
25
各前処理つきCG法の収束性
行列:G3_circuit
26
各前処理つきCG法の収束性
行列:G3_circuit
27
行列G3_circuit
次元数:1,585,478
解法
DIAG
SIC(tol)
SIC(p)
閾値/level 行列Lの
反復回数 合計時間
[sec]
非零要素数
3,299
328,54
0.01
6,741,212
1,022
253.61
0.005
7,554,105
1,013
262.54
0
4,623,152
1,181
267.93
1
6,075,667
1,044
253.29
2
7,817,649
1,014
264.53
28
行列6ケース(合計時間)
行列
解法
nasasrb
IC(tol)
0.05
5,573
59.83
s3dkt3m2
IC(tol)
0.1
12,102
186.21
shipsec8
IC(tol)
0.005
1,743
66.63
bmwcra_1 IC(tol)
0.05
2,013
113.53
thermal2
0.01
2,067
506.03
1
1,044
253.29
IC(tol)
G3_circuit IC(p)
閾値/level 反復回数 合計時間
29
まとめ

次元数5万以上の行列において6ケース中5ケー
スはIC(tol)分解によるICCG法の計算時間が最
も短くなった.

Fill-in levelによるIC(p)分解では許容するlevel
を大きくすることにより,L-1AL-Tの条件数は1に
近づき,ICCG法の収束性は向上する.
しかし,行列Lの非零要素数が多くなり,収束ま
での計算時間は増加する.
30
31
固有値分布
bcsstk15
32
固有値分布
sts4098
33
ダウンロード

発表資料