论文摘要
近年来,随着图形处理器(GPU)硬件构架的不断发展,GPU的可编程性能不断加强,同时计算能力大幅度增加,使得GPU开始逐渐出现在数值计算领域。随着NVIDIA CUDA并行计算平台的不断完善,GPU并行计算也不断渗透到各个学科。由于有限元方法实现的特殊性,在GPU构架成熟前的移植工作发展非常缓慢,到目前为止也只是处于初步状态。本文通过分析NVIDIA GPU构架以及其上CUDA平台的编程模型特点,将传统的有限元分析程序中计算量比较大的组装以及稀疏线性方程组求解两部分移植到GPU上。在充分考虑CUDA平台GPU的硬件特点后,选定迭代法中的共轭梯度法(CG)求解稀疏线性方程组,该方法中计算量最大的部分为稀疏矩阵与向量相乘(SpMV)。考虑到CUDA平台数据读写的特点,先确定总刚矩阵的压缩存储格式为CSR,然后对模型的节点进行重排序,以使得在方程求解中的SpMV操作可以更好的利用GPU中宝贵的缓存。为了保证组装过程中高度的并行化计算,防止数据读写冲突,对模型的单元进行分组,使得每一组中的单元互不相邻,这样进行组装计算时每个线程计算的单刚在总刚中对应的位置不会有任何重叠,防止了潜在的数据冲突。将CG法中向量相关的操作使用CUDA BLAS库替代,同时实现自己的SpMV操作,这样方程求解也充分利用了GPU资源。通过计算4种不同的单元模型,相比CPU端的计算结果,GPU在组装部分最高可以达到7倍加速,在方程求解部分最高达到了6.4倍加速。结果表明使用了GPU资源的有限元方法可以得到较好的加速效果