[发明专利]一种基于GPU集群的并行流体仿真加速方法有效
申请号: | 201410737607.8 | 申请日: | 2014-12-04 |
公开(公告)号: | CN104360896B | 公开(公告)日: | 2017-12-15 |
发明(设计)人: | 沈旭昆;黄冠喆 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/46;G06F9/50 |
代理公司: | 北京科迪生专利代理有限责任公司11251 | 代理人: | 杨学明,顾炜 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明是一种基于GPU集群的并行流体仿真加速方法。针对流体仿真计算量大、并行度高的特点,设计了自动化的并行加速方法,进行流体的模拟与算法研究。提出并实现了一种在同一节点内多个GPU之间、多个节点之间的负载均衡算法。在给定空间中使用基于位置的流体仿真算法模拟流体的物理行为,通过减少分支以及缩小临域搜索范围对算法进行加速。对流体所在的空间进行分割,每个节点处理一个子空间,在节点内根据GPU数量进行进一步分割,从而完成流体仿真在GPU集群上的并行化。 | ||
搜索关键词: | 一种 基于 gpu 集群 并行 流体 仿真 加速 方法 | ||
【主权项】:
一种基于GPU集群的并行流体仿真加速方法,其特征在于包括以下步骤:(1) 在全局空间中按照节点数量和粒子分布情况对其在某一二维平面进行划分,而非三维空间上进行ORB划分,每个节点对应一块子空间;(2) 在每个节点的所属子空间中根据GPU数量和该子空间中粒子分布差异最大化的坐标轴方向对该子空间进行一维划分,并沿该方向对其子空间内粒子进行矩阵变换,将粒子数据发送至所属节点的相应GPU中;(3) 各GPU使用基于位置的流体仿真算法(PBF) 进行计算,多次迭代修正粒子位置,再计算限制因子项,更新粒子位置之后分别对限制因子项和粒子位置进行两次全局同步,同步后本时间步结束;(4) 根据各GPU的计算时间,对各个节点各个GPU进行负载均衡处理,调整全局空间的划分,根据新的划分在GPU之间交换粒子,而后重复步骤(3),处理下一个时间步,所述步骤(1)中在全局空间中按照节点数量和粒子分布情况对其在某一二维平面进行划分,具体方法是:按照服务器节点数量和粒子的空间分布情况对空间进行二维ORB划分,ORB方式采用多层次的方式切割,选定两个方向进行划分;统计粒子在三个方向上坐标分布的方差,取方差最大的两个方向作为切割方向;首先沿方差最大的方向将场景切割为两个长方体,然后在两个长方体中继续选择其余一个方向切割为更小的两个长方体,循环在两个方向上切割直到子空间的数量和GPU数量相同;此切割方法目的在于减小节点间交界面面积,同时不至于使传输模型过于复杂,最小化各节点传输数据量;所述步骤(2)中在每个节点的所属子空间中根据GPU数量和该子空间中粒子分布差异最大化的坐标轴方向对该子空间进行一维划分具体方法是:计算粒子坐标集在步骤(2)选取两个方向上的方差,沿方差最大的坐标轴粒子的分布差异相对最大,按照粒子在该方向的数量分布,将整个仿真空间沿该方向切割为多个长方体子空间;此切割方法目的在于在使节点间传输事务次数最小化的前提下,节点内GPU间的传输数据量和传输事务次数最小化;所述步骤(3)中各GPU使用基于位置的流体仿真算法(PBF) 进行计算并在计算限制因子项和校正粒子位置两个步骤中进行全局同步两个关键步骤,包括步骤如下:(3.1) 根据粒子上一个时间步的受力情况和速度,计算每个粒子的速度变化;在模拟开始时,将受力情况初始化为重力;(3.2) 根据粒子速度,预测每个粒子的下一步位置并更新;(3.3) 将GPU的粒子空间划分为多个网格,网格尺寸为光滑半径的一半,以缩小搜索范围,统计粒子在空间网格中的分布情况,统计每一个网格的起始终止粒子,用于后续步骤的临域搜索,这里按(2)步骤中的划分方向合并多个网格,以减少分支;(3.4) 计算每个粒子的限制因子项,并全局同步粒子的限制因子项;(3.5) 根据粒子的临域粒子限制因子项,计算每个粒子的位置偏移,更新粒子位置并全局同步;(3.6) 对每个粒子进行边界检测;(3.7) 对步骤(3.4)、(3.5)、(3.6)进行多次重复迭代,以校正(3.2)中的粒子的预测位置,当到达最大迭代次数或位置偏移小于某一阈值后,进行下一步;(3.8) 根据校正后的粒子位置,与上一时间步中粒子的位置,计算粒子的速度,计算粒子的受力情况,包括涡流和粘滞力;(3.9) 在分布粒子或重新分布粒子N个时间步后,若全局数据传输量大于某一阈值M,则表明粒子目前的分布状态不适用于当前的空间切割方式,此时重新按照节点和GPU的数量划分整个空间,并计算重新分布后第一次全局同步的数据传输总量m,设置阈值M为a*m,其中a是一个大于1的常量,在实现中根据问题的具体情况调整大小;(3.10) 重复步骤(3.1)至(3.9),直至整个模拟过程被结束;所述步骤(4)中各节点各GPU需要进行负载均衡,具体方法是:将整个集群组织成二叉树结构,叶节点为服务器节点,非叶节点代表左右子树上的节点间的交界面;对于每一个非叶节点,根据左右子树节点在上一个时间步的平均耗时来调整它们的交界面;当左子树的节点的计算时间高于右侧节点时,交界面向左侧移动一段距离,一个网格层的粒子被交换到右侧节点上,反之则将右侧节点上的一个网格层中的粒子交换给左侧节点;逐层向上迭代重复此过程,直至根节点;节点内GPU的负载均衡方式同节点间相似,但因为是一维划分,故不再需要沿叶节点向上重复,只计算叶节点一层即可。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410737607.8/,转载请声明来源钻瓜专利网。
- 上一篇:基于粒子群算法的探测设备网的设备分配方法
- 下一篇:图形化软件开发平台