基于CUDA架构的LBM共享内存计算优化
2021-01-22李华兵赫轶男张乾毅韦华建韦国柱
桂林电子科技大学学报 2020年4期
李华兵, 赫轶男, 张乾毅, 韦华建, 韦国柱
(桂林电子科技大学 材料科学与工程学院,广西 桂林 541004)
近年来,在物理学领域中晶格玻尔兹曼法作为一种流体力学常用方法,越来越受到国内外学者的青睐。传统基于CPU上的线性运算的运算速度问题也逐渐暴露出来,作为发明GPU的领头公司NVIDIA亦认识到这一问题,其在2007年便推出了基于GPU上的并行计算架构(CUDA),于是便开启了CUDA渲染时代。
在物理学中,晶格玻尔兹曼方法在计算流体动力学方面的模拟是一个非常好的工具。迄今为止,LBM已成功地应用于多种复杂流体系统,如多孔介质流[1]、多相流[2]、反应扩散流[3]、血液流[4]等。将计算流体动力学与GPU数值模拟相结合亦取得了众多成果,如Tolke等[5]利用CUDA的并行优势实现了LBM中的D3Q15模型,张云等[6]实现了多松弛模型的计算加速。这2种方法虽都将CUDA应用在LBM上,但由于LBM规则格子模型处理难度较大,无法充分展示CUDA架构的加速效果。鉴于此,以D2Q9模型为例,通过改善内存访问以及数据传输的方法,进一步提高LBM的计算速度。
1 GPU与CUDA
1.1 GPU与CPU的区别
GPU与CPU二者之间虽不同,但也存在联系。2种器件的相同点是它们都是处理单元;不同点是CPU是“核心的”,而GPU主要用于“图像”处理。二者具有不同的架构,GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑,并省去了储存单元,而CPU不仅被储存单元占据了大量空间,且还有复杂的控制逻辑和诸多优化电路。虽然在逻辑控制与线性运算方面较好,但相比之下,GPU更擅长大规模的并行计算。……
登录APP查看全文
