基于CUDA的SMAC算法并行化
2016-11-01常立博杜慧敏韩俊刚
常立博,杜慧敏,韩俊刚
(1.西安邮电大学 电子工程学院,陕西 西安 710121; 2.西安邮电大学 计算机学院,陕西 西安 710121)
基于CUDA的SMAC算法并行化
常立博1,杜慧敏1,韩俊刚2
(1.西安邮电大学 电子工程学院,陕西 西安 710121; 2.西安邮电大学 计算机学院,陕西 西安 710121)
改进SMAC(Simplified Marker and Cell)算法,增强其对流体模拟的实时处理能力。采用点差分格式对求解压力场和速度更新的偏微分方程进行离散化;引入消除数据相关性的存储算法以减少数据传输,并借助分层存储机制提高访存比,采用并行归约增加线程并行度;在统一计算设备架构平台下,对离散化的SMAC算法进行改进、优化及并行化实现。纯粹计算及多次迭代模拟实验结果显示,改进算法提速明显,可实现对一般场景的实时模拟。
计算流体力学;统一计算设备架构;并行算法
流体流动现象的模拟不仅是计算机动画、游戏、影视和飞行模拟等领域不可或缺的元素,也是科学计算可视化领域的研究热点之一[1]。常用的流体模拟算法有基于Stable Fluids[2]和基于SMAC[3]两类。Stable Fluids算法虽然可以较好地完成一般场景的模拟工作,但其本身存在严重的数值耗散,从而失去了模拟的物理真实感[1]。SMAC是MAC(Maker and Cell)方法的一种改进,具有良好的数值特性、求解精度和计算效率,已广泛应用于计算机图形学领域[4]。但基于SMAC的流体模拟算法存在复杂度较高、计算耗时过长等问题,无法用于实时性要求较高的场合。以提高计算密集型算法速度而发展起来的图形处理器(Graphic Processing Unit, GPU),为提高计算机动画实……
