基于AWS云服务的大数据与大规模计算的应用架构
赖智超 罗晓群 张其林
摘要:采用列压缩稀疏(Compressed Sparse Column, CSC)矩阵存储策略对矩阵LDL分解前进行填充元优化排序;基于消去树进行LDL符号分解,使之独立于数值分解,避免多余的内存消耗,减少不必要的数值运算.利用矩阵非零元的分布特性分析并实现超节点LDL分解算法,将稀疏矩阵的分解运算变为一系列稠密矩阵运算,并使用优化的BLAS函数库加速分解.测试表明:算法在成倍地提高计算速度的同时进一步降低内存消耗,适用于大规模的结构计算.
关键词:稀疏矩阵; LDL分解; 消去树; 符号分解; 超节点
中图分类号: TP301
文献标志码:B
现代结构工程的计算经有限元法处理后往往归结为一个规模庞大的线性代数方程组的求解.大规模的矩阵存储和快速的求解是制约大型结构计算的关键.
稀疏矩阵是指矩阵中大多数数值为零的矩阵.对于较大规模的稀疏矩阵,非零元占总元素个数比例非常小.结构分析中得到的矩阵就是一个具有很好特性的对称正定(Symmetric Positive Definite,SPD)稀疏矩阵.本文的关注点是结构工程中的SPD稀疏矩阵的直接法求解计算.目前,已经有不少稳定高效的求解库,如csparse,taucs,cholmod和superLU等,它们主要是使用cholesky分解和LU分解将稀疏矩阵A分解为LLT或
LU的形式.由于分解后的L中非零元相对于A会增多,所以称之为“填充元”.[1]因此,一般将稀疏矩阵的分解分为2部分:计算填充元的位置,称之为“符号分解”;进行实际的数值分解计算,称之为“数值分解”.
第一个通用快速SPD稀疏矩阵求解器实现库是SPARSPAK库[2],具有里程碑的意义.随后,稀疏矩阵快速直接解法的算法研究与图论算法紧密结合,如消去树[3]性质研究、最小度算法[4]和图剖分算法[5]等,同时算法的高效性还充分考虑到计算机硬件的内存布局和cache命中率等,因此稀疏矩阵算法得到迅速发展,已经是一个集工程结构、计算数学和计算机应用科学于一体的综合性学术研究领域.
本文采用列压缩稀疏(Compressed Sparse Column, CSC)矩阵存储[6]策略,对矩阵LDL分解前进行优化排序减少填充元,基于消去树进行LDL符号分解,使之独立于LDL数值分解.由于非零元相同的稀疏矩阵符号分解结果相同,因此可以重复使用,避免多余的内存消耗,减少不必要的数值运算.进一步充分利用矩阵非零元的分布特性,分析并实现超节点LDL分解算法,使稀疏矩阵的分解运算转变成一系列稠密矩阵运算,并使用优化的BLAS函数库加速分解,在成倍地提高计算速度的同时进一步降低内存消耗,适用于大规模结构计算问题.
1 稀疏三角系统Lx=b的求解
本节讨论稀疏三角系统Lx=b的求解,其中:
L为稀疏下三角矩阵,b为稀疏向量.该算法是矩阵分解算法内部的基本运算子单元,拥有高效的稀疏右端项求解算法,直接影响矩阵分解算法的效率,因而具有重要意义.
1.1 求解原理
因为CSC格式存储矩阵的特点是能够快速地读取一列中的元素,因此算法以列的方式对矩阵操作,提高求解速度.式(1)~(3)可以满足要求.
由于右端项b是稀疏的,因此解x大多也是稀疏的.所以,首先要快速地判断求解结果x中非零元的位置模式,之后采用式(1)~(3)求解x.
1.2 非零元位置模式求解算法
该问题可以抽象为一个图论数学模型——有向图的可达性遍历[7],其中,
有向图G构建方式为
摘要:采用列压缩稀疏(Compressed Sparse Column, CSC)矩阵存储策略对矩阵LDL分解前进行填充元优化排序;基于消去树进行LDL符号分解,使之独立于数值分解,避免多余的内存消耗,减少不必要的数值运算.利用矩阵非零元的分布特性分析并实现超节点LDL分解算法,将稀疏矩阵的分解运算变为一系列稠密矩阵运算,并使用优化的BLAS函数库加速分解.测试表明:算法在成倍地提高计算速度的同时进一步降低内存消耗,适用于大规模的结构计算.
关键词:稀疏矩阵; LDL分解; 消去树; 符号分解; 超节点
中图分类号: TP301
文献标志码:B
现代结构工程的计算经有限元法处理后往往归结为一个规模庞大的线性代数方程组的求解.大规模的矩阵存储和快速的求解是制约大型结构计算的关键.
稀疏矩阵是指矩阵中大多数数值为零的矩阵.对于较大规模的稀疏矩阵,非零元占总元素个数比例非常小.结构分析中得到的矩阵就是一个具有很好特性的对称正定(Symmetric Positive Definite,SPD)稀疏矩阵.本文的关注点是结构工程中的SPD稀疏矩阵的直接法求解计算.目前,已经有不少稳定高效的求解库,如csparse,taucs,cholmod和superLU等,它们主要是使用cholesky分解和LU分解将稀疏矩阵A分解为LLT或
LU的形式.由于分解后的L中非零元相对于A会增多,所以称之为“填充元”.[1]因此,一般将稀疏矩阵的分解分为2部分:计算填充元的位置,称之为“符号分解”;进行实际的数值分解计算,称之为“数值分解”.
第一个通用快速SPD稀疏矩阵求解器实现库是SPARSPAK库[2],具有里程碑的意义.随后,稀疏矩阵快速直接解法的算法研究与图论算法紧密结合,如消去树[3]性质研究、最小度算法[4]和图剖分算法[5]等,同时算法的高效性还充分考虑到计算机硬件的内存布局和cache命中率等,因此稀疏矩阵算法得到迅速发展,已经是一个集工程结构、计算数学和计算机应用科学于一体的综合性学术研究领域.
本文采用列压缩稀疏(Compressed Sparse Column, CSC)矩阵存储[6]策略,对矩阵LDL分解前进行优化排序减少填充元,基于消去树进行LDL符号分解,使之独立于LDL数值分解.由于非零元相同的稀疏矩阵符号分解结果相同,因此可以重复使用,避免多余的内存消耗,减少不必要的数值运算.进一步充分利用矩阵非零元的分布特性,分析并实现超节点LDL分解算法,使稀疏矩阵的分解运算转变成一系列稠密矩阵运算,并使用优化的BLAS函数库加速分解,在成倍地提高计算速度的同时进一步降低内存消耗,适用于大规模结构计算问题.
1 稀疏三角系统Lx=b的求解
本节讨论稀疏三角系统Lx=b的求解,其中:
L为稀疏下三角矩阵,b为稀疏向量.该算法是矩阵分解算法内部的基本运算子单元,拥有高效的稀疏右端项求解算法,直接影响矩阵分解算法的效率,因而具有重要意义.
1.1 求解原理
因为CSC格式存储矩阵的特点是能够快速地读取一列中的元素,因此算法以列的方式对矩阵操作,提高求解速度.式(1)~(3)可以满足要求.
由于右端项b是稀疏的,因此解x大多也是稀疏的.所以,首先要快速地判断求解结果x中非零元的位置模式,之后采用式(1)~(3)求解x.
1.2 非零元位置模式求解算法
该问题可以抽象为一个图论数学模型——有向图的可达性遍历[7],其中,
有向图G构建方式为
摘要:采用列压缩稀疏(Compressed Sparse Column, CSC)矩阵存储策略对矩阵LDL分解前进行填充元优化排序;基于消去树进行LDL符号分解,使之独立于数值分解,避免多余的内存消耗,减少不必要的数值运算.利用矩阵非零元的分布特性分析并实现超节点LDL分解算法,将稀疏矩阵的分解运算变为一系列稠密矩阵运算,并使用优化的BLAS函数库加速分解.测试表明:算法在成倍地提高计算速度的同时进一步降低内存消耗,适用于大规模的结构计算.
关键词:稀疏矩阵; LDL分解; 消去树; 符号分解; 超节点
中图分类号: TP301
文献标志码:B
现代结构工程的计算经有限元法处理后往往归结为一个规模庞大的线性代数方程组的求解.大规模的矩阵存储和快速的求解是制约大型结构计算的关键.
稀疏矩阵是指矩阵中大多数数值为零的矩阵.对于较大规模的稀疏矩阵,非零元占总元素个数比例非常小.结构分析中得到的矩阵就是一个具有很好特性的对称正定(Symmetric Positive Definite,SPD)稀疏矩阵.本文的关注点是结构工程中的SPD稀疏矩阵的直接法求解计算.目前,已经有不少稳定高效的求解库,如csparse,taucs,cholmod和superLU等,它们主要是使用cholesky分解和LU分解将稀疏矩阵A分解为LLT或
LU的形式.由于分解后的L中非零元相对于A会增多,所以称之为“填充元”.[1]因此,一般将稀疏矩阵的分解分为2部分:计算填充元的位置,称之为“符号分解”;进行实际的数值分解计算,称之为“数值分解”.
第一个通用快速SPD稀疏矩阵求解器实现库是SPARSPAK库[2],具有里程碑的意义.随后,稀疏矩阵快速直接解法的算法研究与图论算法紧密结合,如消去树[3]性质研究、最小度算法[4]和图剖分算法[5]等,同时算法的高效性还充分考虑到计算机硬件的内存布局和cache命中率等,因此稀疏矩阵算法得到迅速发展,已经是一个集工程结构、计算数学和计算机应用科学于一体的综合性学术研究领域.
本文采用列压缩稀疏(Compressed Sparse Column, CSC)矩阵存储[6]策略,对矩阵LDL分解前进行优化排序减少填充元,基于消去树进行LDL符号分解,使之独立于LDL数值分解.由于非零元相同的稀疏矩阵符号分解结果相同,因此可以重复使用,避免多余的内存消耗,减少不必要的数值运算.进一步充分利用矩阵非零元的分布特性,分析并实现超节点LDL分解算法,使稀疏矩阵的分解运算转变成一系列稠密矩阵运算,并使用优化的BLAS函数库加速分解,在成倍地提高计算速度的同时进一步降低内存消耗,适用于大规模结构计算问题.
1 稀疏三角系统Lx=b的求解
本节讨论稀疏三角系统Lx=b的求解,其中:
L为稀疏下三角矩阵,b为稀疏向量.该算法是矩阵分解算法内部的基本运算子单元,拥有高效的稀疏右端项求解算法,直接影响矩阵分解算法的效率,因而具有重要意义.
1.1 求解原理
因为CSC格式存储矩阵的特点是能够快速地读取一列中的元素,因此算法以列的方式对矩阵操作,提高求解速度.式(1)~(3)可以满足要求.
由于右端项b是稀疏的,因此解x大多也是稀疏的.所以,首先要快速地判断求解结果x中非零元的位置模式,之后采用式(1)~(3)求解x.
1.2 非零元位置模式求解算法
该问题可以抽象为一个图论数学模型——有向图的可达性遍历[7],其中,
有向图G构建方式为