首页> 中文学位 >基于CUDA的大规模线性稀疏方程组求解器的设计
【6h】

基于CUDA的大规模线性稀疏方程组求解器的设计

代理获取

目录

封面

声明

中文摘要

英文摘要

目录

第一章 绪 论

1.1 研究背景

1.2 研究现状

1.3 本论文结构安排

第二章 CUDA概述

2.1 引言

2.2 GPU硬件架构

2.3 CUDA软件构架

2.4 CUDA程序优化

2.5 小结

第三章 稀疏矩阵与线性方程组迭代算法

3.1 引言

3.2 稀疏矩阵存储格式

3.3 稀疏矩阵分块的实现

3.4 预条件共轭梯度法

3.5 Kahan累加求和

3.6 小结

第四章 预条件共轭梯度法的GPU移植

4.1 引言

4.2 并行计算的一般设计策略

4.3 共轭梯度法GPU移植

4.4 基于GPU实现的方程组求解器算法流程

4.5 小结

第五章 计算结果与分析

5.1 GPU实验环境

5.2 测试数据说明

5.3 性能测试及分析

5.4 小结

第六章 总结与展望

致谢

参考文献

硕士期间取得的研究成果

展开▼

摘要

大规模线性方程组的求解一直都是科学计算里的重要问题。随着图形处理器(GPU)硬件架构的不断发展,GPU的功能已经衍生到GPU通用计算领域。GPU作为CPU的协处理器完成大规模密集型计算任务,计算能力与小规模的集群相当。相比集群,GPU在功耗和成本上占有优势。2007年NVIDIA推出CUDA并行计算平台,降低了使用 GPU加速计算的难度,科员人员可以更方便的使用 GPU加速计算科研中的问题,这使得越来越多的领域开始引入GPU计算。
  本文在CUDA平台上,在GPU上实现大规模的稀疏线程方程组的求解。对于大规模的稀疏矩阵采用CSR存储。方程组的求解采用共轭梯度算法(CG)求解。共轭梯度法中的稀疏矩阵矢量乘(SpMV)、矢量内积操作和矢量加减操作采用GPU计算。其中SpMV和矢量内积自己动手编程相应代码,矢量加减采用NVIDIA提供的CUBLAS库函数来实现。在本文的稀疏矩阵是对称正定,在CSR存储时只存储上三角数据。在对上三角的数据SpMV操作时,把SpMV分解为乘法和加法操作。在计算矩阵下三角的 SpMV需要利用存储的上三角数据。在设计的算法中,引入原子操作来避免多个线程同一时刻对同一地址读写。目前GPU显存最大只有6GB,需要对大规模的稀疏矩阵分块处理。设计有别于常见的矩阵均分分块算法,该算法根据GPU显存的限制装载适量数据到GPU中,提高GPU的利用率。矢量内积操作在GPU规约中采用增加偏移量的办法来避免bank冲突,从而提高程序性能。实现的GPU矢量内积操作比NVIDIA自带的CUBLAS效率要高。最后在CG算法上添加雅克比预处理(JP),采用雅克比预处理共轭梯度法(JPCG)求解方程组.
  在用GTX480的显卡和i5的CPU硬件平台上,通过对多组不同规模的稀疏矩阵性能分析,在相比CPU的计算结果,GPU实现的SpMV操作可以获得30倍的加速,矢量内积在测试数据下有6倍的加速,对于整个求解过程加速比最高有46倍的加速。这也表明使用GPU求解方程组可以获得比较好的求解效率。程序能够自动适应不同规模大小的稀疏矩阵方程组求解。设计的矩阵分块算法要优于常规的矩阵均分算法,性能有一定提升。而稀疏矩阵半存储的 SpMV计算性能不如矩阵全存储的SpMV,但矩阵半存储时一次的计算规模要大于矩阵全存储的情况。JPCG算法求解收敛性要快于CG算法。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号