17
ブロック化アルゴリズムの例
• ブロック化コレスキー分解
– ブロックサイズをL= (M/3)1/2,第 (I, J) ブロックを AIJ とする
– LAPACKで採用されているアルゴリズム
do K=1, n/L
AKK := Cholesky(AKK)
do I=K+1, n/L
AIK := AIKAKK
-T
end do
do J=K+1, n/L
do I=J, n/L
AIJ := AIK AJK
T
end do
end do
end do
対角ブロックのコレスキー分解
ブロックピボット列の作成
ブロックどうしの行列乗算
(演算の主要部)
33
大粒度並列性を持つQR分解手法
• A ∈Rm×n (m≧n)のQR分解
– full QR分解 A = QR
– thin QR分解 A = QR
• QR分解に対する2つの見方
– Q に着目 → A の列ベクトルの正規直交化
– R に着目 → 直交行列による A の上三角化
• QR分解のアルゴリズム
– ハウスホルダー法
– 古典/修正グラム・シュミット法
~
~ ~
A Q
=
A Q
=
R
R
~ ~
様々な応用
高性能計算の観点からは課題が多い
34.
34
CholeskyQR2法による大粒度並列QR分解
• Cholesky QR法による行列 X∈Rm×n (m≧n)のQR分解
– アルゴリズム
– 長所: 大粒度並列,すべての計算がブロック化可能
– 短所: X の条件数が大きいとき,直交行列 Y の直交性が悪化
• CholeskyQR2 法*1
– Cholesky QR 法で得られた Y を再直交化
• Y を X と見て,上記のアルゴリズムをもう一度繰り返す
– X の条件数が 108 以下ならば,極めて精度の良い結果が得られる
• 直交性 ||QTQ – I|| も残差 ||X – YR|| も丸め誤差レベル
(コレスキー分解: A = RTR)
*1 Y. Yamamoto et al.: “Roundoff Error Analysis of the CholeskyQR2 Algorithm”,
Electronic Transactions on Numerical Analysis, Vol. 44, pp. 306-326 (2015).
悪条件の行列のための shifted CholeskyQR3法
•Shifted CholeskyQR3 法*1
– 行列 X が悪条件の場合,Cholesky QR2 法において A = X TX が特異
に近くなり,コレスキー分解が破綻することがある
– A に微小なシフト sI を加えることで,条件数1016 程度まで対応可能
– 大粒度並列性など,HPC面から見た利点は Cholesky QR2 法と同じ
37
*1 T. Fukaya et al.: “Shifted CholeskyQR for computing the QR factorization of ill-conditioned matrices”,
SIAM Journal on Scientific Computing, Vol. 42, , No. 1, pp. A477-A503 (2020).
38.
不完全LU分解型前処理の超並列化
• クリロフ部分空間法と前処理(前回の復習)
– 連立1次方程式K–1Ax = K–1b を考える
– いま,行列 K が A の近似行列であるとする
– このとき,方程式 K–1Ax = K–1b を考えると,その係数行列 K–1A は A
と比べて単位行列に近くなっていると考えられる.これにより,クリロ
フ部分空間法の収束はより速くなると期待できる
– このような方程式の変形を前処理(左前処理)と呼ぶ
• 不完全LU分解型前処理(ILU(0)前処理)
– 行列 A のLU分解の際に,フィルインを無視して近似的に A≒LU と
分解し,K = LU とおく.これを ILU(0) 前処理と呼ぶ
– ILU(0) 前処理は,幅広いクラスの行列に対して効果があるが,一般
に並列化は困難
• K–1 をかける計算で,前進消去と後退代入が必要となるため
38
低精度計算の利用による高性能化(2)
• 右前処理に低精度計算を使った BiCGSTAB法1)
43
右前処理: AM y = b, x = M y
低精度計算による uk, sk の誤差
1) H. Tadano et al., “On Single Precision Preconditioners for Krylov Subspace Iterative Methods”, Proceedings of LSSC 2007, LNCS 4818, pp. 721-728, 2008.
低精度演算
低精度演算
低精度計算による xk+1 の誤差
低精度計算による rk+1 の誤差
xk+1, rk+1 はそれぞれ誤差を含むが,関係式
rk+1 = Axk+1–b は保たれている
44.
低精度計算の利用による高性能化(3)
• 右前処理に低精度計算を使った BiCGSTAB法の数値結果
– 前処理としてブロック赤黒順序付けのMILU(0) 分解を使用
– ベクトルに前処理行列を適用する部分を単精度で計算
– 倍精度とほぼ同じ結果が得られている
44
A. Shioya and Y. Yamamoto: “Block red–black MILU(0) preconditioner with relaxation on GPU”,
Parallel Computing, Vol. 103, No. 1, pp. 102760-102772 (2021).