论文部分内容阅读
很多科学工程计算和数值处理问题可以转化为稀疏线性方程组的求解。对于大规模的稀疏线性方程组的求解,目前使用最广泛且最有效的方法是基于投影的Krylov子空间方法。光滑粒子流体动力学(smoothed particle hydrodynamics, SPH)方法是一种无网格粒子法,可以方便处理具有极大变形性的问题。改进型的不可压缩SPH(Incompressible SPH,ISPH)方法具有压力值精度高和计算效率高等特点,被应用于模拟自由表面流、多相流和复杂三维模型等方面。其压力方程的求解就是典型的稀疏线性方程组的求解。由于ISPH涉及全局的粒子压力求解,因此,求解此方程耗时特别大,占据ISPH整个算法中较大部分的时间。在CPU上求解稀疏线性方程组会耗费大量的时间,而采用GPU加速求解稀疏线性方程组有利于减少计算时间,提高计算速度,并将GPU求解稀疏线性方程组应用到ISPH算法中,提高了ISPH算法的整个运行效率。本文主要做以下几个方面的工作:(1)研究分析了稀疏线性方程组的求解涉及到的问题,对线性矩阵的存储方式进行了介绍,并对向量加减、内积以及稀疏矩阵向量乘在CUDA下的实现进行了分析。最终给出了基于CUDA的稀疏线性方程组求解的具体实现方案。(2)利用GPU的体系结构特性对稀疏线性方程组的求解进行了相关优化,主要有线程的合理分配、提高共享存储器的访存效率、利用纹理内存加速局部性数据空间的访问、CPU与GPU之间程序结构的合理分配以及寄存器和全局存储器的优化。(3)用C++语言设计并实现了Fortran语言版的基于ISPH算法的单螺杆挤出三维模型。并对ISPH算法中耗时较大的压力方程的求解调用GPU版的稀疏线性方程组求解算法。实验证明,采用GPU版的稀疏线性方程组求解提高了系统效率。