论文部分内容阅读
在大量的科学计算和工程应用中,稀疏线性方程组的求解是一个特别重要的部分,Cholesky分解因具有很高的性能且计算结果精确常用来分解大的稀疏线性方程组。过去,为了减少总的计算时间,有很多科研人员利用CPU集群分解稀疏矩阵。如今,随着图形处理器(Graphics Processing Unit,GPU)计算能力的快速提升,已有采用GPU加速稀疏线性方程组求解的方案。为了提升性能,这些方案把计算量大的操作分配给GPU处理,但因GPU编程模式的原因,这些方案往往无法充分利用GPU的计算资源。针对目前GPU处理稀疏线性方程组存在的问题,提出并实现了基于GPU的多波前稀疏Cholesky分解方法。多波前方法将一个大的稀疏矩阵分解为一系列小的稠密矩阵,然后再对这些稠密矩阵进行处理,在每个稠密矩阵的分解过程中,矩阵与矩阵的乘法(General Matrix-matrix Multiplication,GEMM)运算占据了绝大部分的计算时间,而且多个GEMM运算很难在GPU上并行执行,为了提升程序的性能,从三个角度对程序进行了优化。多任务队列方案用于在GPU的内核函数中同时执行多个GEMM操作,多个GEMM操作的计算时间以及数据传输的开销都能得到隐藏,减少了总的计算时间;为了使每个GEMM操作的处理时间都是最少的,设定一个阈值来决定GEMM操作的处理平台:如果某个GEMM操作涉及的计算量比该阈值大,就将其分配给GPU处理,否则分配给CPU处理;在GPU上利用多个线程块处理一个GEMM运算,同时,优化算法的执行流程来提升GEMM操作的性能。基于Linux操作系统和CUDA编程环境,采用4种测试方案在6组测试数据上进行了性能对比。实验结果表明:基于GPU的多波前稀疏Cholesky分解方法,与CPU实现的多线程Cholesky分解相比,加速比达到了3.15倍;同时,与现有的GPU加速方案相比,加速比达到了1.98倍。3种优化措施被应用于电力系统潮流计算中后,程序的性能也得到了明显的提升。