Domain Decompostion 计算公式
示意图
推导
- 基本公式:
{
s
=
S
−
1
F
s
−
S
−
1
W
R
h
h
=
(
H
−
W
L
S
−
1
W
R
)
−
1
(
F
h
−
W
L
S
−
1
F
s
)
\begin{cases} s=\bold{S}^{-1}F_s-\bold{S}^{-1}\bold{W}_Rh \\ h=(\bold{H}-\bold{W}_L\bold{S}^{-1}\bold{W}_R)^{-1}(F_h-\bold{W}_L\bold{S}^{-1}F_s) \end{cases}
{s=S−1Fs−S−1WRhh=(H−WLS−1WR)−1(Fh−WLS−1Fs)对正定对称阵有
S
=
L
L
t
\bold{S}=\bold{L}\bold{L}^t
S=LLt,
W
L
=
W
R
t
\bold{W}_L=\bold{W}_R^t
WL=WRt, 因而上面公式可化为:
{ s = L − t ( L − 1 F s − L − 1 W R h ) h = ( H − ( L − 1 W R ) t ( L − 1 W R ) ) − 1 ( F h − ( L − 1 W R ) t ( L − 1 F s ) ) \begin{cases} s=\bold{L}^{-t}(\bold{L}^{-1}F_s-\bold{L}^{-1}\bold{W}_Rh)\\ h=(\bold{H}-(\bold{L^{-1}W}_R)^{t}(\bold{L^{-1}W}_R))^{-1}(F_h-(\bold{L^{-1}W}_R)^{t}(\bold{L}^{-1}F_s)) \end{cases} {s=L−t(L−1Fs−L−1WRh)h=(H−(L−1WR)t(L−1WR))−1(Fh−(L−1WR)t(L−1Fs))所以仅需要计算 L − 1 W R \bold{L^{-1}W}_R L−1WR 和 L − 1 F s \bold{L}^{-1}F_s L−1Fs。
计算步骤
- 并行分解 S = L L t \bold{S}=\bold{L}\bold{L}^t S=LLt
- 并行求解 L − 1 F s \bold{L}^{-1}F_s L−1Fs
- 并行求解 L − 1 W R \bold{L^{-1}W}_R L−1WR, 同时更新 H \bold{H} H矩阵。此处注意 W R \bold{W}_R WR的非零稀疏性,可以利用加速计算。更新 H \bold{H} H矩阵需要考虑多个线程对 H \bold{H} H相同块的更新,需要锁和同步机制
- 更新后的 H \bold{H} H也是对称正定块状三对角阵,可以用块状分解计算LLT
- 先计算 h h h,之后计算 s s s