稀疏线性方程组的求解共轭梯度算法步骤
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Parallel Algorithms
Chapter 13 Numerical Algorithms
Spring, 2018
2018/10/10
《并行算法》 1 / Ch12
Standard Linear Algebra Problems
Solving linear systems of equations :
②求解: xj=a’j,n+1/a’jj 注: 选主元的Gauss-Jordan消去法
2018/10/10 《并行算法》 9 / Ch12
13.1 稠密线性方程组求解
2. SIMD-CREW上的并行算法 (1)处理器: n2+n个处理器, 这些处理器排成n×(n+1)的矩阵, 处理器编号为Pik, i=1~n, k=1~n+1 (2)并行化分析 ①消元的并行化: Pij(i<>j): aij <— 0 Pik(i<>j, k=j+1~n+1): aik <— aik-ajk(aij/ajj) end for ②求解: for each Pjj(j=1~n) Par-do: xj <— aj,n+1/ajj //O(1)
Eigenvalue problems:
Example: analyzing vibrations
2018/10/10
《并行算法》 2 / Ch12
Choice of Algorithm
Structure of A:
• dense • Sparse • triangular • certain PDEs
for all Pj, where 1≤j≤p do for k=j to i-1 step p do Βιβλιοθήκη Baiduk=bk-akixi aki=0 endfor endfor endfor
2018/10/10
End
// p(n)=n, t(n)=n
《并行算法》 8 / Ch12
13.1 稠密线性方程组求解
《并行算法》 5 / Ch12
13.1 稠密线性方程组求解
2. 可并行化的求解方法 (1)直接解法的并行化
- Gauss消去法(包括选主元的Gauss消去法)
- Gauss-Jordan消去法 - LU分解法 (2)迭代法的并行化(也可用于稀疏线性方程组) - Jacobi - Gauss-Seidel(可异步并行化) - Jacobi OverRelaxation(JOR) - Gauss-Seidel OverRelaxation(SOR)
Computer System
• architecture, available languages, compiler quality • libraries?
2018/10/10
《并行算法》 3 / Ch12
讲授内容
13.1 稠密线性方程组求解 13.2 稀疏线性方程组的求解 13.3 非线性方程的求根
Gaussian elimination, etc iterative method substitution, odd-even reduction multigrid
Desired Accuracy: Example:
• Gaussian elimination: more accurate, more expensive • Conjugate gradients: less accurate, less expensive
可并行化
End
2018/10/10 《并行算法》 7 / Ch12
13.1 稠密线性方程组求解
(2)SIMD-CREW上的并行回代算法
- 划分: p个处理器行循环带状划分
- 算法
Begin for i=n downto 1 do
P 1 P j P 1 P j
行 1 j 1+p j+p
xi=bi/aii
= b1
= b2 = bn
AX=b
a11 a A 21 an1
2018/10/10
a12 a22 an 2
a1n a2 n , ann
x1 x x 2 , xn
b1 b b 2 bn
2018/10/10
《并行算法》 4 / Ch12
13.1 稠密线性方程组求解
13.1.1 一般求解方法 1. 线性方程组的定义和符号
a1,1x1
a2,1x1 an,1x1 记为
+ a1,2x2
+ a2,1x2 + an,1x2
+ … + a1,nxn
+ … + a2,nxn + … + an,nxn
13.1.2 SIMD-CREW上的Gauss-Jordan算法 1.串行算法原理(一种直接解法)
①消元: 通过初等行变换,将(A,b)化为主对角线矩阵,
(方便起见, 记b为A的第n+1列)
a11 a21 an1 a12 a1n a22 a2 n an 2 ann a1,n 1 a2,n 1 an ,n 1 a11 a22 ann ,n 1 a1 ,n 1 a2 ,n 1 an
2018/10/10
// O(n)
for j=1 to n-1, each Pik Par-do
Example: solving ordinary or partial differential equations numerically
Least squares problems:
Example: fitting curves or surfaces to experimental data
- Conjugate Gradient
2018/10/10 《并行算法》 6 / Ch12
13.1 稠密线性方程组求解
3. 示例: 上三角方程组的回代解法并行化 (1)SISD上的回代算法
Begin
(1)for i=n downto 1 do (1.1)xi=bi/aii (1.2)for j=1 to i-1 do bj=bj-ajixi aji=0 endfor endfor
Chapter 13 Numerical Algorithms
Spring, 2018
2018/10/10
《并行算法》 1 / Ch12
Standard Linear Algebra Problems
Solving linear systems of equations :
②求解: xj=a’j,n+1/a’jj 注: 选主元的Gauss-Jordan消去法
2018/10/10 《并行算法》 9 / Ch12
13.1 稠密线性方程组求解
2. SIMD-CREW上的并行算法 (1)处理器: n2+n个处理器, 这些处理器排成n×(n+1)的矩阵, 处理器编号为Pik, i=1~n, k=1~n+1 (2)并行化分析 ①消元的并行化: Pij(i<>j): aij <— 0 Pik(i<>j, k=j+1~n+1): aik <— aik-ajk(aij/ajj) end for ②求解: for each Pjj(j=1~n) Par-do: xj <— aj,n+1/ajj //O(1)
Eigenvalue problems:
Example: analyzing vibrations
2018/10/10
《并行算法》 2 / Ch12
Choice of Algorithm
Structure of A:
• dense • Sparse • triangular • certain PDEs
for all Pj, where 1≤j≤p do for k=j to i-1 step p do Βιβλιοθήκη Baiduk=bk-akixi aki=0 endfor endfor endfor
2018/10/10
End
// p(n)=n, t(n)=n
《并行算法》 8 / Ch12
13.1 稠密线性方程组求解
《并行算法》 5 / Ch12
13.1 稠密线性方程组求解
2. 可并行化的求解方法 (1)直接解法的并行化
- Gauss消去法(包括选主元的Gauss消去法)
- Gauss-Jordan消去法 - LU分解法 (2)迭代法的并行化(也可用于稀疏线性方程组) - Jacobi - Gauss-Seidel(可异步并行化) - Jacobi OverRelaxation(JOR) - Gauss-Seidel OverRelaxation(SOR)
Computer System
• architecture, available languages, compiler quality • libraries?
2018/10/10
《并行算法》 3 / Ch12
讲授内容
13.1 稠密线性方程组求解 13.2 稀疏线性方程组的求解 13.3 非线性方程的求根
Gaussian elimination, etc iterative method substitution, odd-even reduction multigrid
Desired Accuracy: Example:
• Gaussian elimination: more accurate, more expensive • Conjugate gradients: less accurate, less expensive
可并行化
End
2018/10/10 《并行算法》 7 / Ch12
13.1 稠密线性方程组求解
(2)SIMD-CREW上的并行回代算法
- 划分: p个处理器行循环带状划分
- 算法
Begin for i=n downto 1 do
P 1 P j P 1 P j
行 1 j 1+p j+p
xi=bi/aii
= b1
= b2 = bn
AX=b
a11 a A 21 an1
2018/10/10
a12 a22 an 2
a1n a2 n , ann
x1 x x 2 , xn
b1 b b 2 bn
2018/10/10
《并行算法》 4 / Ch12
13.1 稠密线性方程组求解
13.1.1 一般求解方法 1. 线性方程组的定义和符号
a1,1x1
a2,1x1 an,1x1 记为
+ a1,2x2
+ a2,1x2 + an,1x2
+ … + a1,nxn
+ … + a2,nxn + … + an,nxn
13.1.2 SIMD-CREW上的Gauss-Jordan算法 1.串行算法原理(一种直接解法)
①消元: 通过初等行变换,将(A,b)化为主对角线矩阵,
(方便起见, 记b为A的第n+1列)
a11 a21 an1 a12 a1n a22 a2 n an 2 ann a1,n 1 a2,n 1 an ,n 1 a11 a22 ann ,n 1 a1 ,n 1 a2 ,n 1 an
2018/10/10
// O(n)
for j=1 to n-1, each Pik Par-do
Example: solving ordinary or partial differential equations numerically
Least squares problems:
Example: fitting curves or surfaces to experimental data
- Conjugate Gradient
2018/10/10 《并行算法》 6 / Ch12
13.1 稠密线性方程组求解
3. 示例: 上三角方程组的回代解法并行化 (1)SISD上的回代算法
Begin
(1)for i=n downto 1 do (1.1)xi=bi/aii (1.2)for j=1 to i-1 do bj=bj-ajixi aji=0 endfor endfor