応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング 第8回 名古屋大学 計算理工学専攻 山本有作 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法の基礎 • アルゴリズム(Francis, 1961 & Kublanovskaya, 1961) – 行列 A0 から始めて次のように QR 分解と相似変換を繰り返す。 • A0 = Q1R1 • A1 = R1Q1 (= Q1–1A0 Q1 ) • A1 = Q2R2 • A2 = R2Q2 (= Q2–1A1 Q2 = Q2–1Q1–1A0 Q1Q2 ) • 収束定理 – 適当な条件の下で,Ak は(ブロック)上三角行列に収束 – A0 の固有値を絶対値の大きい順に l1, l2, … , ln とすると,対角要素 aij は li に1次収束 – 非対角要素 aij (j < i)は収束率 rij ≡ |li| / |lj| で 0 に1次収束 ダブルシフトQR法 • シフトの導入 – Ak から固有値 li の近似値 s を引いた行列に対して QR 法を適用 • Ak – s I = Qk Rk • Ak+1 = Rk Qk + s I (= Qk–1Ak Qk ) rij ≡ |li – s| / |lj – s| ≒ 0 より収束が加速 • ダブルシフトQR法 – 共役複素数の固有値ペアに対し,シフト s, s による2反復をまとめて行う • (Ak – s I)(Ak – s I) = Qk Rk • Ak+2 = Qk–1Ak Qk – シフトは右下隅の 2×2 行列の固有値に取る → 局所的に2次収束 – 複素数の固有値を持つ場合でも,実数演算だけで QR 法を実行可能 Hessenberg 形と Implicit Q 定理 • Hessenberg 形の利用 – Ak が Hessenberg 形のとき, • QR法の1ステップは O(n2) で実行可能 • Ak+1 も Hessenberg 形 • Implicit Q 定理の利用により,QR 分解を陽に行う ことなく1ステップの計算を実行可能 0 Hessenberg 形 aij = 0 if i > j+1 A0 を Hessenberg 形に相似変換してからQR法を適用 • Implicit Q 定理 – U,V が直交行列で,G = UtAU, H = VtAV が共に既約な Hessenberg 行 列であるとする。 このとき,もし U と V の第1列が等しいならば,±1 を 要素に持つ対角行列 D が存在して,V = UD,H = DGD が成り立つ – すなわち,行列 A を既約な Hessenberg 行列に相似変換する直交行列 は,第1列目だけが与えられれば(実質的に)一意に定まる Implicit shift QR法 • 1ステップの計算 • (Ak – s2I)(Ak – s1I) の第1列を e1の定数倍にするハウスホル ダー変換H0 を求める • Ak’ = H0tAk H0 • 直交行列による相似変換を繰り返すことにより, Ak’ を再び Hessenberg 行列に変形する(bulge-chasing) Ak H0 AkH0 0 0 0 • この変換の性質 – ある直交行列 H による相似変換 – H の第1列は,Qk の第1列に等しい • 上記第3のステップは第2行・第2列以降のみに影響 – H は Ak を Hessenberg 形に変換 Implicit Q 定理より,Ak+1 = H tAk H はQR法の1ステップと等価 0 Ak+1 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倍 (非ゼロ構造を利用した場合) 蓄積されたハウス ホルダー変換の非 ゼロ構造 マルチシフトQR法の性能 • 流体力学の問題に対する計算時間の例 – PowerPC G5 2.0GHz (1CPU) – 行列は金田研究室 水野氏提供 1600 QR法 45000 QR法 1400 Hessenberg 化 40000 Hessenberg 化 行列生成 35000 行列生成 1200 30000 1000 25000 800 20000 600 15000 400 10000 200 0 5000 8 (DHSEQR) 8 (HQR_M) N=3645 0 11 (DHSEQR) 11 (HQR_M) N=11232 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 の自動最適化を行うこ とを考える 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上での予測結果(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 の場合と同程度
© Copyright 2025 ExpyDoc