基于CPU-GPU混合加速的SPH流体仿真方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
OpenMP;
l。(Yi)一∑m,w(n_,^)
(2)
Figure
Framework for SPH fluid simulation
Oh
based
CPU GPU hybrid acceleration
为使位于不同压强区的两个粒子相互压力相 等,采用双方粒子压强的算术平均值代替单个粒子 压力,得到:
A(r)一yA,m JW(r 々i p
J
hh)
(1)
』—J3
其中,A(r)代表密度、压力、粘度力等粒子的物理
万方数据
胡鹏飞等:基于CPU GPU混合加速的SPH流体仿真方法
1233
属性,r是n空问的任意一点,w是以h为作用半 径的对称的光滑核函数,J是离散粒子系统中迭代 所有的粒子质点,m,是粒子J的质量,A,是粒子 的某种属性,如粘稠力、密度等,p,是粒子J的密 度。 当使用密度值作为属性A,时,得到各流体粒 子的密度值为:
CN ISSN 1007 130X
43,.1.2—58/TP
计算机工程与科学
c。mputer Engineering&science
07
第36卷第7期2014年7月
——i=2●————————————————————————————————————一
文章编号:1007 130X(2014)07
1231
PU(General Purposed N
维斯托克斯N
Stokes)方程模拟流体的
粒子方法,该方法是用来模拟基于物理的流体运动 的一个常用的模型,但该方程计算量大。光滑粒子 流体动力学SPH(Smoothed
Particle Hydrody
namics)方法是基于粒子的流体模拟方法,运用 SPH方法能大大简化N S方程求解。尽管如此, 随着流体模拟的真实性和实时性要求越来越高,用 于模拟流体流动的粒子数量也越来越多,从而导致 计算量大大增大,仅在CPU上进行SPH方法求解 难以达到流体模拟的真实性和实时性要求。 随着图形硬件的发展,图形处理单元GPU
3 2
SPH流体建模
SPH方法将流场离散成一系列粒子,把连续
相关工作
Gingold R
A等‘31提出的SPH方法是一种常
的物理量用多个离散粒子的集合的插值来表示,离 散化形式为:
用于模拟流体流动的计算方法,最初主要用于解决 天体物理学中的流体质团无边界情况下的三维空 问任意流动的计算问题。Stam J_等‘43最早引入 SPH方法模拟气体和火焰效果。MOller M等‘51
15)…。。。…“”‘…“。…………”“∽批匝似础头搜
South,Wuchang District,Wuhan 430072,Hubei,P.R.China
1232
Computer
Engineering&Science计算机工程与科学2014,36(7)
滑核函数来实现。近年来,基于粒子的拉格朗日方 法得到了众多学者的青睐,取得了较好的研究进
(Graphic Processing
等口1提出了一种可同时用于单双向耦合的流固耦
Unit)不仅只负责图形渲染工
作,还能采用GPU完成一些通用计算工作。在处 理能力和存储器带宽上,GPU相对CPU有明显优 势,且基于粒子的流体模拟问题具有高度的数据平 行性和高强度计算需求,这类实时流体模拟问题非 常适合采用GPU加速策略解决。 近几年来,CPU的发展也从单核发展到多核, 多线程编程可在多个CPU核心间实现线程级并 行。基于SPH方法的流体模拟包括粒子物理量计 算及渲染等部分,所有部分都由GPU并行处理完 成还存在较多的困难,组合CPU—GPU的混合加速 流体模拟E匕传统的CPU或GPU计算更快且能简 化算法设计。 基于上述考虑,本文提出一种基于CPU—GPU 混合加速的SPH流体仿真方法。该混合加速方法 包括流体模拟计算和渲染部分:(1)在流体模拟计 算部分,采用GPU并行加速技术,并运用划分均 匀空问网格方法加速构建邻居粒子表,同时对 SPH各过程问的数据传输关联进行优化,以减少 数据传输带来的加速损失;(2)在流体渲染部分,采 用基于多核CPU的OpenMP加速技术对粒子采 用点、球体、透明液体等进行渲染处理。
对于单个粒子产生的压力乡,可以用理想气体 状态方程p。一K(肛--po)进行求解,fD0表示流体的 初始密度值,K是与流体温度有关的常数。 流体的粘性力通过公式(4)求出:
构建邻居粒子表
SPH流体的模拟是通过离散的粒子实现的, 离散粒子间的相互作用通过一个对称的、具有一定 作用半径的光滑核函数计算得到。粒子间的相互 作用具有一定作用半径,对粒子的属性进行更新 时,需遍历系统中的其他所有粒子,这会导致非常 低的查找效率。为此,Amada T等口妇提出构造邻 居粒子表的方法,采用该方法计算粒子物理量时, 可只查找邻居粒子来进行计算。其优点在于每个 迭代步,只需构建一次邻居粒子表,在粒子物理量 计算过程中,都是查找表中数据进行计算。但是, 采用这种方法构建邻居粒子表时,采用的方法仍是 遍历所有粒子,导致建表时间过长,影响模拟的实 时性。后来一些学者在原有邻居粒子算法基础上, 进行了CPU端的优化工作,如基于粒子对的邻居
doi:10.3969/j.issn.1007—130X.2014.07.004
Fluid simulation method based
on
CPU-GPU hybrid acceleration
HU Peng—fei,YUAN Zhi—yong,LIAO Xiang—yun,ZHENG Qi,CHEN Er-hu
to 01
in
the Virtual reality,but it requires
lot of computing resources.The general methods
on
dif—
c。n—
iicult
slsts
on
achieve the real—time requirement of fluid simulation based phYslca』computing,collision detection and rendering and
call
SPH.The simuiation of fluid
SO
on.The parallel computing based
GPU
speed up the computing and collision of particles and simulate the m。tion of fluid in real一 satisfy the realistic and real—time requirements,a novel fluid simulation method based
tlme・
on
In order to
CPU—GPU hybrid acceleration is proposed,which consists of computing and rendering.The comDu— tlng Part oI fluid simulation is accelerated by GPU,and the rendering part is accelerated bv OpenMP
GPU)的概念被提出,GPG—
PU使得许多算法能在GPU上并行实现。Bolz J 等[93在GPU上实现了稀疏矩阵的求解。More—
land
K等口叼实现了基于GPU的快速傅里叶变换。
同时,研究人员也提出了一些采用GPU加速实现 流体流动模拟的算法。Amada T等口q用GPU实 现了对SPH流体的模拟,但该算法中,邻居粒子表 的构建是在CPU端进行的。Harada T等[121提出 了在GPU上构造均匀空间网格来覆盖整个离散 粒子系统的计算区域,从而很大程度上加快了邻居 粒子表的构建。 另外,多核处理器已成为未来处理器技术的发 展方向,研究人员开始利用多核CPU来进行流体 模拟。Ihmsen M等[1朝提出一种基于多核CPU的 并行计算方法对SPH粒子状态属性进行计算,大 大提高了粒子的处理速度。多核多线程开发工具 OpenMP[1妇是一种共享存储并行计算机系统上的 应用程序接口,它能通过与标准Fortran、C和C+ +结合进行工作,能有效支持同步共享变量以及负 载的合理分配等任务且使用便捷。
展。
Foster
Baidu Nhomakorabea
利用SPH方法模拟流体的运动,首次将SPH方法 应用于水面的绘制,提出了用一个光滑核函数来计 算粒子问的密度、粘度、速度等物理量。之后的相
N和Metaxas D[21介绍了一种运用纳
S(Navier
关研究大多是基于MOiler M的基础工作,并且相 关改进主要集中于计算的简化以及稳定性的提高 方面邸]。近几年的工作大多围绕不同模态的多相 耦合展开,Schechter H等口1提出在流体、固体周 围设置虚粒子用于解决流固耦合问题。Akinci 合边界处理方法。 SPH方法需要对用于模拟流体流动的离散粒 子状态进行计算,需要大量的计算资源,如果仅依 靠CPU处理计算工作,对于大数量级的粒子模 拟,现有的CPU还不能完成逼真、实时的流体运 动模拟。 随着图形硬件的发展,GPU通用计算GPG—
running
on
CPU.The experiments show-that the proposed hybrid acceleration method
a
can
significantlv
reduce the c。mputing time in
fluid time step and c。mplete rendering tasks m。re quickly.
(School of Computer,Wuhan University,Wuhan 430072,China)
Abstract:Fluid simulation based
tant
on
the Smoothed Particle
a
Hydrodynamics(SPH)plays
an
impor_
are
role
’v。f3;,N:三j 7,Jul.i01i。
基于CPU—GPU混合加速的SPH流体仿真方法
胡鹏飞,袁志勇,廖祥云,郑 奇,陈二虎
(武汉大学计算机学院,湖北武汉430072)
摘
要:基于光滑粒子流体力学SPH的流体仿真是虚拟现实技术的重要研究内容,但SPH流体仿真
需要大量的计算资源,采用一般计算方法难以实现流体仿真的实时性。流体仿真通常由物理计算、碰撞检 测和渲染等部分组成,借助GPU并行加速粒子的物理属性计算和碰撞过程使SPH方法的实时流体仿真 成为可能。为了满足流体仿真应用中的真实性和实时性需求,提出一种基于CPU GPU混合加速的SPH 流体仿真方法,流体计算部分采用GPU并行加速,流体渲染部分采用基于CPU的OpenMP加速。实验 结果表明,基于CPU GPU混合加速的SPH流体仿真方法与CPU--#.sk4日比,能显著地减少流体仿真单帧 计算时间且能更快速地完成渲染任务. 关键词:流体仿真;SPH;实时模拟;OpenMP;CPU—GPU混合加速 中图分类号:TP393.027 文献标志码:A
欧拉方法和基于粒子的拉格朗日方法两大类Ⅲ。 欧拉方法的坐标系是固定的,流体的速度、压力和 密度等属性保存在这些固定点中,一般用于离线应 用。而拉格朗日方法将流体视为流动的单元,用大 量离散的粒子逼近模拟流体的运动,每个粒子都保 有自身的相关物理属性,粒子问的相互作用通过光
%收稿日期:2013 07 15;修回日期:2013 11 20
Key words:fluid simulation;SPH;real time simulation;OpenMP;CPU GPU hybrid acceleration
体模拟通常采用物理模拟方法,可分为基于网格的
引言
自然场景的真实感流体场景模拟在数字娱乐 产业、军事、医学等领域中(如电影游戏特效、计算 机动画和虚拟手术)有着广泛的应用,带人机交互 功能的流体模拟还需是在线实时模拟。真实感流
萎麦摹暴哲桨誓鬻篓錾誓篝然萎蓄蛩0目7(,B61u2A72A276,61 K90F12,5。)VR
查妻蚕篓国家重点塞验拿开放课题基金资助项目(BuAA
University,8 Donghu
KF 13);国家盯。计划资助项目(2∞,cB7叩∞a);北航虚拟现实技
孕尊地址:430072麴北省武汉市武昌区东湖南路8号武汉大学计算机学院 Addre88:School of Computer,Wuhan Rd 万方数据
图1基于CPU GPU混合加速的SPH流体模拟框架
果。由于SPH模拟方法本身具有高度的并行性, 它非常适合用GPU进行加速计算。借助GPU的 高度并行性和可编程性,本文便能设计出在GPU 上执行的SPH流体模拟并行算法,从而实现大数 量级粒子的流体系统的逼真、实时仿真。
4.1.1
fY”㈨e一军巫譬型Vw(ri--r』,h)(3)
OpenMP;
l。(Yi)一∑m,w(n_,^)
(2)
Figure
Framework for SPH fluid simulation
Oh
based
CPU GPU hybrid acceleration
为使位于不同压强区的两个粒子相互压力相 等,采用双方粒子压强的算术平均值代替单个粒子 压力,得到:
A(r)一yA,m JW(r 々i p
J
hh)
(1)
』—J3
其中,A(r)代表密度、压力、粘度力等粒子的物理
万方数据
胡鹏飞等:基于CPU GPU混合加速的SPH流体仿真方法
1233
属性,r是n空问的任意一点,w是以h为作用半 径的对称的光滑核函数,J是离散粒子系统中迭代 所有的粒子质点,m,是粒子J的质量,A,是粒子 的某种属性,如粘稠力、密度等,p,是粒子J的密 度。 当使用密度值作为属性A,时,得到各流体粒 子的密度值为:
CN ISSN 1007 130X
43,.1.2—58/TP
计算机工程与科学
c。mputer Engineering&science
07
第36卷第7期2014年7月
——i=2●————————————————————————————————————一
文章编号:1007 130X(2014)07
1231
PU(General Purposed N
维斯托克斯N
Stokes)方程模拟流体的
粒子方法,该方法是用来模拟基于物理的流体运动 的一个常用的模型,但该方程计算量大。光滑粒子 流体动力学SPH(Smoothed
Particle Hydrody
namics)方法是基于粒子的流体模拟方法,运用 SPH方法能大大简化N S方程求解。尽管如此, 随着流体模拟的真实性和实时性要求越来越高,用 于模拟流体流动的粒子数量也越来越多,从而导致 计算量大大增大,仅在CPU上进行SPH方法求解 难以达到流体模拟的真实性和实时性要求。 随着图形硬件的发展,图形处理单元GPU
3 2
SPH流体建模
SPH方法将流场离散成一系列粒子,把连续
相关工作
Gingold R
A等‘31提出的SPH方法是一种常
的物理量用多个离散粒子的集合的插值来表示,离 散化形式为:
用于模拟流体流动的计算方法,最初主要用于解决 天体物理学中的流体质团无边界情况下的三维空 问任意流动的计算问题。Stam J_等‘43最早引入 SPH方法模拟气体和火焰效果。MOller M等‘51
15)…。。。…“”‘…“。…………”“∽批匝似础头搜
South,Wuchang District,Wuhan 430072,Hubei,P.R.China
1232
Computer
Engineering&Science计算机工程与科学2014,36(7)
滑核函数来实现。近年来,基于粒子的拉格朗日方 法得到了众多学者的青睐,取得了较好的研究进
(Graphic Processing
等口1提出了一种可同时用于单双向耦合的流固耦
Unit)不仅只负责图形渲染工
作,还能采用GPU完成一些通用计算工作。在处 理能力和存储器带宽上,GPU相对CPU有明显优 势,且基于粒子的流体模拟问题具有高度的数据平 行性和高强度计算需求,这类实时流体模拟问题非 常适合采用GPU加速策略解决。 近几年来,CPU的发展也从单核发展到多核, 多线程编程可在多个CPU核心间实现线程级并 行。基于SPH方法的流体模拟包括粒子物理量计 算及渲染等部分,所有部分都由GPU并行处理完 成还存在较多的困难,组合CPU—GPU的混合加速 流体模拟E匕传统的CPU或GPU计算更快且能简 化算法设计。 基于上述考虑,本文提出一种基于CPU—GPU 混合加速的SPH流体仿真方法。该混合加速方法 包括流体模拟计算和渲染部分:(1)在流体模拟计 算部分,采用GPU并行加速技术,并运用划分均 匀空问网格方法加速构建邻居粒子表,同时对 SPH各过程问的数据传输关联进行优化,以减少 数据传输带来的加速损失;(2)在流体渲染部分,采 用基于多核CPU的OpenMP加速技术对粒子采 用点、球体、透明液体等进行渲染处理。
对于单个粒子产生的压力乡,可以用理想气体 状态方程p。一K(肛--po)进行求解,fD0表示流体的 初始密度值,K是与流体温度有关的常数。 流体的粘性力通过公式(4)求出:
构建邻居粒子表
SPH流体的模拟是通过离散的粒子实现的, 离散粒子间的相互作用通过一个对称的、具有一定 作用半径的光滑核函数计算得到。粒子间的相互 作用具有一定作用半径,对粒子的属性进行更新 时,需遍历系统中的其他所有粒子,这会导致非常 低的查找效率。为此,Amada T等口妇提出构造邻 居粒子表的方法,采用该方法计算粒子物理量时, 可只查找邻居粒子来进行计算。其优点在于每个 迭代步,只需构建一次邻居粒子表,在粒子物理量 计算过程中,都是查找表中数据进行计算。但是, 采用这种方法构建邻居粒子表时,采用的方法仍是 遍历所有粒子,导致建表时间过长,影响模拟的实 时性。后来一些学者在原有邻居粒子算法基础上, 进行了CPU端的优化工作,如基于粒子对的邻居
doi:10.3969/j.issn.1007—130X.2014.07.004
Fluid simulation method based
on
CPU-GPU hybrid acceleration
HU Peng—fei,YUAN Zhi—yong,LIAO Xiang—yun,ZHENG Qi,CHEN Er-hu
to 01
in
the Virtual reality,but it requires
lot of computing resources.The general methods
on
dif—
c。n—
iicult
slsts
on
achieve the real—time requirement of fluid simulation based phYslca』computing,collision detection and rendering and
call
SPH.The simuiation of fluid
SO
on.The parallel computing based
GPU
speed up the computing and collision of particles and simulate the m。tion of fluid in real一 satisfy the realistic and real—time requirements,a novel fluid simulation method based
tlme・
on
In order to
CPU—GPU hybrid acceleration is proposed,which consists of computing and rendering.The comDu— tlng Part oI fluid simulation is accelerated by GPU,and the rendering part is accelerated bv OpenMP
GPU)的概念被提出,GPG—
PU使得许多算法能在GPU上并行实现。Bolz J 等[93在GPU上实现了稀疏矩阵的求解。More—
land
K等口叼实现了基于GPU的快速傅里叶变换。
同时,研究人员也提出了一些采用GPU加速实现 流体流动模拟的算法。Amada T等口q用GPU实 现了对SPH流体的模拟,但该算法中,邻居粒子表 的构建是在CPU端进行的。Harada T等[121提出 了在GPU上构造均匀空间网格来覆盖整个离散 粒子系统的计算区域,从而很大程度上加快了邻居 粒子表的构建。 另外,多核处理器已成为未来处理器技术的发 展方向,研究人员开始利用多核CPU来进行流体 模拟。Ihmsen M等[1朝提出一种基于多核CPU的 并行计算方法对SPH粒子状态属性进行计算,大 大提高了粒子的处理速度。多核多线程开发工具 OpenMP[1妇是一种共享存储并行计算机系统上的 应用程序接口,它能通过与标准Fortran、C和C+ +结合进行工作,能有效支持同步共享变量以及负 载的合理分配等任务且使用便捷。
展。
Foster
Baidu Nhomakorabea
利用SPH方法模拟流体的运动,首次将SPH方法 应用于水面的绘制,提出了用一个光滑核函数来计 算粒子问的密度、粘度、速度等物理量。之后的相
N和Metaxas D[21介绍了一种运用纳
S(Navier
关研究大多是基于MOiler M的基础工作,并且相 关改进主要集中于计算的简化以及稳定性的提高 方面邸]。近几年的工作大多围绕不同模态的多相 耦合展开,Schechter H等口1提出在流体、固体周 围设置虚粒子用于解决流固耦合问题。Akinci 合边界处理方法。 SPH方法需要对用于模拟流体流动的离散粒 子状态进行计算,需要大量的计算资源,如果仅依 靠CPU处理计算工作,对于大数量级的粒子模 拟,现有的CPU还不能完成逼真、实时的流体运 动模拟。 随着图形硬件的发展,GPU通用计算GPG—
running
on
CPU.The experiments show-that the proposed hybrid acceleration method
a
can
significantlv
reduce the c。mputing time in
fluid time step and c。mplete rendering tasks m。re quickly.
(School of Computer,Wuhan University,Wuhan 430072,China)
Abstract:Fluid simulation based
tant
on
the Smoothed Particle
a
Hydrodynamics(SPH)plays
an
impor_
are
role
’v。f3;,N:三j 7,Jul.i01i。
基于CPU—GPU混合加速的SPH流体仿真方法
胡鹏飞,袁志勇,廖祥云,郑 奇,陈二虎
(武汉大学计算机学院,湖北武汉430072)
摘
要:基于光滑粒子流体力学SPH的流体仿真是虚拟现实技术的重要研究内容,但SPH流体仿真
需要大量的计算资源,采用一般计算方法难以实现流体仿真的实时性。流体仿真通常由物理计算、碰撞检 测和渲染等部分组成,借助GPU并行加速粒子的物理属性计算和碰撞过程使SPH方法的实时流体仿真 成为可能。为了满足流体仿真应用中的真实性和实时性需求,提出一种基于CPU GPU混合加速的SPH 流体仿真方法,流体计算部分采用GPU并行加速,流体渲染部分采用基于CPU的OpenMP加速。实验 结果表明,基于CPU GPU混合加速的SPH流体仿真方法与CPU--#.sk4日比,能显著地减少流体仿真单帧 计算时间且能更快速地完成渲染任务. 关键词:流体仿真;SPH;实时模拟;OpenMP;CPU—GPU混合加速 中图分类号:TP393.027 文献标志码:A
欧拉方法和基于粒子的拉格朗日方法两大类Ⅲ。 欧拉方法的坐标系是固定的,流体的速度、压力和 密度等属性保存在这些固定点中,一般用于离线应 用。而拉格朗日方法将流体视为流动的单元,用大 量离散的粒子逼近模拟流体的运动,每个粒子都保 有自身的相关物理属性,粒子问的相互作用通过光
%收稿日期:2013 07 15;修回日期:2013 11 20
Key words:fluid simulation;SPH;real time simulation;OpenMP;CPU GPU hybrid acceleration
体模拟通常采用物理模拟方法,可分为基于网格的
引言
自然场景的真实感流体场景模拟在数字娱乐 产业、军事、医学等领域中(如电影游戏特效、计算 机动画和虚拟手术)有着广泛的应用,带人机交互 功能的流体模拟还需是在线实时模拟。真实感流
萎麦摹暴哲桨誓鬻篓錾誓篝然萎蓄蛩0目7(,B61u2A72A276,61 K90F12,5。)VR
查妻蚕篓国家重点塞验拿开放课题基金资助项目(BuAA
University,8 Donghu
KF 13);国家盯。计划资助项目(2∞,cB7叩∞a);北航虚拟现实技
孕尊地址:430072麴北省武汉市武昌区东湖南路8号武汉大学计算机学院 Addre88:School of Computer,Wuhan Rd 万方数据
图1基于CPU GPU混合加速的SPH流体模拟框架
果。由于SPH模拟方法本身具有高度的并行性, 它非常适合用GPU进行加速计算。借助GPU的 高度并行性和可编程性,本文便能设计出在GPU 上执行的SPH流体模拟并行算法,从而实现大数 量级粒子的流体系统的逼真、实时仿真。
4.1.1
fY”㈨e一军巫譬型Vw(ri--r』,h)(3)