非対称行列向けマルチシフトQR法の 性能予測方式 名古屋大学 計算理工学専攻 山本有作 2006年6月12日 HPC研究会 目次 1. はじめに 2. マルチシフトQR法 3. 本研究の目的 4. 性能予測手法 5. 実験結果 6. 関連研究 7. まとめと今後の課題 1. はじめに • 本研究で対象とする問題 – 標準固有値問題 Ax = lx • A : n×n 非対称密行列 • 応用分野 – – – – MHD 化学工学 量子化学 流体力学 • Cf. Bai and Demmel: A test matrix collection for non-Hermitian eigenvalue problems. 非対称行列の固有値計算の流れ 密行列 A ヘッセンベルグ化 計算内容 計算手法 QTAQ = H (Q: 直交行列) ハウスホルダー法 ヘッセンベルグ行列 H QR法 高い信頼性 分割統治法 固有値の計算 A の固有値 {li } 固有ベクトルの計算 Hui =li ui Hの固有ベクトル {ui } 逆変換 Aの固有ベクトル {vi } vi = Q ui 逆変換 各部分の実行時間 • 全固有値を求める場合の演算量 – ヘッセンベルグ 化: (10/3) – QR法: 10n3 (経験値) n3 Execution time (min) 45 QR 40 Hessenberg reduction 35 30 25 – 演算量(時間)の大部分をQR法が占める。 – QR法の高速化が必要 20 15 10 5 O Origin2000 1PU (R12000,400MHz)上での実行時間 K. Braman et al: “The Multishift QR Algorithm I” より抜粋 Hessenberg 化の時間は推定値 LM 10 00 TU B1 00 0 RD B1 25 TO 0 LS 20 0 PD 0 E2 9 M HD 61 32 00 B 0 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 H0 AkH0 0 0 バルジ 0 • (Ak – s2I)(Ak – s1I) の第1列を e1の定数倍にするハウ スホルダー変換H0 を求める • Ak’ = H0tAk H0 (バルジ導入) 0 • 直交行列による相似変換を繰り返すことにより, Ak’ を再びヘッセンベルグ行列に変形する(バルジ追跡) • これにより得られる行列を Ak+2 とする Ak+2 0 陰的ダブルシフトQR法の演算パターン • バルジ追跡における演算 – 3×3のハウスホルダー変換を左右からかけることにより,bulge を1つ 右下に動かす 左から Hl を乗算 0 0にしたい要素 右から Hl を乗算 0 0 更新される要素 • 演算の特徴 – 並列粒度は O(n) • 並列アルゴリズム: R. Suda et al.(1999),G. Henry et al. (2002) – QR法の1ステップで,各行列要素は3回のみ更新 データ再利用性が低く,キャッシュの有効利用が困難 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) m = 6 の場合 – シフト s1, s2, …, sm を含む (m+1)×(m+1) のバルジを導入 – (m+1)×(m+1) のハウスホルダー変換を用いてこれを追跡 0 • 方式2: 小さなバルジ複数個を追跡 (Braman et al., 2003) – シフトを2つずつ組にし, 3×3 の小さなバルジ m/2 個を導入 – ダブルシフトQR法と同様にして,これらを追跡 – バルジ同士は3行離れていれば,干渉なしに計算が可能 • 密に詰めることで,データ参照の局所性を向上 – 得られる行列は,無限精度演算では方式1と同じ 0 方式1と方式2の収束性比較 • シフトの数と総演算量との関係 – DHSEQR: 方式1(LAPACK) – TTQR: 方式2 K. Braman et al.: “The Multishift QR Algorithm I” (2002) より引用 有限精度演算では,方式2が有利 (Cf. Watkins による理論的解析) 以下では方式2について考える レベル3 BLAS の利用 • 更新処理の分割 – m/2 個のバルジをそれぞれ r 行追跡する際, まず対角ブロックのみを更新 – 非対角ブロックは,更新に使ったハウスホル ダー変換を1個の行列に蓄積し,後でまとめて 更新 非対角ブロックの更新で レベル3 BLAS が使用可能 0 バルジ(3×3) 最初に更新 まとめてBLAS3で更新 • r の決め方 – 演算量の点から,r ~ 3m とするのが最適 – このとき,演算量は方式1の約2倍 (非ゼロ構造を利用した場合) 蓄積されたハウス ホルダー変換の非 ゼロ構造 3. 本研究の目的 • シフト数 m の最適化 – m を大きくすると,BLAS3 部分の性能は向上 – しかし,シフトの計算量は増加(O(m3)) – 最適な m の値は計算機と問題サイズに依存 • r (1回のバルジ追跡行数)の最適化 – 演算量最小化のためには r ~ 3m が最適 – BLAS3 の実行時間は必ずしも演算量に比例し ないため,実行時間の最適値はこれとは異なる n m の最適値 1000~1999 60 2000~2499 116 2500~3999 150 4000~ 180 実験的に求めた m の最適値 (Origin2000上,Braman et al. より引用) m,r に対する自動チューニングの必要性 本発表では,性能予測モデルに基づくシフト数 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 := aC + bAB の計算 (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 の双一次式を用いる fDGEMM_NN (m, n, k) = fDGEMM_NNn (m, k) = (a11n m + a10n) k + (a01n m + a00n) – 係数 a00n ,a01n ,a10n ,a11n は実測データから最小二乗法で決定 – 代表値以外の n に対する値は,一次補間により計算 基本ルーチンの性能モデリング(続き) • DGEMM(’N’,’T’) – ‘N’,’N’の場合と同様にして 実行時間の予測関数を構成 • BCHASE2,COPY1,COPY2 – サイズを決めるパラメータは m, r の2つ – r の代表的な値に対し,実行時間を m の多項式として近似 • BCHASE1,BCHASE3,HQR – サイズを決めるパラメータは m のみ – 実行時間を m の多項式(3次式)として近似 マルチシフトQR法全体の性能モデリング • 基本的な考え方 – 基本演算の各ルーチンと同じ引数を持ち,演算を行う代わりに実行時間 の予測値のみを計算して返すルーチンを作成 – マルチシフトQR法中の基本演算ルーチンをこれらのルーチンで置き換 えることにより,帯行列化の実行時間を予測するプログラムを作成 計算プログラム 予測プログラム 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 • 本方式のメリット – 複雑な解析的モデルの構築が不要 – 予測に必要な時間は O(N2/m2) 5. 実験結果 • 評価環境 – Power PC G5(2.0GHz) 2way,IBM XL Fortran,GOTO BLAS – Opteron(1.6GHz) 4way,g77,GOTO BLAS • 評価例題 – N=1000 ~ 8000 の行列の固有値計算 – m = 30,60,90,120 の4通りのシフト数 – 入力行列は, [0,1] の乱数行列をハウスホルダー法でヘッセン ベルグ化して使用 PowerPC G5上での予測結果(1CPU) • m を変えたときの相対実行時間(最小値を1に規格化) 相対実行時間 相対実行時間 1.6 1.6 1.4 1.4 1.2 1.2 1 m=30 m=60 m=90 m=120 0.8 0.6 1 0.6 0.4 0.4 0.2 0.2 0 1000 2000 4000 予測結果 8000 m=30 m=60 m=90 m=120 0.8 0 1000 2000 4000 8000 実測結果 • モデルは m を変えたときの相対実行時間の変化を定性的に再現 → シフト数の自動最適化に使える可能性あり • ただし,絶対時間では20~40%の誤差 PowerPC G5上での予測結果(1CPU,続き) • m を変えたときの相対実行時間(実測時間の最小値を1に規格化) 相対実行時間 相対実行時間 1.8 1.8 1.6 1.6 1.4 1.4 1.2 1.2 m=30 m=60 m=90 m=120 1 0.8 0.6 0.8 0.6 0.4 0.4 0.2 0.2 0 1000 2000 4000 予測結果 8000 m=30 m=60 m=90 m=120 1 0 1000 2000 4000 実測結果 • 予測時間は,N が小さいとき過大評価,大きいとき過小評価 8000 PowerPC G5上での予測結果(2CPU) • m を変えたときの相対実行時間(最小値を1に規格化) 相対実行時間 相対実行時間 1.8 1.6 1.6 1.4 1.4 1.2 1.2 m=30 m=60 m=90 m=120 1 0.8 0.6 m=30 m=60 m=90 m=120 0.8 0.6 0.4 0.4 0.2 0.2 0 1 1000 2000 4000 予測結果 8000 0 1000 2000 4000 8000 実測結果 • モデルは m を変えたときの相対実行時間の変化を定性的に再現 • 絶対時間の誤差は1CPUの場合と同程度 Opteron 上での予測結果(4CPU) • m を変えたときの相対実行時間(最小値を1に規格化) 相対実行時間 相対実行時間 1.6 1.6 1.4 1.4 1.2 1.2 1 m=30 m=60 m=90 m=120 0.8 0.6 1 0.8 0.6 0.4 0.4 0.2 0.2 0 1000 2000 4000 予測結果 8000 m=30 m=60 m=90 m=120 0 1000 2000 4000 8000 実測結果 • モデルは 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 内部での並列化 – 非対角ブロックの更新において,並列化 BLAS を利用することにより,容易に並列化可能 • より効率的な並列化 – 非対角ブロックの更新において,次の対角ブロッ クの更新に必要な部分のみを先に更新 0 Bulge(3×3) 最初に更新 並列化困難な対角ブロックの更新を,非対角ブ ロックの更新と並列に実行可能 まとめてBLAS3で更新 次の対角ブロックの 更新で必要
© Copyright 2025 ExpyDoc