190 likes | 354 Views
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング. 第 8 回 名古屋大学 計算理工学専攻 山本有作. 1 . はじめに. 本研究で対象とする問題 標準固有値問題 A x = l x A : n × n 非対称密行列 応用分野 MHD 化学工学 量子化学 流体力学 Cf. Bai and Demmel: A test matrix collection for non-Hermitian eigenvalue problems. 高い信頼性. 非対称行列の固有値計算の流れ. 計算内容. 計算手法. 密行列 A.
E N D
応用数理工学特論線形計算とハイパフォーマンスコンピューティング応用数理工学特論線形計算とハイパフォーマンスコンピューティング 第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 } 逆変換 逆変換 vi = Qui Aの固有ベクトル {vi }
各部分の実行時間 Execution time (min) • 全固有値を求める場合の演算量 • ヘッセンベルグ 化: (10/3) n3 • QR法: 10n3(経験値) • 演算量(時間)の大部分をQR法が占める。 • QR法の高速化が必要 Origin2000 1PU (R12000,400MHz)上での実行時間 K. Braman et al: “The Multishift QR Algorithm I” より抜粋 Hessenberg 化の時間は推定値
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+ sI (= Qk–1AkQk) rij≡ |li – s| / |lj – s| ≒ 0 より収束が加速 • ダブルシフトQR法 • 共役複素数の固有値ペアに対し,シフト s, sによる2反復をまとめて行う • (Ak– s I)(Ak– s I) = Qk Rk • Ak+2 = Qk–1AkQk • シフトは右下隅の 2×2 行列の固有値に取る → 局所的に2次収束 • 複素数の固有値を持つ場合でも,実数演算だけで QR 法を実行可能
0 Hessenberg 形と Implicit Q定理 • Hessenberg 形の利用 • Akが Hessenberg 形のとき, • QR法の1ステップは O(n2) で実行可能 • Ak+1 も Hessenberg 形 • Implicit Q定理の利用により,QR 分解を陽に行う ことなく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列目だけが与えられれば(実質的に)一意に定まる Hessenberg 形 aij = 0 if i > j+1
Implicit shift QR法 Ak 0 • 1ステップの計算 • (Ak– s2I)(Ak– s1I)の第1列を e1の定数倍にするハウスホル ダー変換H0を求める • Ak’ = H0tAkH0 • 直交行列による相似変換を繰り返すことにより, Ak’ を再び Hessenberg 行列に変形する(bulge-chasing) • この変換の性質 • ある直交行列 H による相似変換 • H の第1列は,Qk の第1列に等しい • 上記第3のステップは第2行・第2列以降のみに影響 • H は Akを Hessenberg 形に変換 Implicit Q 定理より,Ak+1 = H tAk H はQR法の1ステップと等価 H0 AkH0 0 0 0 Ak+1 0
陰的ダブルシフトQR法の演算パターン • バルジ追跡における演算 • 3×3のハウスホルダー変換を左右からかけることにより,bulge を1つ右下に動かす • 演算の特徴 • 並列粒度は O(n) • 並列アルゴリズム: R. Suda et al.(1999),G. Henry et al. (2002) • QR法の1ステップで,各行列要素は3回のみ更新 データ再利用性が低く,キャッシュの有効利用が困難 左から Hlを乗算 右から Hlを乗算 0 0 0 更新される要素 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–1AkQk • シフト数増加の効果 • 並列粒度は O(m) 倍に増加 • 行列の各要素に対する更新回数も O(m) 倍に増加 • データ再利用性の向上により,キャッシュの有効利用が可能 (WY representation を用いた BLAS3化)
マルチシフトQR法におけるバルジ追跡 m = 6 の場合 • 方式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
方式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が使用可能 • rの決め方 • 演算量の点から,r~3mとするのが最適 • このとき,演算量は方式1の約2倍 (非ゼロ構造を利用した場合) 0 バルジ(3×3) 最初に更新 まとめてBLAS3で更新 蓄積されたハウスホルダー変換の非ゼロ構造
マルチシフトQR法の性能 • 流体力学の問題に対する計算時間の例 • PowerPC G5 2.0GHz (1CPU) • 行列は金田研究室 水野氏提供 N=3645 N=11232
3. シフト数の最適化 • シフト数mに関するトレードオフ • mを大きくすると,BLAS3 部分の性能は向上 • しかし,シフトの計算量は増加(O(m3)) • 最適な mの値は計算機と問題サイズに依存 • r(1回のバルジ追跡行数)の最適化 • 演算量最小化のためには r~3mが最適 • BLAS3 の実行時間は必ずしも演算量に比例しないため,実行時間の最適値はこれとは異なる m,rに対する自動チューニングの必要性 実験的に求めた mの最適値 (Origin2000上,Braman et al. より引用) そこで,性能予測モデルを用いてシフト数 mの自動最適化を行うことを考える
PowerPC G5上での予測結果(1CPU) • m を変えたときの相対実行時間(最小値を1に規格化) • モデルは mを変えたときの相対実行時間の変化を定性的に再現 → シフト数の自動最適化に使える可能性あり • ただし,絶対時間では20~40%の誤差 相対実行時間 相対実行時間 予測結果 実測結果
PowerPC G5上での予測結果(2CPU) • m を変えたときの相対実行時間(最小値を1に規格化) • モデルは mを変えたときの相対実行時間の変化を定性的に再現 • 絶対時間の誤差は1CPUの場合と同程度 相対実行時間 相対実行時間 予測結果 実測結果
Opteron 上での予測結果(4CPU) • m を変えたときの相対実行時間(最小値を1に規格化) • モデルは mを変えたときの相対実行時間の変化を定性的に再現 • 絶対時間の誤差は PowerPC G5 の場合と同程度 相対実行時間 相対実行時間 予測結果 実測結果