QR分解のブロック化

Download Report

Transcript QR分解のブロック化

QR分解のブロック化
2008年 7月10日
応用数理工学特論 期末発表
深谷 猛
QR分解とは?
◆QR分解
n
m
A
m
→
Q
n
×
R
(直交行列) (上三角行列)
◆応用例
• 最小二乗問題
• 長方行列の特異値分解
• 三重対角化(二重対角化)のブロックアルゴリズム
◆主な計算方法
• グラム・シュミットの直交化
• ハウスホルダー変換
今回はこの方法に注目
QTQ = I (単位行列)
ハウスホルダー変換によるQR分解
◆ハウスホルダー変換
(直交行列)
◆QR分解への適用
→
→
→
→
(直交行列の積⇒直交行列)
ハウスホルダーQR分解の問題点
• 行列ベクトル積
:
• 行列のランク1更新 :
両方ともLevel-2 BLAS
データの再利用性が低いため,計算機の性能が出ない
Level-3 BLASを使うためにブロック化を行う
ハウスホルダー変換のブロック化
◆compact-WY representation
Y T
YT
計算コスト : O(ml 2)
◆Level-3 BLASによるハウスホルダー変換の作用
2l 回のLevel-2 BLAS
3回のLevel-3 BLAS
ハウスホルダーQR分解のブロック化
◆Fixed-size Blocking (LAPACKで使用されている手法)
入力行列を幅 l のブロックに分割
1 2 3 → 1 2 3
l
l
l
(ⅰ)ブロック内のQR分解
従来(非ブロック化)のアルゴリズム
1 → 1
Level-2 BLAS
(ⅱ)compact-WY representationの計算
Level-2 BLAS
(ⅲ)compact-WY representationの作用
2 3 → 2 3
Level-3 BLAS
QR分解のブロック化におけるポイント
◆ブロック化による高速化の原理
Lv.2
全体の計算量は増加
(compact-WY representationの計算)
WY
Level-3 BLASの部分で時間短縮
Lv.3
計算時間
両者ともブロック幅に依存
◆様々なブロック化方法
• Variable-size Blocking
• Recursive Blocking
• 複数のブロック化方法の組合せ(ハイブリッド型)
計算環境や問題サイズに合ったブロック化が望ましい
計算量
数値実験について
◆実験方法
• 自作プログラム同士(非ブロック化とブロック化)
• LAPACKのDGEQR2(非ブロック化)とDGEQRF(ブロック化)
それぞれ行列サイズを変えて,QR分解の実行時間を測定
(※自作のブロック化プログラムはブロック幅を変化させて測定)
高速化率 = 非ブロック化での実行時間 / ブロック化での実行時間
◆実験環境
• CPU
: Opteron(2.0GHz)
• BLAS : AMD ACML
Level-2 BLASとLevel-3 BLASの性能比較
 DGEMV (Level-2 BLAS) : n × n 行列と n 次元ベクトルの積
MFLOPS
 DGEMM (Level-3 BLAS) : n × n 行列と n × n 行列の積
4000.0
3500.0
3000.0
2500.0
6~7倍程度の性能差
2000.0
1500.0
1000.0
500.0
0.0
250
500
750
1000 1250 1500 1750 2000 2250 2500 2750 3000
n
ブロック化による高速化率の評価
◆自作プログラム
行列サイズ
実行時間(秒)
高速化率
非ブロック化
ブロック化
ブロック幅
1000×1000
3.84
0.54
30
7.04
3000×1000
22.7
2.43
40
9.33
3000×3000
174
13.4
60
12.96
◆LAPACKのルーチン
実行時間(秒)
行列サイズ
高速化率
非ブロック化
ブロック化
(DGEQR2)
(DGEQRF)
1000×1000
3.13
0.51
ー
6.09
3000×1000
13.3
1.99
ー
6.69
3000×3000
89.8
11.7
ー
7.67
ブロック幅
ブロック幅による実行時間の変化
(自作プログラムを使用)
実行時間(秒)
(サイズ : 3000×1000)
4.0
行列サイズが小さく,Level3 BLASの性能がでない
3.5
3.0
2.5
best
2.0
1.5
Level-3 BLAS以外の演算量の増加
1.0
(ブロック内QR分解 & WY representation計算)
0.5
0.0
10
20
30
40
50
60
ブロック幅
70
80
90
100
行列サイズによる高速化率の変化
高速化率
14.0
LAPACK
12.0
自作プログラム
10.0
8.0
6.0
BLASの性能差と同程度
4.0
2.0
0.0
250
500
750
1000 1250 1500 1750 2000 2250 2500 2750 3000
行列のサイズ(正方行列)
まとめ
• ハウスホルダー変換によるQR分解のブロック化を行った.
• compact-WY representationを用いてブロック化を行うこと
で,Level-3 BLASを使うことが可能になった.
• 自作プログラムを用いた数値実験の結果,最大で13倍程
度の高速化を確認できた.
• LAPACKのルーチンを用いた数値実験の結果,BLASの性
能差と同程度の高速化率が確認できた.
(補足)QR分解のアルゴリズム
◆non-blocking
(補足)QR分解のアルゴリズム
◆fixed-size blocking