21

稀疏 特征问题求解 赵永华 中国科学院计算机网络信息中心 超级计算中心

  • Upload
    romney

  • View
    169

  • Download
    13

Embed Size (px)

DESCRIPTION

稀疏 特征问题求解 赵永华 中国科学院计算机网络信息中心 超级计算中心 [email protected]. 提要. 稀疏特征值问题背景 稀疏矩阵特征值问题软件包列表 稀疏矩阵特征问题求解方法 单 / 多向量( single and multiple vector )迭代法 Lanczos 和 Arnoldi 方法 Jacobi-Davidson 方法 采用预处理技术的预条件 CG ( Conjugate-Gradient )法 - PowerPoint PPT Presentation

Citation preview

提要 稀疏特征值问题背景 稀疏矩阵特征值问题软件包列表 稀疏矩阵特征问题求解方法

单 / 多向量( single and multiple vector )迭代法 Lanczos 和 Arnoldi 方法 Jacobi-Davidson 方法 采用预处理技术的预条件 CG ( Conjugate-Gradient )法

稀疏矩阵的存储格式 并行软件包设计问题

特征值问题背景

许多大规模科学应用和工程计算中,(包括材料科学、振动力学、电磁学、量子化学等),一个重要的任务是计算特征值问题:

Ax=λMx 的部分特征对。通常情况下 A 和 M 是大规模、稀疏对

称正定矩阵。 对大规模和稀疏特征问题至今没用最好的求解方法。

对这些复杂的问题,需要在矩阵的数学特性、算法的求解效率和精度要求等中做出权衡。

电磁场计算 一切电磁波在宏观媒体中都服从 Maxwell 方程。这些方程通过有

限元离散后得到一个广义特征值问题

随着问题规模的增大、有限元基函数解的提高以及有限元网格的加细,离散后的特征值问题的阶数可高达千万阶到上亿阶。

电子结构计算 电子结构中的许多模型对应的方程经过有限元离散化后得到下列

形式

其中 是电子密度 ( 特征向量 ) , 是特征值组成的对角矩阵。

kx Mx

*

*

( )F D S

S I

D

Nano/Material-Science

Accelerator Modeling

H i E ii XXXH )(

MxKx 0)

1(

0

0)1

(2

2

E

E

EE

n

n

c

稀疏特征问题求解方法 : Lanczos 和 Arnoldi 方法 单 / 多向量( single and multiple vector)迭代法 幂 (Power)迭代方法、逆迭代方法、 Rayleigh商迭代 (RQI)方法 Lanczos和 Arnoldi方法 Lanczos和 Arnoldi过程主要构造 Krylov子空间的一个标准正交

基:

然后在这个子空间上计算近似的 Ritz特征对。该过程是一个三项递推求解过程 , 在每步仅需要一个矩阵 - 向量积。

基于不同的正交化方法:完全重正交、选择性重正交和局部重正交等 Lanczos和 Arnoldi方法;

基于不同的重启动策略:显示重启动和隐式重启动 Lanczos和Arnoldi方法;

位移逆转换或谱转换:使用基本的 Lanczos和 Arnoldi方法总是收敛于最大特征值,对于中间特征值需要使用位移 - 逆转换。另外,为了计算广义特征问题,需要将 转化为:

为了避免迭代收敛到已求得的特征对,这时需要采用紧缩处理。

2 1( , ) { , , ,..., }m mA v Span v Av A v A v

Ax Bx1 1

( )k M Mx x

稀疏特征问题求解方法 :Jacobi-Davidson 方法 基于块策略:块 Lanczos 和 Arnoldi 算法和 band Lanczos 。

Jacobi-Davidson 方法 Jacobi-Davidson 方法的思想来源于 JOCC(Jacobi orthogonal

Component Correction) 和 Davidson 两种方法。由 G. L.G.Sleijpen 等于1996 年提出。

对于 Lanczos 和 Arnoldi 方法而言,当求解问题规模增加时,出现

的特征值簇将严重影响它们的性能和健壮性。另外,由于矩阵 A 的逆不能被直接求解,这样预处理成为弥补迭代法的必然选择。这使得Davidson 和 Jacobi-Davidson 方法成为了 Arnoldi 方法的扩充。

同 Lanczos 和 Arnoldi 方法类似, Jacobi-Davidson 也是从一个初

始向量开始,连续构造由一组正交基构成的子空间,并由此得到所求解的近似特征对,而这些特征对的求解通常可通过 Rayleigh 商方法得到。但 Jacobi-Davidson 构造的标准正交基不同于 Krylov 子空间的基 。

稀疏特征问题求解方法 :Jacobi-Davidson 方法

算法思想 假设当前正交基矩阵 V=[u1,u2,…,uk], 得到一个投影矩阵 1. 计算 :Bs=θs 得到特征对( θj, sj) , 由此得到 A 的 Ritz 向量 uj=Vsj 2. 寻找一个修正向量 ,使得 :

3. 从校正方程

中求解 v 。 4. 对 v 做正交化并扩充当前正交基,再计算新的 Ritz 对。 如此循环,这个算法就是基本的 Jacobi-Davidson 方法。

jv u ( ) ( )j jA u v u v

* *( ) , ( )j j j j j j j j jI u u A I I u u v r r A I u

*B V AV

稀疏特征问题求解方法 :Jacobi-Davidson 方法 预处理近似计算校正方程 校正方程可以使用线性系统的近似迭代法(像 GMRES 或

BCGSTAB )求解。如果结合适当的预条件子 可以加速迭代收敛过程。记

如果采用左预处理,在迭代中需要对某个向量 计算 上述运算可通过两步完成:

首先计算 : 然后使用左预处理 , 从 计算 z

( )jy A I v

K A I * *

* *

( ) ( ),

( )( )( )

k k k k

k k k k k

K I u u K I u u

A I u u A I I u u

( )v v u1z K Av

*( )j jKz I u u y

稀疏特征问题求解方法 :Jacobi-Davidson 方法

重启动 JD 方法在计算过程中需要保留标准正交基,当迭代步比较多时对

存储要求太高,因此需要重启动。 一个相应的重启动策略为 :Dynamic thick 重启动策略。 紧缩 为了避免迭代收敛到已求得的特征对,这时需要采用紧缩处理。

假如已有 Ritz 向量 u1,u2,…,uk ,带紧缩的校正方程为 :

其中 Q= ( u1,u2,…,uk )

* * * *( ) ( ) ( )i i k k i k k i i i iI u u I Q Q A I I Q Q I u u t r

稀疏特征问题求解方法 :Jacobi-Davidson 方法 块 Jacobi-Davidison 实现 JD 的块算法采用具有 k 个初始向量的块作为算法的开始,每次扩

展的基也是一个 k 个向量的块。这些向量是 k 个校正方程的近似解,而每个用于不同的 Ritz 对求解。

JDCG 方法 Y.Notay2002 年针对实对称矩阵的最小特征对,结合 JD 方法和预

条件共轭梯度( CG )法,提出 JDCG 方法。 JDQR 方法和 JDQZ 方法 并行化 JD 方法使用数据并行方法比较容易并行实现。每个处理器可以保

留每个基向量和特征向量的子集,所有的向量修正可在本地进行。同串行算法的不同在于内积运算需要一个全局归约操作。而且矩阵 - 向量积和预处理操作必须被提供。

软件包: PRIMME 求解问题:电磁场计算;电子线路稳定性

稀疏特征问题求解方法 : 预条件 CG 方法 预条件 CG 方法 CG 方法是 Chebyshev 方法的改进,基于这一基本方法产生了几

个不同的 CG 求解方法,主要包括 :LOBPCG 、 DACG 方法。 LOBPCG(Locally Optimal Block , Preconditioned

Conjugate Gradient) 该方法是一种快速求解对称特征问题的方法

( A.VKayazev,2001 )。由于具有简单性、健壮性和快速收敛性,该方法作为 Lanczos 和 Davidson 方法的潜在 竞争方法,引起人们的关注。

该方法是一种梯度法,在选取合适的预条件下,对于求解大规模稀疏问题比较有效,而且它可以块方式求解多个特征值。

LOBPCG 也是一种块投影算法,它的子空间由上一步向量、当前向量和局部梯度方向组成,然后在子空间上应用 Rayleigh-Ritz 方法。

LOBPCG 方法 典型的软件包是 BLOPEX ,MATLAB

稀疏特征问题求解方法 : 预条件 CG 方法

DACG(Deflation-Accelerated Conjugate Gradient )

是一种采用最优化方法的 CG 方法。通过 Rayleigh 商的 CG 最小化,该方法可以计算部分特征对。

当使用有效的预处理时, DACG 的效率要好于 ARPACK 软件包。并且当计算少量特征对时, DACG 在数值和效率方面比得上 Jacobi-Davidson 方法。

比较有效的预条件包括块 Jacobi 、近似逆预条件子 :FSAI 和AINV, 由此开发出 Jacobi-DACG , FSAI-DACG 和 AINA-DACG 方法。

这些方法当前用于有限元、混合有限元和有限差分的特征问题中。

相关的软件包 PDACG

稀疏矩阵存储格式 绝大多数迭代求解的效率取决于矩阵 - 向量积,

而矩阵 - 向量积取决于矩阵所使用的存储策略。存储策略的选取需要考虑具体的应用问题。

几种常用的存储格式: 压缩行 ( 列 ) 存储策略 (RS:Compress Row storage) 块压缩行 ( 列 ) 存储策略 (BCRS:Block Compress Row

storage) 压缩对角存储格式 (CDS:Compressed Diagonal Storage ) 锯齿对角存储格式 (JDS:Jagged Diagonal Sstorage)

稀疏矩阵存储格式 创建三个向量: val: 向量以行方式存储矩阵的非零元素值; col_ind: 存储 val 中元素的列标; row_ptr: 存储行中第一个元素在 val 中位置。

Val=[10,-2,3,9,3,7,8,7,3,8,7,5,8,9,9,13,4,2,-1]

Col_ind=[1,5,1,2,6,2,3,4,1,3,4,5,2,4,5,6,2,5,6]

Row_ptr=[1,3,6,9,13,17,20]

10 0 0 0 2 0

3 9 0 0 0 3

0 7 8 7 0 0

3 0 8 7 5 0

0 8 0 9 9 13

0 4 0 0 2 1

稀疏矩阵存储格式 稀疏块压缩行存储 BCRS(Block compress row storage)

一个更有效的存储方法是稀疏块压缩行存储格式。 这样的块矩阵典型的出现在偏微分方程的离散。

与 CRS 存储格式类似, BCRS 存储格式可通过四个数组表示: val=[11,12,0,22,31,32,41,42,33,0,43,44,55,56,0,66,0,0,67,0,77,78,87,88]

AN=[1,5,9,13,17,21] AJ=[1,1,2,3,4,4] AI=[1,2,4,6,7]

11 12 0 0 0 0 0 0

0 22 0 0 0 0 0 0

31 32 33 0 0 0 0 0

41 42 43 44 0 0 0 0

0 0 0 0 55 56 0 0

0 0 0 0 0 66 67 0

0 0 0 0 0 0 77 78

0 0 0 0 0 0 87 88

稀疏矩阵存储格式 压缩对角存储 (the compressed diagonal storage:CDS )

压缩对角存储是另一种稀疏矩阵存储格式,该存储方式利用了特殊矩阵的结构形式。这种结构与有限元或有限差分分解有关。

使用数组 Val(6,-1:1) 存储右边矩阵。

0 0 0 011 12

23 0 0 021 22 0 32 0 54 65210 32 33 34 0 0 33 55 6611 22 440 0 0 0 044 23 34 0 56 0120 0 0 54 55 56

0 0 0 0 65 66

稀疏矩阵存储格式锯齿状存储

10 3 0 0 0 10 31 1

0 9 6 0 0 9 62 2

3 0 8 7 0 0 3 8 7

0 6 0 7 5 6 7 54 4

0 0 0 0 9 13 9 13

0 0 0 0 5 51 1

并行软件包设计问题 用户数据接口 并行软件包的一个重要问题是应用程序同软件包的接口,特别是

由问题产生的矩阵如何被描述。基于这一考虑,软件包提供具有各种灵活度的不同机制。

逆通信是解决软件包独立于矩阵描述的一种很好解决办法。 将矩阵输出到文件是一种接口方式,但灵活性最差。 并行方法 特征问题并行软件通常采用基于数据并行的 SPMD 模式,支持

MPI 并行。并要求用户提供某些操作的 MPI- 并行实现,例如矩阵 -向量积。

另一种并行方法采用了 OpenMP共享内存模式。 极少的软件包采用了 JAVA 的线程级并行。

并行软件包设计问题

程序语言 C , C++ 和 FORTRAN77/90

支持的标量类型和精度 实数和复数标量类型,单精度和双精度。健壮性 对并行软件包而言,算法的健壮性是一个重要问题。为此需要使

用一些通用的库函数和稳定的算法,例如 LAPACK,BLAS, PETSC , MATLAB 等。

谢谢!