Upload
shelley-greer
View
33
Download
0
Embed Size (px)
DESCRIPTION
非対称行列向けマルチシフト QR 法の 性能予測方式. 名古屋大学 計算理工学専攻 山本有作 2006 年 6 月 12 日 HPC 研究会. 目次. 1 . はじめに 2 . マルチシフト QR 法 3 . 本研究の目的 4 . 性能予測手法 5 . 実験結果 6 . 関連研究 7 . まとめと今後の課題. 1 . はじめに. 本研究で対象とする問題 標準固有値問題 A x = l x A : n × n 非対称密行列 応用分野 MHD 化学工学 量子化学 流体力学 - PowerPoint PPT Presentation
Citation preview
非対称行列向けマルチシフト QR 法の
性能予測方式
名古屋大学 計算理工学専攻山本有作
2006 年 6 月 12 日HPC 研究会
目次
1 . はじめに
2 . マルチシフト QR 法
3 . 本研究の目的
4 . 性能予測手法
5 . 実験結果
6 . 関連研究
7 . まとめと今後の課題
1 . はじめに
• 本研究で対象とする問題– 標準固有値問題 Ax = x
• A : n×n 非対称密行列
• 応用分野– MHD
– 化学工学– 量子化学– 流体力学
• Cf. Bai and Demmel: A test matrix collection for non-Hermitian eigenvalue problems.
非対称行列の固有値計算の流れ
QTAQ = H(Q: 直交行列 )
Hui =i ui
vi = Q ui
ヘッセンベルグ化
固有値の計算
逆変換
ヘッセンベルグ行列 H
A の固有値 {i }
A の固有ベクトル {vi }
密行列 A 計算内容 計算手法
ハウスホルダー法
QR 法分割統治法
逆変換
固有ベクトルの計算
H の固有 ベクトル {ui
}
高い信頼性
各部分の実行時間
• 全固有値を求める場合の演算量– ヘッセンベルグ 化: (10/3) n3
– QR 法: 10n3 (経験値)
– 演算量(時間)の大部分を QR 法が占める。– QR 法の高速化が必要
0
5
10
15
20
25
30
35
40
45
OLM10
00
TUB1
000
RDB1
250
TOLS
2000
PDE2
961
MHD32
00B
QR
Hessenberg reduction
Execution time (min)
Origin2000 1PU ( R12000 , 400MHz )上での実行時間K. Braman et al: “The Multishift QR Algorithm I” より抜粋Hessenberg 化の時間は推定値
QR 法の特徴と高性能計算
QR 法の特徴 高性能計算の条件
•計算の逐次性 ( bulge-chasing 型演算)
•低いデータ再利用性
•計算の並列性
•高いデータ再利用性 (キャッシュの有効利用)
オリジナルの QR 法のままでは高性能化が困難高性能計算の条件を満たす新しいアルゴリズムが必要
マルチシフト QR 法
ダブルシフト QR 法• 原理
– Ak の右下の 2×2 行列の固有値 s1 , s2 をシフトとして用い,QR 法の 2 ステップを一度に実行
• (Ak – s1 I)(Ak – s2 I) = Qk Rk
• Ak+2 = Qk–1Ak Qk
• 陰的ダブルシフト QR 法
• (Ak – s2I)(Ak – s1I) の第 1 列を e1 の定数倍にするハウスホルダー変換 H0 を求める
• Ak’ = H0tAk H0 (バルジ導入)
• 直交行列による相似変換を繰り返すことにより, Ak’ を再びヘッセンベルグ行列に変形する(バルジ追跡)
• これにより得られる行列を Ak+2 とする
0
0
0
0
0
H0 AkH0
Ak
Ak+2
バルジ
陰的ダブルシフト QR 法の演算パターン
• バルジ追跡における演算– 3×3 のハウスホルダー変換を左右からかけることにより, bulge
を 1 つ右下に動かす
• 演算の特徴– 並列粒度は O(n)
• 並列アルゴリズム: R. Suda et al. ( 1999 ), G. Henry et al. (2002)
– QR 法の 1 ステップで,各行列要素は 3 回のみ更新
データ再利用性が低く,キャッシュの有効利用が困難
0 0 0
左から Hl を乗算 右から Hl を乗算
0 にしたい要素 更新される要素
2 . マルチシフト QR 法
• 原理 ( Bai & Demmel, 1989 )– Ak の右下の m×m 行列の固有値 s1 , s2 , … , sm をシフトとし
て用い, QR 法の m ステップを一度に実行
• (Ak – smI) ・・・ (Ak – s2I)(Ak – s1I) = Qk Rk
• Ak+m = Qk–1Ak Qk
• シフト数増加の効果– 並列粒度は O(m) 倍に増加– 行列の各要素に対する更新回数も O(m) 倍に増加
– データ再利用性の向上により,キャッシュの有効利用が可能
( WY representation を用いた BLAS3 化)
マルチシフト QR 法におけるバルジ追跡
• 方式1: 大きなバルジ 1 個を追跡 ( Bai & Demmel, 1989 )
– シフト s1, s2, …, sm を含む (m+1)×(m+1) のバルジを導入
– (m+1)×(m+1) のハウスホルダー変換を用いてこれを追跡
• 方式2: 小さなバルジ複数個を追跡 ( Braman et al., 2003 )
– シフトを 2 つずつ組にし, 3×3 の小さなバルジ m/2 個を導入
– ダブルシフト QR 法と同様にして,これらを追跡– バルジ同士は 3 行離れていれば,干渉なしに計算が可能
• 密に詰めることで,データ参照の局所性を向上– 得られる行列は,無限精度演算では方式1と同じ
0
0
m = 6 の場合
方式1と方式2の収束性比較
• シフトの数と総演算量との関係– DHSEQR : 方式1( LAPACK )– TTQR :方式2
有限精度演算では,方式2が有利 ( Cf. Watkins による理論的解析)以下では方式2について考える
K. Braman et al.: “The Multishift QR Algorithm I” (2002) より引用
• 更新処理の分割– m/2 個のバルジをそれぞれ r 行追跡する際, まず対角ブロックのみを更新– 非対角ブロックは,更新に使ったハウスホル
ダー変換を 1 個の行列に蓄積し,後でまとめて更新
非対角ブロックの更新で レベル 3 BLAS が使用可能
• r の決め方– 演算量の点から, r ~ 3m とするのが最適– このとき,演算量は方式1の約 2 倍 (非ゼロ構造を利用した場合)
レベル 3 BLAS の利用
0
バルジ( 3×3 )最初に更新
まとめて BLAS3 で更新
蓄積されたハウスホルダー変換の非ゼロ構造
• シフト数 m の最適化– m を大きくすると, BLAS3 部分の性能は向
上– しかし,シフトの計算量は増加( O(m3) )– 最適な m の値は計算機と問題サイズに依存
• r ( 1 回のバルジ追跡行数)の最適化– 演算量最小化のためには r ~ 3m が最適– BLAS3 の実行時間は必ずしも演算量に比例
しないため,実行時間の最適値はこれとは異なる
m , r に対する自動チューニングの必要性
3 . 本研究の目的
n m の最適値
1000~ 1999
60
2000~ 2499
116
2500~ 3999
150
4000~ 180
実験的に求めた m の最適値( Origin2000 上, Braman et al.より引用)
本発表では,性能予測モデルに基づくシフト数 m の自動最適化について報告する
4 . 性能予測手法
• 階層的な性能モデリング( Cuenca et al., 2004 )– マルチシフト QR 法のアルゴリズムは,レベル 3 BLAS ,シフト
計算のための QR 法など,数種類の基本演算ルーチンから構成される
– 各ルーチンの性能を精度良くモデル化できれば,その積み上げによりアルゴリズム全体の性能も精度良くモデル化できるはず
• 反復回数の推定– QR 法は反復法のため,実行時間予測には反復回数の推定が必要– 固有値1個当たり,平均 4反復で収束すると仮定
マルチシフト QR 法を構成する基本演算ルーチン
• 8種の基本演算ルーチン– HQR : シフト計算のための QR 法– BCHASE1 : m/2 個のバルジの導入– BCHASE2 : 対角ブロック内でのバルジ追跡– BCHASE3 : バルジの追い出し– DGEMM(‘N’, ‘N’) : 非対角行ブロックの更新– DGEMM(‘N’, ‘T’) : 非対角列ブロックの更新– COPY1 : コピー (1)
– COPY2 : コピー (2)
0
バルジ( 3×3 )最初に更新
まとめて BLAS3 で更新
基本演算ルーチンの性能モデリング
• DGEMM (’ N’,’N’ )の場合– 機能: C := C + AB の計算 ( A: m×k , B: k×n , C: m×n )– 実行時間の予測関数: fDGEMM_NN(m, n, k)
• fDGEMM_NN の構成方法– m, n, k の全範囲で f を1つの多項式で近似すると,誤差が大きい
– n の代表的な値に対し, f を m, k の多項式により近似– 多項式としては, m, k の双一次式を用いる
– 係数 a00n , a01
n , a10n , a11
n は実測データから最小二乗法で決定
– 代表値以外の n に対する値は,一次補間により計算
fDGEMM_NN (m, n, k) = fDGEMM_NNn (m, k)
= (a11n m + a10
n) k + (a01n m + a00
n)
基本ルーチンの性能モデリング(続き)
• DGEMM (’ N’,’T’ ) – ‘N’,’N’ の場合と同様にして 実行時間の予測関数を構成
• BCHASE2 , COPY1 , COPY2– サイズを決めるパラメータは m, r の 2 つ– r の代表的な値に対し,実行時間を m の多項式として近似
• BCHASE1 , BCHASE3 , HQR– サイズを決めるパラメータは m のみ– 実行時間を m の多項式( 3 次式)として近似
マルチシフト QR 法全体の性能モデリング
• 基本的な考え方– 基本演算の各ルーチンと同じ引数を持ち,演算を行う代わりに実
行時間の予測値のみを計算して返すルーチンを作成– マルチシフト QR 法中の基本演算ルーチンをこれらのルーチンで置き換えることにより,帯行列化の実行時間を予測するプログラムを作成
• 本方式のメリット– 複雑な解析的モデルの構築が不要– 予測に必要な時間は O(N2/m2)
DO K=1, N/L CALL HQR(m,L,...) CALL BCHASE1(m,n,...) CALL BCHASE2(m,n,k,...) CALL DGEMM(m,n,k,...) CALL BCHASE3(m, k,...)END DO
DO K=1, N/L T1=T1+HQR_TIME(m,L,...) T1=T1+BCHASE1_TIME(m,n,...) T1=T1+BCHASE2_TIME(m,n,k,...) T1=T1+DGEMM_TIME(m,n,k,...) T1=T1+BCHASE3_TIME(m, k,...)END DO
計算プログラム 予測プログラム
5 . 実験結果
• 評価環境– Power PC G5 ( 2.0GHz ) 2way , IBM XL Fortran , GOT
O BLAS
– Opteron ( 1.6GHz ) 4way , g77 , GOTO BLAS
• 評価例題– N=1000 ~ 8000 の行列の固有値計算– m = 30 , 60 , 90 , 120 の4通りのシフト数– 入力行列は, [0,1] の乱数行列をハウスホルダー法でヘッ
センベルグ化して使用
PowerPC G5 上での予測結果( 1CPU )
• m を変えたときの相対実行時間(最小値を 1 に規格化)
• モデルは m を変えたときの相対実行時間の変化を定性的に再現 → シフト数の自動最適化に使える可能性あり• ただし,絶対時間では 20~ 40% の誤差
相対実行時間 相対実行時間
予測結果 実測結果
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1000 2000 4000 8000
m=30m=60m=90m=120
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1000 2000 4000 8000
m=30m=60m=90m=120
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
1000 2000 4000 8000
m=30m=60m=90m=120
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
1000 2000 4000 8000
m=30m=60m=90m=120
PowerPC G5 上での予測結果( 1CPU ,続き)
• m を変えたときの相対実行時間(実測時間の最小値を 1 に規格化)
• 予測時間は, N が小さいとき過大評価,大きいとき過小評価
相対実行時間 相対実行時間
予測結果 実測結果
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1000 2000 4000 8000
m=30m=60m=90m=120
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
1000 2000 4000 8000
m=30m=60m=90m=120
PowerPC G5 上での予測結果( 2CPU )
• m を変えたときの相対実行時間(最小値を 1 に規格化)
• モデルは m を変えたときの相対実行時間の変化を定性的に再現
• 絶対時間の誤差は 1CPU の場合と同程度
相対実行時間 相対実行時間
予測結果 実測結果
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1000 2000 4000 8000
m=30m=60m=90m=120
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1000 2000 4000 8000
m=30m=60m=90m=120
Opteron 上での予測結果( 4CPU )
• m を変えたときの相対実行時間(最小値を 1 に規格化)
• モデルは m を変えたときの相対実行時間の変化を定性的に再現
• 絶対時間の誤差は PowerPC G5 の場合と同程度
相対実行時間 相対実行時間
予測結果 実測結果
検討すべき課題
• 誤差の原因の究明– N による誤差の系統的な変化
• 平均反復回数の違いが影響している可能性あり• 基本演算ルーチンのモデルの誤差
– その他の系統誤差
基本演算ルーチンごとの誤差の調査など,より詳細な解析が必要
6 . 関連研究
• 三重対角化プログラムの自動チューニング( Katagiri et al., 2000 )– 分散メモリ向けの三重対角化プログラムにおいて,ループ展開の段
数,通信関数の種類などのパラメータを自動的に最適化する方式– パラメータを変化させてプログラム全体を何回も実行することによ
り最適値を求めるため,最適化に時間がかかるという問題点がある
• 階層的な性能モデリング( Cuenca et al., 2004 , Dackland et al., 1996 )– 線形計算プログラムの自然な階層構造を利用して,下位のルーチン
( BLAS など)の性能モデルをまず構築し,それを用いて順次上位のルーチンの性能モデルを構築していく方式
– 本研究のモデルもこの考え方に基づく– ただし,従来の適用例は, LU 分解や QR 分解などの基本的分解,お
よびヤコビ法などの単純なアルゴリズムに限られている
7 . まとめと今後の課題
• まとめ– マルチシフト QR 法に対し,階層的なモデリング手法を用
いて実行時間を予測するモデルを開発した– 1000元から 8000元の行列による評価では,モデルはシフ
ト数を変えたときの相対実行時間の変化を定性的に再現できた
– しかし,絶対時間では誤差が大きく,原因の究明が必要
• 今後の課題– 誤差の原因解明とモデルの精密化– 基本演算ルーチンの性能モデリングの自動化– 自動チューニング型ライブラリへの展開
• Level-3 BLAS 内部での並列化– 非対角ブロックの更新において,並列化 BL
AS を利用することにより,容易に並列化可能
• より効率的な並列化– 非対角ブロックの更新において,次の対角ブロックの更新に必要な部分のみを先に更新
並列化困難な対角ブロックの更新を,非対角ブロックの更新と並列に実行可能
共有メモリ向けの並列化手法
0
Bulge( 3×3)最初に更新
まとめて BLAS3 で更新
次の対角ブロックの更新で必要