密行列固有値解法の最近の発展(II) ー マルチシフトQR法 ー 名古屋大学 計算理工学専攻 山本有作 2006年1月28日 LA研究会 目次 1. はじめに 2. 非対称行列向けのマルチシフトQR法 3. 対称行列向けのマルチシフトQR法 1. はじめに • 本研究で対象とする問題 – 標準固有値問題 Ax = lx • A : n×n 密行列(実対称または実非対称) • 応用分野 – 対称行列 • 分子計算(分子軌道法,FMO-MO法) • 統計計算 – 非対称行列 • MHD,化学工学,量子化学,制御理論 – Cf. Bai and Demmel: A test matrix collection for non-Hermitian eigenvalue problems. 固有値計算の流れ 密行列 A 三重対角化/Hessenberg化 三重対角行列 T / Hessenberg行列 H 計算内容 計算手法 QTAQ = T (Q: 直交行列) ハウスホルダー法 固有値の計算 A の固有値 {li } 固有ベクトルの計算 Tui =li ui QR法 高い信頼性 分割統治法 MR3アルゴリズム I-SVDアルゴリズム T or Hの固有ベクトル {ui } 逆変換 Aの固有ベクトル {vi } vi = Q ui 逆変換 各部分の実行時間(非対称行列) • 全固有値を求める場合の演算量 – Hessenberg 化: – QR法: n3 (10/3) 10n3 (経験値) 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法: n = 100,000の行列の固有値計算 (4/3) n3 O(n2) 5555 min. – QR法の演算量は三重対角化に比べ小さい – しかし,三重対角化部分は並列化が容易 – QR法も並列化できることが望ましい 8 min. 10 min. QR法は PrimePower HPC2500 上での実測値 三重対角化の時間は推定値 (1CPUでの性能4GFLOPS,並列化効率70%と仮定) 10 min. 1CPU 三重 対角化 QR法 三重対角化部分 のみ1000CPU QR法の特徴と高性能計算 高性能計算の条件 QR法の特徴 •計算の逐次性 (bulge-chasing 型演算) •計算の並列性 •低いデータ再利用性 •高いデータ再利用性 (キャッシュの有効利用) オリジナルのQR法のままでは高性能化が困難 高性能計算の条件を満たす新しいアルゴリズムが必要 マルチシフトQR法 2. 非対称行列向けのマルチシフト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 ) • QR法の収束 – 適当な条件の下で,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 演算パターンとその特徴 • Bulge-chasing の演算パターン – 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回のみ更新 データ再利用性が低く,キャッシュの有効利用が困難 マルチシフトQR法 • 基本的なアイディア(Bai & Demmel, 1989) – m 個のシフトに対するQR法のステップを同時に行う • (Ak – smI) ・・・ (Ak – s2I)(Ak – s1I) = Qk Rk • Ak+m = Qk–1Ak Qk – シフト s1, s2, …, sm は,の右下隅の m×m 行列の固有値に取る • マルチシフトQR法の収束(Watkins & Elsner, 1991) – 上記のようにシフトを取ったとき,マルチシフトQR法は局所的に2次収束 – 特に,Q1, Qm+1, Q2m+1, … , Qk の積を Q(k) とするとき,Q(k) の最後の m 列 の張る部分空間は,A1のある不変部分空間に2次収束する マルチシフトQR法の演算パターン • 1ステップの計算(implicit 型) • (Ak – s2I) ・・・ (Ak – s2I)(Ak – s1I) の第1列を e1の定数倍にするハウスホル ダー変換H0 を求める • Ak’ = H0tAk H0 • 直交行列による相似変換を繰り返すことにより, Ak’ を再びHessenberg 行列に変形する(bulge-chasing) • 演算パターンの特徴 – 並列粒度は m/2 倍増加 – QR法の1ステップで,各行列要素は m+1回更新 – データ再利用性の向上により,キャッシュの有効利用が可能 (WY representation を用いた BLAS3化) マルチシフトQR法の実際の性能 • m の取り方に関する問題点 – m が 6 程度を超えると,収束までの反復回数が急速に増大 – 一方,BLAS3 で性能を出すには m を数十程度に取ることが必要 このマルチシフトQR法では,計算機性能を引き出せない K. Braman et al.: “The Multishift QR Algorithm I” (2002) より引用 収束性悪化の原因は? 収束性悪化の解析 • シフトの伝播に関する理論的解析(Watkins, 1996) – bulge を形作る (m+1)×(m+1) 行列を Bl とするとき,シフト s1, s2, …, sm は,行列束 (Bk, N) の m 個の有限固有値 • ただし N は固有値 0 の m+1 次ジョルダン細胞 0 Bl • 実験からの考察 – (Bl, N) の固有値は,m が大きいとき,摂動に対して極めて 敏感になる m = 4 の場合 Bulge chasing の過程でシフトが (Bk, N) の固有値として伝わる際に, 丸め誤差による摂動でシフトが劣化し,2次収束を阻害するのでは ないか? 多数の小さい bulge を使ったマルチシフトQR法 • 基本的なアイディア(K. Braman et al., 2002) – 従来法と同様にしてシフト s1, s2, …, sm を計算 – シフトを2つずつ組にしてダブルシフトQR法を m/2 回実行 • この結果得られる Ak+1 は,無限精度演算では従来法と同じ – m/2 個の bulge をできるだけ密に詰めて chasing を行うこ とで,データ参照の局所性を向上 • 3行離れていれば,互いの干渉なしに計算が可能 大きな bulge を避けることで,丸め誤差の影響を抑えつつデータの 再利用性を高め,性能を向上 0 m = 6 の場合 収束性に関する実験結果 • シフトの数と総演算量との関係 – DHSEQR: 従来のマルチシフトQR法(LAPACK) – TTQR: 新手法 K. Braman et al.: “The Multishift QR Algorithm I” (2002) より引用 新手法では,m を数十まで増やしても収束性が低下しない Level-3 BLAS の利用 • 更新処理の分割 – m/2 個の bulge をそれぞれ r 行 chasing する際, まず対角ブロックのみを更新 – 非対角ブロックは,更新に使ったハウスホル ダー変換を1個の行列に蓄積し,後でまとめて 更新 非対角ブロックの更新で level-3 BLAS が使用可能 0 Bulge(3×3) 最初に更新 まとめてBLAS3で更新 • r の決め方 – 演算量の点から,r ~ 3m とするのが最適 – このとき,演算量は従来のマルチシフトQR法 の約2倍(非ゼロ構造を利用した場合) 蓄積されたハウス ホルダー変換の非 ゼロ構造 従来のマルチシフトQR法との組み合わせ • 基本的なアイディア(Kressner, 2005) – 3×3の bulge を m/2 個同時に chasing する代 わりに,(q+1)×(q+1) の bulge を m/q 個同時に chasing する – q ~ 6 であれば,収束性は悪化しない データ再利用性をさらに向上 0 Bulge((q+1)×(q+1)) 最初に更新 まとめてBLAS3で更新 各手法の性能 • 比較する対象の手法 – DHSEQR: 従来のマルチシフトQR法(LAPACK) – MTTQR: 多数の小さいシフトを使ったマルチシフトQR法 (ns: bulge 1個あたりのシフト数) D. Kressner: “On the Use of Larger Bulges in the QR Algorithm”より引用 ほとんどの場合,ns = 4 or 6 とした新手法が最高速 共有メモリ向けの並列化手法 • Level-3 BLAS 内部での並列化 – 非対角ブロックの更新において,並列化 BLAS を利用することにより,容易に並列化可能 • より効率的な並列化 – 非対角ブロックの更新において,次の対角ブロッ クの更新に必要な部分のみを先に更新 0 Bulge(3×3) 最初に更新 並列化困難な対角ブロックの更新を,非対角ブ ロックの更新と並列に実行可能 まとめてBLAS3で更新 次の対角ブロックの 更新で必要 シフト数の最適決定 • m の最適化 – m を大きくすると,局所性は向上するが,シフト の計算量が増加 – 最適な m の値は計算機と問題サイズに依存 • r (1回の bulge chasing の行数)の最適化 – 演算量最小化のためには r ~ 3m が最適 – BLAS3 の実行時間は必ずしも演算量に比例し ないため,実行時間の最適値はこれとは異なる m,r に対する自動チューニングの必要性 n m の最適値 1000~1999 60 2000~2499 116 2500~3999 150 4000~ 180 実験的に求めた m の最適値 (Origin2000上,Braman et al. より引用)
© Copyright 2024 ExpyDoc