メモリ使用量の少ない gcr 法の提案

21
メメメメメメメメメメ GCR メメメメ メメメメメメメメメメメメ メメ メ メメメメメメメメメメメメ メメ メメ メメメメメメメメメメメメメメメメメメメ メメ メメ メメメメメメメメメメメメ メメ メメ

Upload: rufin

Post on 25-Jan-2016

61 views

Category:

Documents


0 download

DESCRIPTION

メモリ使用量の少ない GCR 法の提案. 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰 東京大学大学院理学系研究科情報科学専攻 片桐 孝洋 東京大学情報基盤センター 金田 康正. 反復解法、特に Krylov 部分空間法がポピュラー. Krylov 部分空間法の分類. Approach. The Ritz-Galerkin approach. The minimum residual approach. The petrov-Galerkin approach. The minimum error approach. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: メモリ使用量の少ない GCR 法の提案

メモリ使用量の少ない GCR 法の提案

東京大学理学部情報科学科 工藤 誠東京大学情報基盤センター 黒田 久泰東京大学大学院理学系研究科情報科学専攻

片桐 孝洋東京大学情報基盤センター 金田 康正

Page 2: メモリ使用量の少ない 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 ,,

Page 3: メモリ使用量の少ない GCR 法の提案

GCR 法の特徴CG 法の非対称問題への拡張として開発された [Eisenstat, 83]Arnoldi 原理に基づき、各反復で残差を最小にする ( GMRES 法と数学的に同値な残差)

広範囲の非対称問題が解ける逐次成分がなく、並列性が高いGMRESR 法 [Vorst,91] の一部として使われている

GCR 法の利点

Page 4: メモリ使用量の少ない 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 ,,

Page 5: メモリ使用量の少ない GCR 法の提案

過去の研究

計算量を減らす efficient GCR(eGCR) 法が考案された [Yang,95]

しかし、依然としてメモリ使用量が大きいという問題は解決されていない!!

Page 6: メモリ使用量の少ない GCR 法の提案

提案する2つのアルゴリズム

Memory efficient GCR(meGCR) 法 計算量は eGCR 法とほぼ同じ メモリ使用量は eGCR 法の約半分まで減る可能

性がある

Unrolled GCR(uGCR) 法 計算量、メモリ使用量とも、 eGCR 法より少な

Page 7: メモリ使用量の少ない GCR 法の提案

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 法

Page 8: メモリ使用量の少ない 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 を使って表すことができる

Page 9: メモリ使用量の少ない GCR 法の提案

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 を使って表すことができる^

Page 10: メモリ使用量の少ない GCR 法の提案

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 法と同程度

^

Page 11: メモリ使用量の少ない GCR 法の提案

Unrolled GCR 法ループ内で使われている値は、

すべて Air0 を使って表すことができる

ループの前で、 Air0 を計算しておくループ内の計算で必要な (Air0, A

jr0) も 計算しておく

密行列積( BLAS3 )の演算となり、

効率的

Air0 は dominant な固有ベクトルの方向を向いてくるので、精度の低下が予想される

ループ内はスカラー計算のみとな

メモリ使用量はmeGCR と同じ

Page 12: メモリ使用量の少ない GCR 法の提案

計算量の比較

計算要素 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 の )密行列 - 密行列積

Page 13: メモリ使用量の少ない GCR 法の提案

メモリ使用量の比較 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 = 問題サイズ ( 数万~数百万 )

Page 14: メモリ使用量の少ない GCR 法の提案

メモリ使用量の比較 2( 係数行列、解ベクトルを含んだ全体のメモリ使用

量 )

method 全体のメモリ使用量

GCR

eGCR

meGCR

uGCR

)42( zkN22)42( kzkN 22)4( kzkN 25)3( kzkN

k = リスタート周期 ( 数十~数百 ) n = 問題サイズ ( 数万~数百万 ) z = 係数行列の一行の最大非零要素

Page 15: メモリ使用量の少ない GCR 法の提案

実験環境

計算機 : HITACHI SR2201 (東京大学情報基盤センター)

CPU: 300MFlops × 1024PE Main memory: 256MB/PE Communication: 300MB/s

通信ライブラリ: MPI (Message Passing Interface)

Page 16: メモリ使用量の少ない GCR 法の提案

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

Page 17: メモリ使用量の少ない GCR 法の提案

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

Page 18: メモリ使用量の少ない GCR 法の提案

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

Page 19: メモリ使用量の少ない GCR 法の提案

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

Page 20: メモリ使用量の少ない GCR 法の提案

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

Page 21: メモリ使用量の少ない GCR 法の提案

まとめと考察

GCR 法の2つのアルゴリズムを提案した Memory efficient GCR 法

計算量は、既存の方法とほぼ同じ メモリ使用量は、最高で既存の方法の約半分

まで減らすことが可能 Unrolled GCR 法

計算量、メモリ使用量とも既存の方法より少ない

収束性に問題がなく、実用的!

精度の問題があるので、今後の研究が必要

より大きな問題が解けるリスタート周期を大きく 取れるので、収束の悪い 問題が解ける