CN104360896A - 一种基于gpu集群的并行流体仿真加速方法 - Google Patents
一种基于gpu集群的并行流体仿真加速方法 Download PDFInfo
- Publication number
- CN104360896A CN104360896A CN201410737607.8A CN201410737607A CN104360896A CN 104360896 A CN104360896 A CN 104360896A CN 201410737607 A CN201410737607 A CN 201410737607A CN 104360896 A CN104360896 A CN 104360896A
- Authority
- CN
- China
- Prior art keywords
- particle
- node
- gpu
- space
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明是一种基于GPU集群的并行流体仿真加速方法。针对流体仿真计算量大、并行度高的特点,设计了自动化的并行加速方法,进行流体的模拟与算法研究。提出并实现了一种在同一节点内多个GPU之间、多个节点之间的负载均衡算法。在给定空间中使用基于位置的流体仿真算法模拟流体的物理行为,通过减少分支以及缩小临域搜索范围对算法进行加速。对流体所在的空间进行分割,每个节点处理一个子空间,在节点内根据GPU数量进行进一步分割,从而完成流体仿真在GPU集群上的并行化。
Description
技术领域
本发明属于计算机应用领域,具体地说是一种基于GPU集群的并行流体仿真加速方法,该方法可用于影视、游戏、医学等各个领域中,模拟流体的行为。
背景技术
随着虚拟现实技术的发展,流体动画在电影特技、娱乐游戏、军事仿真、医学仿真、数字媒体中广泛应用,人们对真实感有了越来越高的需求。为了仿真这些复杂的场景效果,一帧一帧手工渲染动画自然满足不了需求,近年来,计算机硬件性能飞速发展,极大的促进了计算机图形学的深入研究。流体仿真更是多种多样,从早期简单的大面积水体仿真,如平静的水面、静止的烟雾,到现在渲染更为丰富细致的动态流体,如飞溅、泡沫、沸腾、多流体融合、多相流,流体交互仿真等,流体和其物理属性已经紧密的结合在一起。因此,基于物理的流体动画仿真成为计算机图形学和虚拟现实领域中的研究热点之一。
近年来被广泛应用的光滑粒子流体动力学(Smoothed Particle Hydrodynamics)算法是一种基于物理的流体仿真算法。该类方法使用粒子离散化问题域,通过加权求和邻居粒子的贡献值来计算粒子的物理量。该算法能够很好的处理自由表面、变形边界、运动交界面以及大变形等问题。但是SPH算法使用了刚性方程以维持其不可压缩性,这使得力的计算结果较大,只能使用足够小的时间步长。
基于位置的流体仿真(Position Based Fluid)算法在基于位置的动力学(Position BasedDynamics,PDB)框架中添加了密度的迭代求解。通过一组位置限制公式来维持一个固定的密度。该方法能够得到同SPH算法类似的不可压缩性以及收敛性,同时继承了PBD的几何稳定性,从而可以在实时仿真中使用更大的时间步。同时改善了SPH算法对时间步长的限制,允许使用更大的时间步长,在相同时间内可以获得更大的粒子位置更新,同时保留了基于粒子的流体仿真所固有的优势,具有广阔的应用前景。
为了使得仿真效果更加逼真、细节更丰富,粒子规模被不断提高。PBF算法的计算量非常大,CPU已经难以满足PBF方法的计算需求,浮点性能超过CPU几十倍的GPU开始被用于加速PBF方法。最近十余年,GPU在浮点性能和可编程性方面都取得了长足的进步。浮点性能方面,目前GPU无论在单精度浮点运算还是双精度浮点运算都达到了数Tflops。可编程性方面,随着CUDA的问世,GPU从传统的图形领域跨入了通用计算领域。越来越多的应用通过GPU加速获得了大幅度的性能提升。GPU是一种并行硬件架构,特别适合于加速计算密度大的并行算法。
发明内容
本发明的目的是在GPU集群上实现PBF的自动化加速算法,使得可以用同一种负载均衡策略、通信管理策略、存储管理策略来实现基于GPU集群的流体仿真算法。让开发人员能够快速在GPU集群上实现仿真算法,将研发精力从算法实现转移至对仿真算法本身的研究,只投入少量精力即可获得GPU集群的加速。
为了实现上述目的,对流体物理行为的模拟采用基于位置的流体仿真算法(PBF)实现,并通过减少分支,缩小临域搜索空间对算法进行优化。按照节点数量、节点内GPU数量和粒子分布情况对全局空间进行划分,将计算任务均衡的划分至各个GPU中,在一些联系性较强的步骤执行后对粒子的一些关键属性进行全局同步,使其能够正确的并行的快速的在GPU集群上完成整个计算任务。在计算过程中,根据各个GPU的计算时间,对全局的GPU进行负载均衡。
附图说明
图1示出本发明中并行加速方法所使用平台的整体逻辑结构;
图2示出本发明基于粒子分布情况与服务器节点数量划分空间;
图3示出本发明每个子空间周围的ghost粒子层;
图4示出本发明缩小临域搜索范围。
具体实施方式
下面结合附图对本发明作进一步说明。
并行加速方法所使用平台的整体逻辑结构如图1所示。具体步骤如下:
(1)按照服务器节点数量和粒子的空间分布情况对空间进行二维ORB划分,如图2所示。统计粒子在三个方向上坐标分布的方差,取方差最大的两个方向作为切割方向。首先沿方差最大的方向将场景切割为两个长方体,然后在两个长方体中继续选择其余一个方向切割为更小的两个长方体,循环在两个方向上切割直到子空间的数量和GPU数量相同;
(2)统计每个节点的所属子空间中粒子在ORB划分的两个方向上的方差,选定方差大的方向对该子空间进行一维划分,将整个仿真空间沿该方向切割为多个长方体子空间。将粒子数据发送至所属节点的相应GPU中,并包含该粒子群周围的一些冗余粒子信息用于后续计算,称之为ghost粒子层,如图3所示;
(3)根据粒子上一个时间步受力情况(模拟开始时初始化为重力)和速度,计算每个粒子的速度变化;
(4)将GPU的粒子空间划分为多个网格,如图4所示,网格尺寸为光滑半径的一半,以缩小搜索范围,统计粒子在空间网格中的分布情况,统计每一个网格的起始终止粒子,用于后续步骤的临域搜索,这里按(2)步骤中的划分方向合并多个网格,以减少分支;
(5)计算每个粒子的密度ρ。粒子密度由标准SPH密度估算公式得出,如粒子i的密度ρi是关于其所有临域粒子位置坐标的函数:
其中,mj是临域粒子的质量,h是光滑半径,W是光滑核函数。
(6)计算每个粒子的限制公式C,粒子i的限制公式如下:
其中,ρi是粒子i的密度,ρ0是静态密度。
(7)计算每个粒子的限制因子项,求粒子i的限制因子项λi的公式如下:
(8)全局同步限制因子项λ,每个GPU同相邻GPU交换相邻区域内的粒子的λ;
(9)计算位置偏移Δp,当一个粒子的临域粒子少于一定数量导致其密度无法达到静态密度时,会造成负向的压强,将出现粒子结块和聚集的现象,可以通过在光滑核函数中增加一个附加压力项Scorr来解决:
其中这里Δq是一个小于光滑半径的长度,n是一个常数,一般取值为4;
(10)根据粒子位置偏移更新粒子位置,并全局同步新的粒子位置,进行边界检测;
(11)对步骤(5)、(6)、(7)、(8)、(9)、(10)进行多次重复迭代,以校正步骤(3)中的粒子的预测位置,当到达最大迭代次数或位置偏移小于某一阈值后,进行下一步;
(12)根据校正后的粒子位置,与上一时间步中粒子的位置,计算粒子的速度,计算粒子的受力情况,包括涡流和粘滞力;
(13)对各节点各GPU进行负载均衡,将整个集群组织成二叉树结构,叶节点为服务器节点,非叶节点代表左右子树上的节点间的交界面。对于每一个非叶节点,我们根据左右子树节点在上一个时间步的平均耗时来调整它们的交界面。当左子树的节点的计算时间高于右侧节点时,交界面向左侧移动一段距离,一个网格层的粒子被交换到右侧节点上,反之则将右侧节点上的一个网格层中的粒子交换给左侧节点。逐层向上迭代重复此过程,直至根节点。节点内GPU的负载均衡方式同节点间相似,但因为是一维划分,故在不需要沿叶节点向上重复,只计算叶节点一层即可。
(14)在分布粒子或重新分布粒子N个时间步后,若全局数据传输量大于某一阈值M,则表明粒子目前的分布状态不适用于当前的空间切割方式,重新分布粒子,执行步骤(1)(2),并计算重新分布后第一次全局同步的数据传输总量m,重新设置阈值M为a*m,其中a是一个大于1的常数。
(15)重复步骤(3)至(14),直至整个模拟过程被结束。
Claims (5)
1.一种基于GPU集群的并行流体仿真加速方法,其特征在于包括以下步骤:
(1)在全局空间中按照节点数量和粒子分布情况对其在某一二维平面进行划分,而非三维空间上进行ORB划分,每个节点对应一块子空间;
(2)在每个节点的所属子空间中根据GPU数量和该子空间中粒子分布差异最大化的坐标轴方向对该子空间进行一维划分,并沿该方向在对其子空间内粒子进行矩阵变换,将粒子数据发送至所属节点的相应GPU中;
(3)各GPU使用基于位置的流体仿真算法(PBF)进行计算,多次迭代修正粒子位置,再计算限制因子项,更新粒子位置之后分别对限制因子项和粒子位置进行两次全局同步,同步后本时间步结束;
(4)根据各GPU的计算时间,对各个节点各个GPU进行负载均衡处理,调整全局空间的划分,根据新的划分在GPU之间交换粒子,而后重复步骤(3),处理下一个时间步。
2.如权利要求1所述的基于GPU集群的并行流体仿真加速方法,其特征在于:在所述步骤(1)中在全局空间中按照节点数量和粒子分布情况对其在某一二维平面进行划分,具体方法是:
按照服务器节点数量和粒子的空间分布情况对空间进行二维ORB划分,ORB方式采用多层次的方式切割,选定两个方向进行划分;统计粒子在三个方向上坐标分布的方差,取方差最大的两个方向作为切割方向;首先沿方差最大的方向将场景切割为两个长方体,然后在两个长方体中继续选择其余一个方向切割为更小的两个长方体,循环在两个方向上切割直到子空间的数量和GPU数量相同;此切割方法目的在于减小节点间交界面面积,同时不至于使传输模型过于复杂,最小化各节点传输数据量。
3.如权利要求1所述的基于GPU集群的并行流体仿真加速方法,其特征在于:在所属步骤(2)中对每个节点的全局子空间进行划分,具体方法是:
计算粒子坐标集在步骤(2)选取两个方向上的方差,沿方差最大的坐标轴粒子的分布差异相对最大,按照粒子在该方向的数量分布,将整个仿真空间沿该方向切割为多个长方体子空间;此切割方法目的在于在使节点间传输事务次数最小化的前提下,节点内GPU间的传输数据量和传输事务次数最小化。
4.如权利要求1所述的基于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),直至整个模拟过程被结束。
5.如权利要求1所述的基于GPU集群的并行流体仿真加速方法,其特征在于:在所属步骤(4)中各节点各GPU需要进行负载均衡,具体方法是:
将整个集群组织成二叉树结构,叶节点为服务器节点,非叶节点代表左右子树上的节点间的交界面;对于每一个非叶节点,我们根据左右子树节点在上一个时间步的平均耗时来调整它们的交界面。当左子树的节点的计算时间高于右侧节点时,交界面向左侧移动一段距离,一个网格层的粒子被交换到右侧节点上,反之则将右侧节点上的一个网格层中的粒子交换给左侧节点;逐层向上迭代重复此过程,直至根节点;
节点内GPU的负载均衡方式同节点间相似,但因为是一维划分,故在不需要沿叶节点向上重复,只计算叶节点一层即可。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410737607.8A CN104360896B (zh) | 2014-12-04 | 2014-12-04 | 一种基于gpu集群的并行流体仿真加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410737607.8A CN104360896B (zh) | 2014-12-04 | 2014-12-04 | 一种基于gpu集群的并行流体仿真加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104360896A true CN104360896A (zh) | 2015-02-18 |
CN104360896B CN104360896B (zh) | 2017-12-15 |
Family
ID=52528160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410737607.8A Expired - Fee Related CN104360896B (zh) | 2014-12-04 | 2014-12-04 | 一种基于gpu集群的并行流体仿真加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104360896B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787227A (zh) * | 2016-05-11 | 2016-07-20 | 中国科学院近代物理研究所 | 结构材料辐照损伤的多gpu分子动力学模拟方法 |
WO2016191908A1 (en) * | 2015-05-29 | 2016-12-08 | Intel Corporation | Container access to graphics processing unit resources |
CN107145391A (zh) * | 2017-04-18 | 2017-09-08 | 许继集团有限公司 | 一种存储与计算服务器、电力用户用电量排名方法及系统 |
CN107341849A (zh) * | 2017-07-12 | 2017-11-10 | 大连海事大学 | 一种快速实时烟雾模拟算法 |
CN107657131A (zh) * | 2017-10-18 | 2018-02-02 | 北方工业大学 | 一种基于GPUs集群的流体交互仿真方法及系统 |
CN109104470A (zh) * | 2018-07-25 | 2018-12-28 | 安徽商贸职业技术学院 | 一种基于共享机制的最小通讯负载平衡方法 |
CN109344450A (zh) * | 2018-09-07 | 2019-02-15 | 中山大学 | 基于pbf的流体凝固模拟方法及系统 |
CN109814946A (zh) * | 2018-12-29 | 2019-05-28 | 创新科存储技术(深圳)有限公司 | 一种在XenServer中实现分布式存储的方法和装置 |
CN109871553A (zh) * | 2017-12-04 | 2019-06-11 | 北京大学 | 一种针对分子动力仿真模型的并行化加速方法 |
CN110929456A (zh) * | 2019-11-13 | 2020-03-27 | 西安交通大学 | 移动粒子法并行计算等效粒子负载均衡加速方法 |
CN112100939A (zh) * | 2020-09-14 | 2020-12-18 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时流体仿真方法及其系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7921003B2 (en) * | 2007-01-23 | 2011-04-05 | Adobe Systems Incorporated | System and method for simulating shallow water effects on arbitrary surfaces |
CN103679802A (zh) * | 2013-12-01 | 2014-03-26 | 北京航空航天大学 | 基于屏幕空间的sph流体表面实时绘制方法 |
-
2014
- 2014-12-04 CN CN201410737607.8A patent/CN104360896B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7921003B2 (en) * | 2007-01-23 | 2011-04-05 | Adobe Systems Incorporated | System and method for simulating shallow water effects on arbitrary surfaces |
CN103679802A (zh) * | 2013-12-01 | 2014-03-26 | 北京航空航天大学 | 基于屏幕空间的sph流体表面实时绘制方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10580105B2 (en) | 2015-05-29 | 2020-03-03 | Intel Corporation | Container access to graphics processing unit resources |
WO2016191908A1 (en) * | 2015-05-29 | 2016-12-08 | Intel Corporation | Container access to graphics processing unit resources |
US11386519B2 (en) | 2015-05-29 | 2022-07-12 | Intel Corporation | Container access to graphics processing unit resources |
CN105787227B (zh) * | 2016-05-11 | 2018-10-09 | 中国科学院近代物理研究所 | 结构材料辐照损伤的多gpu分子动力学模拟方法 |
CN105787227A (zh) * | 2016-05-11 | 2016-07-20 | 中国科学院近代物理研究所 | 结构材料辐照损伤的多gpu分子动力学模拟方法 |
CN107145391A (zh) * | 2017-04-18 | 2017-09-08 | 许继集团有限公司 | 一种存储与计算服务器、电力用户用电量排名方法及系统 |
CN107341849A (zh) * | 2017-07-12 | 2017-11-10 | 大连海事大学 | 一种快速实时烟雾模拟算法 |
CN107341849B (zh) * | 2017-07-12 | 2020-03-10 | 大连海事大学 | 一种快速实时烟雾模拟算法 |
CN107657131A (zh) * | 2017-10-18 | 2018-02-02 | 北方工业大学 | 一种基于GPUs集群的流体交互仿真方法及系统 |
CN109871553A (zh) * | 2017-12-04 | 2019-06-11 | 北京大学 | 一种针对分子动力仿真模型的并行化加速方法 |
CN109871553B (zh) * | 2017-12-04 | 2021-07-09 | 北京大学 | 一种针对分子动力仿真模型的并行化加速方法 |
CN109104470B (zh) * | 2018-07-25 | 2021-07-02 | 安徽商贸职业技术学院 | 一种基于共享机制的最小通讯负载平衡方法 |
CN109104470A (zh) * | 2018-07-25 | 2018-12-28 | 安徽商贸职业技术学院 | 一种基于共享机制的最小通讯负载平衡方法 |
CN109344450A (zh) * | 2018-09-07 | 2019-02-15 | 中山大学 | 基于pbf的流体凝固模拟方法及系统 |
CN109814946A (zh) * | 2018-12-29 | 2019-05-28 | 创新科存储技术(深圳)有限公司 | 一种在XenServer中实现分布式存储的方法和装置 |
CN110929456B (zh) * | 2019-11-13 | 2021-07-06 | 西安交通大学 | 移动粒子法并行计算等效粒子负载均衡加速方法 |
CN110929456A (zh) * | 2019-11-13 | 2020-03-27 | 西安交通大学 | 移动粒子法并行计算等效粒子负载均衡加速方法 |
CN112100939A (zh) * | 2020-09-14 | 2020-12-18 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时流体仿真方法及其系统 |
CN112100939B (zh) * | 2020-09-14 | 2023-06-16 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时流体仿真方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104360896B (zh) | 2017-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104360896A (zh) | 一种基于gpu集群的并行流体仿真加速方法 | |
US20180157969A1 (en) | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network | |
CN106529569B (zh) | 基于深度学习的三维模型三角面特征学习分类方法及装置 | |
US20150213163A1 (en) | Particle flow simulation system and method | |
Brandvik et al. | Acceleration of a two-dimensional Euler flow solver using commodity graphics hardware | |
Mendina et al. | A general purpose parallel block structured open source incompressible flow solver | |
US10776532B2 (en) | Modified effective mass for parallel rigid body simulation | |
CN104183020B (zh) | 基于带惩罚项的局部二次误差测量的地物网格化简方法 | |
CN102393826B (zh) | 一种基于多核并行处理的柔性场景连续碰撞检测方法 | |
WO2023216915A1 (zh) | 一种基于图形处理器的直升机流场数值模拟系统及方法 | |
CN110781632A (zh) | 一种基于变光滑长度的sph流体模拟方法 | |
CN103345580A (zh) | 基于格子Boltzmann方法的并行CFD方法 | |
CN109360266A (zh) | 一种道路建模方法、相关装置和设备 | |
US20170161413A1 (en) | Method and apparatus for modeling movement of air bubble based on fluid particles | |
CN102938160B (zh) | 基于细节捕获和形态校正的流体动画渲染方法 | |
CN104680567A (zh) | 根据曲率对三维模型进行帧聚类的方法 | |
CN109753682A (zh) | 一种基于gpu端的有限元刚度矩阵模拟方法 | |
CN109190450A (zh) | 基于分布式计算平台的人工智能遥感影像数据提取方法 | |
Im et al. | Visual simulation of rapidly freezing water based on crystallization | |
CN104318599A (zh) | 一种基于几何特征的高精度流体动画建模方法 | |
CN109410333A (zh) | 一种高质量超面片聚类生成方法 | |
Mao et al. | A new mesh simplification algorithm based on quadric error metric | |
CN110717297B (zh) | 织物仿真模型的建立方法、系统、存储介质及电子设备 | |
CN112307668A (zh) | 一种基于粒子的粘液类效果模拟方法 | |
CN107341849B (zh) | 一种快速实时烟雾模拟算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171215 Termination date: 20201204 |