Upload
ira
View
106
Download
8
Embed Size (px)
DESCRIPTION
Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能. 名古屋大学 計算理工学専攻 山本有作 日本応用数理学会年会 2006 年 9 月 18 日. 目次. 1 . はじめに 2 . 従来の特異値分解アルゴリズムとその問題点 3 . Level-3 BLAS に基づく特異値分解アルゴリズム 4 . 性能評価 5 . まとめと今後の課題. 1 . はじめに. 本研究で対象とする問題 実正方行列 A の特異値分解 A = U S V T A : n × n 密行列 S : n × n 対角行列 - PowerPoint PPT Presentation
Citation preview
Level-3 BLAS に基づく特異値分解アルゴリズムの SMP 上での性能
名古屋大学 計算理工学専攻山本有作
日本応用数理学会年会2006 年 9 月 18 日
目次
1 . はじめに
2 . 従来の特異値分解アルゴリズムとその問題点
3 . Level-3 BLAS に基づく特異値分解アルゴリズム
4 . 性能評価
5 . まとめと今後の課題
1 . はじめに
• 本研究で対象とする問題– 実正方行列 A の特異値分解 A = UVT
• A : n×n 密行列• : n×n 対角行列• U , V : n×n 直交行列
• 応用分野– 統計計算 (主成分分析,最小 2 乗法)– 信号処理 (独立成分分析など)– 画像処理 (圧縮,ノイズ除去)– 電子状態計算
本研究の目的
• 共有メモリ型並列計算機( SMP )上で高性能を達成できる特異値分解ソルバを作成し,評価
• 背景– 問題の大規模化– CPU のマルチコア化などによる SMP 環境の普及
Cell プロセッサ( 1+8 コア)
デュアルコア Xeon
2 . 従来の特異値分解アルゴリズムとその問題点
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 アルゴリズム
逆変換
各部分の演算量と実行時間
(8/3) n3
O(n2)~ O(n3)
4mn2
二重対角化
二重対角行列の特異値・特異 計算ベクトル
逆変換
A の特異ベクトル {ui }, {vi
}
密行列 A 演算量
・二重対角化が実行時間の 大部分を占める・速度向上率が低い
(左右 m 本ずつの特異ベクトル)
実行時間(全特異 )ベクトル
0
100
200
300
400
500
600
1 2 4
逆変換分割統治法二重対角化
n = 5000 , Xeon 2.8GHz ( 1 ~ 4PU )LAPACK での実行時間(秒)
二重対角化の性能が出ない原因
• 二重対角化の演算パターン– 左右からのハウスホルダー変換による行・列の消去
• A(k) := (I – w wT ) A(k)
• 演算は level-2 BLAS (行列ベクトル積と rank-1 更新)– ただしブロック化により半分は level-3 BLAS にすることが可
能
• 演算パターンに関する問題点– Level-2 BLAS はデータ再利用性が低い。 キャッシュの有効利用が困難であり,単体性能が出にくい。 プロセッサ間のアクセス競合により,並列性能向上も困難
k
0
0
0
0
0
0
ゼロにしたい部分影響を受ける部分
非ゼロ要素
右からの変換
左からの変換
A(k)
• 2段階の二重対角化アルゴリズム( Bischof et al., ’93 )– 密行列 A をまず帯幅 L の下三角帯行列 C に変換– 次にこの帯行列を下二重対角行列 B に変換
• 二重対角化を2段階で行うことの利点– 前半の変換は, level-3 BLAS (行列乗算)のみを使って実行
可能 キャッシュの有効利用が可能
– 後半の変換は level-2 BLAS が中心だが,演算量は O(n2L)• 前半部に比べてずっと小さい。
3 . Level-3 BLAS に基づく特異値分解アルゴリズム
0
0
A B
次数 n
約 (8/3)n3 O(n2L)
下三角帯行列化
村田法の拡張0
0
帯幅 LC
下三角帯行列化のアルゴリズム
ブロック鏡像変換によるブロック列の消去– ブロック鏡像変換 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 におけるメモリ競合の影響を低減可能
本アルゴリズムの長所と短所
• 長所– Level-3 BLAS の利用により,二重対角化の性能を向上可能
• 同様のアイディアに基づく三重対角化アルゴリズムでは,高い単体性能・並列性能を確認済み
• 短所– 特異ベクトル計算のための計算量・記憶領域が増大
• 2段階の逆変換あるいは帯行列の特異値分解が必要• 詳しくは次のスライドで説明
– 二重対角化の高速化効果が大きければ,計算量増大を考慮しても全体としては高速化できると予想
– 特に,求める特異ベクトルが少ない場合は効果が大きいはず。
特異ベクトルの計算手法
• 方法1: 下三角帯行列の特異ベクトルを直接計算
• 長所– 固有ベクトルの逆変換は1段階のみ– 逆変換の演算量は 4mn2 (従来法と同じ)
• 短所– 特異ベクトル計算のための実用的な手法は帯行列用逆反復法のみ– 直交化が必要であり,演算量は O(mnL2+m2n)
0
0
A B
n
4mn2
0
0C
特異値{σi }
L
C の特異ベクトル{zi }{wi }
A の特異ベクトル{ui }{vi }
QR 法dqds 法mdLVs 法二分法
帯行列用逆反復法O(mnL2+ m2n)
特異ベクトルの計算手法(続き)
• 方法2: 二重対角行列の特異ベクトルを計算して2回逆変換
• 長所– 二重対角行列の特異値・特異ベクトルを求める任意の手法が適用可
能• 短所
– 逆変換の演算量が 8mn2 (従来法の 2倍)。ただし level-3 化可能– 村田法の変換をすべて記憶するため, n2 の記憶領域が余計に必要
0
0
A B
n
4mn2 4mn2
0
0C
B の特異ベクトル{xi }{yi }
特異値{σi }
L
C の特異ベクトル{zi }{wi }
A の特異ベクトル{ui }{vi }
QR 法DC 法MR3
I-SVD
SMP 上での level-3 BLAS の高速性を鑑み,方法2を採用
アルゴリズムの全体像
• 2段階の二重対角化と2段階の逆変換• 二重対角行列の特異値分解には分割統治法を使用
• 特徴– 演算量が O(n3) となる部分はすべて level-3 BLAS で実行可能– SMP 向け並列化は,基本的に並列版 level-3 BLAS の使用により実現– 村田法は OpenMP によるパイプライン型の並列化
0
0
A B
4mn2 4mn2
0
0C
B の特異値 {σi }特異 ベクトル {xi }{yi }
C の特異ベクトル{zi }{wi }
A の特異ベクトル{ui }{vi }
(8/3)n3 O(n2L)
分割統治法( LAPACK DBDSDC )
level-3 level-2
level-3 level-3
O(n2) ~ O(n3)level-3
村田法の並列化
• パイプライン型の並列化– 第 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 . 性能評価
• 評価環境– Xeon (2.8GHz), 1~ 4PU
• Linux + Intel Fortran ver. 8.1• BLAS: Intel Math Kernel Library• LAPACK: Intel Math Kernel Library• ピーク性能: 5.6GFLOPS/CPU
– 富士通 PrimePower HPC2500 (2.0GHz), 1~ 32PU• 富士通 Fortran• BLAS: 富士通並列化版 BLAS• LAPACK: 富士通並列化版 LAPACK• ピーク性能: 8GFLOPS/CPU
• 評価対象・条件– Level-3 BLAS に基づくアルゴリズムと LAPACK の性能を比較– n = 1200 ~ 20000 の乱数行列の特異値分解(全特異ベクトルを計
算)• Level-3 アルゴリズムにとっては一番不利な条件
– Level-3 アルゴリズムの L (半帯幅)は各 n ごとに最適値を使用
Xeon での実行時間
• プロセッサ数を変えたときの実行時間
• 結果– Level-3 アルゴリズムでは PU 数に応じて実行時間が順調に減少
• 4PU での加速率は 3~ 3.2 倍– 4PU の場合は level-3 アルゴリズムが従来法より高速
0
2
4
6
8
10
12
14
16
1 2 4
level-3LAPACK
0
20
40
60
80
100
120
1 2 4
level-3LAPACK
0
100
200
300
400
500
600
700
800
1 2 4
level-3LAPACK
n = 1200 n = 2500 n = 5000
実行時間
(
秒
)
PU 数
HPC2500 での実行時間
• プロセッサ数を変えたときの実行時間
• 結果– Level-3 アルゴリズムは従来法に比べて最大 3.5倍高速– プロセッサ数が多いとき加速率が鈍るのは,非並列化部分(ブ
ロック鏡像変換の作成など)の影響と思われる。
0
100
200
300
400
500
600
700
800
1 2 4 8 16 32
level-3LAPACK
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
1 2 4 8 16 32
level-3LAPACK
0
2000
4000
6000
8000
10000
12000
14000
1 2 4 8 16 32
level-3LAPACK
n = 5000 n = 10000 n = 20000
実行時間
(
秒
)
PU 数
3.5 倍
0
100
200
300
400
500
600
700
800
1 2 4
2逆変換1逆変換
分割統治法村田法帯行列化
両手法の実行時間の内訳
• Xeon , n=5000 の場合
• 考察– Level-3 アルゴリズムでは,どの部分の実行時間も順調に減少
– 逆変換 1 (村田法の逆変換)の占める時間が大きい。 この部分について,さらに高速化が必要– 必要な特異ベクトルの本数が少ない場合, level-3 アルゴリ
ズムはさらに有利
0
100
200
300
400
500
600
1 2 4
逆変換分割統治法二重対角化
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
1 2 4 8 16 32
2逆変換1逆変換
分割統治法村田法帯行列化
両手法の実行時間の内訳
• HPC2500 , n=10,000 の場合
• 考察– Level-3 アルゴリズムでは,どの部分の実行時間も順調に減少
– 従来法は,二重対角化の部分の加速が鈍い。• ただし, 32PU で 6倍程度は加速• メモリバンド幅が大きいためと思われる。
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
1 2 4 8 16 32
逆変換分割統治法二重対角化