论文部分内容阅读
科技的进步与社会的需求推动了高性能计算技术的出现与发展,而在科学计算领域,随着问题规模与复杂度的不断增加,人们对大规模计算的要求也急剧增长。当前,一般通过提升集群模式下计算节点CPU性能或增加集群节点数量来提高程序的执行效率,这不仅耗费财力,而且在很多情况下,对于一个给定的并行程序,增加计算节点的数量并不能提高程序的执行效率。近年来,CPU的快速发展与NVIDIA公司推出的CUDA(Computer UnifiedDevice Architecture)技术,正推动着GPU在高性能计算领域中的应用。研究CUDA平台下程序性能分析工具及程序优化技术,对于充分利用GPU的计算优势,提高并行程序的执行效率具有重要意义。
CUDA平台下并行程序的开发与优化不同于CPU集群模式,这是由GPU与CPU集群的不同架构决定的。本文在分析了GPU硬件架构的特点和CUDA并行编程模型的基础上,并结合CPU集群环境下并行程序性能分析技术,设计并实现了适用于CUDA平台的性能分析工具。该工具主要通过在CUDA原程序中插入性能分析函数,动态地获取程序的执行时间信息及kernel函数的最优线程block值。另外,以稀疏矩阵向量乘算法为例,本文研究了CUDA平台下,非规则应用中数据划分策略以及CUDA程序中线程对GPU存储资源优化访存的方法。实验表明,与CPU程序相比,经过优化后的稀疏矩阵向量乘算法的加速比最高可达30.4;对于不同优化版本的kernel程序,当取最优线程block值时所获取的程序执行效率与程序平均执行效率相比,blockkernel能够获得大约32%的性能提升,warp kernel能够获得大约19%的性能提升,subsection kernel能够获得大约13%的性能提升。