level-3 blas に基づく二重対角化 アルゴリズムとその性能評価
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 PresentationTRANSCRIPT
目次
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
• 上記の結果,上三角部分に非零要素がはみ出すので,左右から直交変換を繰り返し掛けることにより,はみ出した分を右下に移動し,右下隅から追い出す。
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)