level-3 blas に基づく二重対角化 アルゴリズムとその性能評価

27
Level-3 BLAS ににににににににに ににににににににににににに ににににに ににににににに にににに 2006 に 1 に 5 に -7 に に 3 にににににににに

Upload: zenaida-cantu

Post on 01-Jan-2016

92 views

Category:

Documents


0 download

DESCRIPTION

Level-3 BLAS に基づく二重対角化 アルゴリズムとその性能評価. 名古屋大学 計算理工学専攻 山本有作 2006 年 1 月 5 日 -7 日 第 3 回計算数学研究会. 目次. 1 .  はじめに 2 .  従来の二重対角化アルゴリズム 3 . Level-3 BLAS に基づく二重対角化アルゴリズム 4 .  性能評価 5 .  特異ベクトルの計算手法 6 .  まとめと今後の課題. 1 .  はじめに. 本研究で対象とする問題 実正方行列 A の下二重対角行列への変換 B = U 0 T AV 0 A : n × n 密行列 - PowerPoint PPT Presentation

TRANSCRIPT

Level-3 BLAS に基づく二重対角化アルゴリズムとその性能評価

名古屋大学 計算理工学専攻山本有作

2006 年 1 月 5 日 -7 日第 3 回計算数学研究会

目次

1 .  はじめに

2 .  従来の二重対角化アルゴリズム

3 .   Level-3 BLAS に基づく二重対角化アルゴリズム

4 .  性能評価

5 .  特異ベクトルの計算手法

6 .  まとめと今後の課題

1 .  はじめに

• 本研究で対象とする問題– 実正方行列 A の下二重対角行列への変換 B = U0

TAV0

• A : n×n 密行列• B : n×n 下二重対角行列• U0 , V0 : n×n 直交行列

• 応用分野– 行列 A の特異値分解に対する前処理

• 画像処理の分野では, n = 10,000 以上の大規模行列に対する特異値分解の需要あり

• 必要な特異ベクトルは数本程度の場合が多い• 前処理を数分程度で行えることが望ましい

特異値分解の流れ

U0TAV0 = B

(U0, V0: 直交行列 )

Bvi =σi xi

BTxi =σi yi

vi = V0 yi

ui = U0 xi

二重対角化

二重対角行列の特異値・特異 計算ベクトル

逆変換

二重対角行列 B

B の特異値 {σi } ,  特異ベクトル {xi }{yi }

A の特異ベクトル {ui }, {vi

}

密行列 A 計算内容 計算手法

ハウスホルダー法

QR 法分割統治法MR3 アルゴリズムI-SVD アルゴリズム

逆変換

各部分の演算量

• m 組の特異値・特異ベクトルを求める場合の演算量– 二重対角化: (8/3) n3

– 特異値の計算: O(mn) ~ O(n2)

– 特異ベクトルの計算: O(mn) ~ O(m2n)

– 逆変換: O(mn2)

– m ≪ n の場合は演算量の大部分を二重対角化が占める。– ハウスホルダー法の高速化が必要

2 .  従来の二重対角化アルゴリズム

• ハウスホルダー法による二重対角化– 鏡像変換 H = I – wwT による列の消去

• H は対称な直交行列• 与えられたベクトルの第1成分以外をゼロにする。

• 第 k ステップでの処理

k

00

00

00

ゼロにしたい部分 影響を受ける部分非ゼロ要素

右から HkR

を乗算

左から HkL

を乗算

左から H

を乗算

ベクトル

ハウスホルダー法のアルゴリズム

[Step 1]   k = 1 から n –1 まで以下の [Step 2] ~ [Step 8] を繰り返す。  [Step 2]   A(k, k+1:n) を 0 にする鏡像変換 Hk

R = I – kR wk

R (wkR)T の

計算  [Step 3]  行列ベクトル積:  p := k

R A(k:n, k:n) wkR

  [Step 4]  行列の rank-1 更新:  A(k:n, k:n) := A(k:n, k:n) – p(wkR)T

  [Step 5]   A(k+2:n, k) を 0 にする鏡像変換 HkL = I – k

L wkL (wk

L)T の計算

  [Step 6]  行列ベクトル積:  qT := kL (wk

L)T A(k+1:n, k:n)

  [Step 7]  行列の rank-1 更新:  A(k +1:n, k:n) := A(k +1:n, k:n) – wkLqT

k

00

00

A(k, k+1:n)

A(k +2:n, k)

A(k:n, k:n)

A(k +1:n, k :n)

ハウスホルダー法の特徴と問題点

• 特徴– 全演算量のほとんどが, level-2 BLAS である行列ベクトル

積と行列の rank-1 更新で占められる。• 全演算量: 約 (8/3)n3

• 行列ベクトル積の演算量: 約 (4/3)n3

• rank-1 更新の演算量: 約 (4/3)n3

• 問題点– level-2 BLAS のため,行列データの再利用性なし

• キャッシュミス, SMP でのメモリ競合の影響大

– 最近のマイクロプロセッサ, SMP 上での高性能が期待できない。

• 基本的なアイディア– 密行列 A をまず帯幅 L の下三角帯行列 C に変換– 次にこの帯行列を下二重対角行列 B に変換

• 二重対角化を2段階で行うことの利点– 下三角帯行列への変換は, level-3 BLAS のみを使って実行

可能– 下三角帯行列から二重対角行列への変換の演算量は O(n2L)

であり,前半部に比べてずっと小さい。

3 .   Level-3 BLAS に基づく二重対角化アルゴリズム

0

0

A B

次数 n

約 (8/3)n3 O(n2L)

下三角帯行列化

村田法の拡張0

0

帯幅 LC

(参考)対称行列の三重対角化の場合

• Bischof のアルゴリズム( Bishof et al., 1993, 1994 )– 対称密行列 A をまず半帯幅 L の対称帯行列 C に変換– 次にこの帯行列を三重対角行列 T に変換

• Bischof のアルゴリズムの性能・精度(山本 , 2005 )– 固有値の誤差は, LAPACK で使われる Dongarra のアルゴリ

ズムに比べ,多くの場合 2 ~ 3 倍程度– 速度は 2 ~ 3 倍高速– 様々なマイクロプロセッサ上で,ピークの 50 ~ 70% の性能を

達成

0

0 0

0

半帯幅 L

A C T

次数 n

約 (4/3)n3 O(n2L)

帯行列化 村田法

下三角帯行列化のアルゴリズム

ブロック鏡像変換によるブロック列の消去– ブロック鏡像変換 H = I – WαWT

• H は直交行列• 与えられたブロックベクトルを上三

角行列(正確には右上三角部分のみ非零でそれ以外が零の行列)に変形

第 K ステップでの処理

ゼロにしたい部分 影響を受ける部分非ゼロ要素

左から H

を乗算

ブロックベクトル

0

0

0

0

0

0

右から HKR

を乗算

左から HKL

を乗算

下三角帯行列化のアルゴリズム(続き)

[Step 1]   K = 1 から N /L–1 まで以下の [Step 2] ~ [Step 6] を繰り返す。  [Step 2]   A(K, K:N) を上三角行列に変形する鏡像変換      HK

R = I – WKR K

R (WKR)T の計算

  [Step 3]  行列・ 積: ブロックベクトル P := A(K:N, K:N) WKR K

R

  [Step 4]  行列の rank-L 更新:  A(K:N, K:N) := A(K:N, K:N) – P(WKR)T

  [Step 5]   A(K+1:N, K) を上三角行列に変形する鏡像変換      HK

L = I – WKL K

L (WKL)T の計算

  [Step 6]  行列・ 積: ブロックベクトル QT := KL (WK

L)T A(K+1:N, K:N)

  [Step 7]  行列の rank-L 更新:      A(K+1:N, K:N) := A(K+1:N, K:N) – Wk

LQT

すべて level-3 BLAS (行列乗算)• 本アルゴリズムの特徴

– 演算が level-3 BLAS 中心のため,キャッシュの有効利用が可能

– SMP におけるメモリ競合の影響を低減可能

下三角帯行列の二重対角化

• 対称帯行列の三重対角行列への相似変換(村田法)– 第 k 列の三重対角化

• 第 k 列の副対角要素より下を 0 にする鏡像変換を左と右からかける。

– Bulge-chasing• 上記の結果,帯より下に非零要素がはみ出すので,相似変換を繰

り返して,はみ出した分を右下に移動し,右下隅から追い出す。

• 村田法のアイディアの二重対角化への適用( Lang, 1996 )– 第 k 列の二重対角化

• 第 k 列の副対角要素より下を 0 にする鏡像変換を左からかける。– Bulge-chasing

• 上記の結果,上三角部分に非零要素がはみ出すので,左右から直交変換を繰り返し掛けることにより,はみ出した分を右下に移動し,右下隅から追い出す。

第 1 列の二重対角化と bulge-chasing

左側からの直交変換で更新された要素

左側からの直交変換で更新された要素

第 2 列の二重対角化と bulge-chasing

左側からの直交変換で更新された要素

左側からの直交変換で更新された要素

演算量は 8n2L

SMP向けの並列化

• 下三角帯行列化– 並列版の Level-3 BLAS を使えば,逐次版のプログラムを

そのまま SMP 上で並列化可能– OpenMP などを用いて手動で並列化すれば,並列化効率を

更に向上可能

SMP向けの並列化(続き)

• 二重対角化向け村田法– 第 1 列の二重対角化処理と第 2 列の二重対角化処理の並列性

– 一般の場合の並列性• 第 1 列に対する bulge-chasing の第 k ステップ• 第 2 列に対する bulge-chasing の第 k–2 ステップ• 第 3 列に対する bulge-chasing の第 k–4 ステップ ・・・

  が同時に実行可能

第 1 列の bulge-chasing における,右側からの第 3 の直交変換で更新される要素

第 2 列の bulge-chasing における,右側からの第 1 の直交変換で更新される要素

第 1 列による二重対角化は,今後  より右の要素にのみ影響を及ぼす。第 1 列の計算が右下まで行くのを待たずに,第 2 列の計算を開始できる。

4 .  性能評価

• 評価環境– Opteron (1.8GHz), 1 ~ 4CPU

• Linux 上で PGI Fortran + GOTO BLAS を使用• ピーク性能:  3.6GFLOPS/CPU

– PowerPC G5 (2.0GHz), 1 ~ 2CPU• Mac OS X 上で IBM XL Fortran + GOTO BLAS を使用• ピーク性能:  8GFLOPS/CPU

• 評価対象– n = 2500 ~ 12500 の乱数行列の二重対角化– 下三角帯行列化部分は並列版 GOTO BLAS ,村田法部分は OpenMP により並列化

• 評価方法– 下三角帯行列化 + 村田法の合計時間を測定し,演算量を (8/3)n3 として MFLOPS

値を算出– ブロックサイズ L は,各 n に対して最適な値を使用

Opteron (1.8GHz) 1CPU 上での性能

n = 12500 のとき,本アルゴリズムはピークの 80% の性能を達成

Opteron 1CPU

0

500

1000

1500

2000

2500

3000

3500

2500 5000 7500 10000 12500

Opteron 1CPU

Matrix size

Perf

orm

ance

(G

FLO

PS)

ピークの80%

L=100

Opteron (1.8GHz) 4CPU 上での性能

n = 12500 のとき,本アルゴリズムは 4CPU で 3.3 倍の加速率ピークの 67% の性能を達成

0

2000

4000

6000

8000

10000

12000

2500 5000 7500 10000 12500

Opteron 1CPUOpteron 4CPUs

Matrix size

Perf

orm

ance

(M

FLO

PS)

3.3 倍

L=100

L=100

ピークの67%

286s

0

500

1000

1500

2000

2500

L=251CPU

L=501CPU

L=1001CPU

L=254CPU

L=504CPU

L=1004CPU

村田法下三角帯行列化

各部分の演算時間( Opteron, n=12500 )E

xecu

tion

tim

e (s

)

大規模問題に対しては,村田法の占める時間の割合は小さい。村田法の加速率は, L=100 のとき 4CPU で 3.3 倍

PowerPC G5 (2.0GHz) 1CPU 上での性能

n = 12500 のとき,本アルゴリズムはピークの 57% の性能を達成

PowerPC G5 1CPU

0

1000

2000

3000

4000

5000

6000

7000

8000

2500 5000 7500 10000 12500

PowerPC G5 1CPU

Matrix size

Perf

orm

ance

(G

FLO

PS)

ピークの57%

L=100

PowerPC G5 (2.0GHz) 2CPU 上での性能

n = 12500 のとき,本アルゴリズムは 2CPU で 1.5 倍の加速率ピークの 42% の性能を達成

0

1000

2000

3000

4000

5000

6000

7000

8000

2500 5000 7500 10000 12500

PowerPC G5 1CPUPower PC G5 2CPUs

Matrix size

Perf

orm

ance

(M

FLO

PS)

1.5 倍

L=100

L=100

ピークの42%

421s

0

200

400

600

800

1000

1200

1400

1600

1800

L=251CPU

L=501CPU

L=1001CPU

L=252CPU

L=502CPU

L=1002CPU

村田法下三角帯行列化

各部分の演算時間( PowerPC G5, n=12500 )E

xecu

tion

tim

e (s

)

大規模問題に対しては,村田法の占める時間の割合は小さい。村田法の加速率は, L=100 のとき 2CPU で 1.4 倍

5 .  特異ベクトルの計算手法

• 方法1: 二重対角行列の特異ベクトルを計算して2回逆変換

• 長所– 二重対角行列の特異値・特異ベクトルを求める任意の手法が適用可

能• 短所

– 逆変換の演算量が 4mn2 (ただし, m が小さければ影響は少ない)– 村田法の変換をすべて記憶するため, n2 の記憶領域が余計に必要

0

0

A B

n

2mn2 2mn2

0

0C

B の特異ベクトル{xi }{yi }

特異値{σi }

L

C の特異ベクトル{zi }{wi }

A の特異ベクトル{ui }{vi }

QR 法DC 法MR3

I-SVD

5 .  特異ベクトルの計算手法

• 方法2: 下三角帯行列の特異ベクトルを直接計算

• 長所– 村田法の逆変換のための演算量( 2mn2 )・記憶領域( n2 )が不要

• 短所– 帯行列用逆反復法( O(mnL2) )と特異ベクトルの直交化( O(m2n) )が

必要– 特異値 σi は C の高精度な固有値でないため,ツイスト分解は使用不可

0

0

A B

n

2mn2

0

0C

特異値{σi }

L

C の特異ベクトル{zi }{wi }

A の特異ベクトル{ui }{vi }

QR 法dqds 法mdLVs 法二分法

帯行列用逆反復法O(mnL2+ m2n)

5 .  特異ベクトルの計算手法

• 方法3: 村田法を使わず帯行列 C の特異値・特異ベクトルを直接計算

• 長所– 村田法の逆変換のための演算量( 2mn2 )・記憶領域( n2 )が不要– うまく行けば,直交化が不要なアルゴリズムを作れる可能性あり

• 問題点– そもそも帯行列版の mdLVs 法,ツイスト分解は構成できるか?– 演算量,演算の安定性は?

A

n

2mn2

0

0C

特異値{σi }

L

C の特異ベクトル{zi }{wi }

A の特異ベクトル{ui }{vi }

帯行列版分解ツイスト

帯行列版mdLVs 法