GPU通用计算平台上的SPH流体模拟
GPU在基于SPH方法的混合流模拟中的应用的开题报告
GPU在基于SPH方法的混合流模拟中的应用的开题报告开题报告:一、选题背景混合流模拟是一种重要的物理模型,其应用范围十分广泛,包括河流泥沙运动、海岸线演变、水下爆炸等领域。
而基于SPH(Smoothed Particle Hydrodynamics)方法的混合流模拟则是其中的一种常用方法,其原理是将流体看做成了大量离散的质点,通过计算周围质点对它们的影响,求解流体的运动状态。
然而,随着计算机科学领域的迅猛发展,SPH方法在实际应用时遇到了许多挑战。
其中最重要的是计算复杂度问题,系统需要计算大量的粒子间相互作用,而且还要考虑到不同时间点间粒子位置、速度等的变化,这对于单纯使用CPU进行运算来说是十分困难的。
因此,我们选定了“GPU在基于SPH方法的混合流模拟中的应用”作为我们的研究课题,希望探索如何利用GPU进行高效的混合流模拟计算。
二、研究目标本项目的研究目标包括:1. 对GPU在现有SPH混合流模拟算法中的应用进行探讨。
2. 构建基于CUDA的GPU加速SPH混合流模拟计算系统。
3. 对比CPU和GPU的混合流模拟计算速度和精度,从而得出结论,验证GPU加速混合流模拟的可行性。
三、研究内容本项目的研究内容主要包括以下几个方面:1. 对现有的基于SPH的混合流模拟算法进行研究分析,找出其中不足之处。
2. 了解并掌握CUDA程序设计原理,寻找设计GPU加速算法的方法。
3. 设计并实现基于CUDA的SPH混合流模拟算法。
4. 编写模拟系统程序,选择适当的测试数据进行模拟计算。
5. 对比CPU与GPU的模拟速度和精度,优化算法,提高计算效率。
6. 对研究结果进行总结并分析,得出结论并展望GPU在混合流模拟中的应用前景。
四、研究意义本项目的研究意义在于:1. 探索使用GPU加速基于SPH方法的混合流模拟计算,提升计算效率和精度。
2. 提高混合流模拟的实时性和可视化效果,为该领域的应用提供技术支持。
3. 推动GPU并行计算在流体力学领域的应用,促进并行计算领域的发展。
SPH真实感流体交互模拟的改进算法
SPH真实感流体交互模拟的改进算法程志宇;徐国庆;张岚斌;许犇【摘要】针对目前流体仿真中存在的模拟效率低及模拟交互的真实感不足等问题,提出一种基于光滑粒子流体动力学的流体模拟改进算法.首先,采用光滑粒子流体动力学方法进行粒子系统建模,通过矫正压力及速度场保证流体求解方程的精确性和稳定性;然后通过简化流体计算模型,完成流体表面建模,提高流体表面渲染速度;最后使用硬件加速算法实现流体模拟的快速渲染,提高流体的真实感和交互的实时性.实验结果表明,该算法能够明显提升流体渲染的真实感,减小计算复杂性.大规模粒子实时模拟帧率达到20帧/s,实现了较为真实的交互应用.【期刊名称】《武汉工程大学学报》【年(卷),期】2019(041)003【总页数】4页(P303-306)【关键词】流体模拟;光滑粒子流体动力学方法;硬件加速【作者】程志宇;徐国庆;张岚斌;许犇【作者单位】武汉工程大学计算机科学与工程学院,湖北武汉 430205;智能机器人湖北省重点实验室(武汉工程大学),湖北武汉 430205;武汉工程大学计算机科学与工程学院,湖北武汉 430205;智能机器人湖北省重点实验室(武汉工程大学),湖北武汉 430205;武汉工程大学计算机科学与工程学院,湖北武汉 430205;智能机器人湖北省重点实验室(武汉工程大学),湖北武汉 430205;武汉工程大学计算机科学与工程学院,湖北武汉 430205;智能机器人湖北省重点实验室(武汉工程大学),湖北武汉430205【正文语种】中文【中图分类】TP391真实感流体模拟是计算机图像学领域中的研究热点,不管是在电视特效和广告、电子游戏亦或是军用作战平台仿真、虚拟医学等领域中都有着广泛的应用。
基于物理的流体模拟的计算模型应该包括流体每一时刻的运动方向、受力情况以及在运动过程中流体间的相互作用力等,同时为了更好的提高真实感要增强细节模拟[1-2],展现实时流动的视觉效果。
现阶段,对于流体模拟主要采用欧拉网格法和拉格朗日粒子法两种方法来求解计算流体动力学中的控制方程。
一个SPH流体实时模拟的全GPU实现框架
关键词
中图分 类号
流体模拟
G G U 实 时 S H 并行 空间划分 PP P
文献标 识码 A
几何 着色器
Ma hn u e r i c bs c g
T 3 17 PM ENTATI I ON FRAM EW ORK OF PH S FLUI D REAL. M E I ULATI TI SM oN
G oQ ue T n i i LuS ii L G iig u il a gY z 。 i hqu i h i uqn
(colfC m ue Si c n n ier g ot hn nvrt f Tcn l y u nzo 10 6,u n dn C ia Sh o o o p t c ne dE gnen ,SuhC iaU i syo ehoo ,G agh u50 0 G ag og, hn ) r e a i ei g ( colfSfw r,SuhC iaU iri Tcnl y u nzo 1 06, un dn , hn ) Sho otae ot hn n e t o ehoo ,G a gh u5 0 0 G a g og C i o v syf g a
r n e i g ot a e e a e a lt f r swi e a d t P c e e ain ami g a h lo i ms o a h c mp n n f h u d s lt n e d r ,s tt r r k t r g r o G U a c l r t i n t e ag r h fe c o o e t ef i i ai . n h h o o wo h o t t ot l mu o T i p p r p o o e e f GP b s d fa w r o P f i i l t n a c lr t n O h a i o mp o i g s oh d p r ce h s a e r p s s a s t o U— a e r me o k f r S H u d smu ai c e ea i . n t e b s f e lyn mo te - a t l l o o s i h d o y a c o ov Na irS o e e u t n w s e d p g e t t e a il c l so d tc in wi G U— a e a all p t l y r d n mis t s l e ve — tk s q ai , e p e u al h p r ce ol in ee t t o r y t i o h P b s d p r e s ai l a
SPH方法并行化解决方案
SPH方法并行化解决方案简介:SPH(Smoothed Particle Hydrodynamics)方法是一种计算流体力学(CFD)中常用的数值模拟方法,用于模拟流体的运动和相互作用。
然而,由于SPH方法计算量大,运行时间较长,因此需要采用并行化技术来提高计算效率。
本文将介绍一种SPH方法的并行化解决方案,以提高计算速度和准确性。
一、并行化原理SPH方法的核心是将流体分解为许多小粒子,每个粒子都有一定的质量和属性。
在传统的串行计算中,每个粒子都需要与其他粒子进行相互作用的计算,这导致了计算量的急剧增加。
通过并行化,可以将这些计算任务分配给多个处理器或计算节点,从而加快计算速度。
二、并行化策略1. 粒子划分:将流体领域划分为多个小区域,并将每个区域分配给不同的处理器或计算节点。
可以采用空间划分或哈希划分等方法,确保每个处理器或计算节点负责的粒子数量相对均衡。
2. 数据通信:由于每个处理器或计算节点只负责部分粒子的计算,需要进行粒子间的数据通信。
可以采用消息传递接口(MPI)或共享内存等方式,将计算结果传递给其他处理器或计算节点。
3. 并行计算:每个处理器或计算节点独立计算负责的粒子的相互作用,可以利用多线程或向量化指令等技术,提高计算效率。
4. 结果合并:将每个处理器或计算节点计算得到的结果进行合并,得到最终的模拟结果。
可以采用求和、平均或插值等方法,确保结果的准确性和一致性。
三、并行化实现1. 并行化框架:选择合适的并行化框架,如OpenMP、MPI或CUDA等。
根据计算资源的情况和需求,选择最适合的框架进行并行化实现。
2. 粒子划分算法:根据流体领域的特点和计算资源的分布,设计合适的粒子划分算法。
可以考虑空间划分、哈希划分或负载均衡等因素,确保并行计算的效率和准确性。
3. 数据通信接口:根据选择的并行化框架,使用相应的数据通信接口进行粒子间的数据传递。
可以使用MPI库进行消息传递,或使用共享内存进行数据共享。
基于SPH方法的流体动力学模拟技术研究
基于SPH方法的流体动力学模拟技术研究流体动力学模拟技术是一种非常重要的数值计算方法,能够模拟和预测流体的流动和运动状态。
尤其在工业、航空、航海等领域,流体动力学模拟技术被广泛应用。
其中,SPH方法作为流体动力学模拟技术中的一种重要方法,已经成为研究的热点之一。
本文将围绕基于SPH方法的流体动力学模拟技术开展探讨。
一、SPH方法简介SPH方法是一种基于粒子的流体动力学模拟技术。
SPH全称是Smoothed Particle Hydrodynamics,它最初是由英国的Lucy和Gingold于1977年开发提出的。
在SPH方法中,流体被简化成一系列离散的粒子,这些粒子相互之间通过一定的算法来计算它们之间的相互作用力。
SPH方法主要涉及到流体的质量、速度和压力等物理量。
通过对粒子的轨迹进行计算,可以得到流体的运动和变形状态,从而模拟流体的流动和变化过程。
SPH方法具有易于实现、不受网格限制等优点,因此,在流体动力学的研究中得到了广泛的应用。
不过,SPH方法也存在着一些问题,比如模拟的粒子数量对计算精度存在影响等。
二、基于SPH方法的流体动力学模拟技术研究应用2.1 流动现象模拟在基于SPH方法的流体动力学模拟技术中,研究人员常常使用它来模拟流动现象。
例如,研究气泡在水中的运动状态、水流对船只的影响等。
通过模拟流体的流动状态,可以预测物质的运动路径和变形状态,并为实际工程的设计提供依据。
2.2 流体力学问题求解基于SPH方法的流体动力学模拟技术研究还可以解决一些流体力学问题。
例如,在机械工程、电子工程中,常常存在一些导热不良或液冷不良等问题,基于SPH方法的流体动力学模拟技术可以用来解决这些问题。
2.3 环境模拟除了工业领域,基于SPH方法的流体动力学模拟技术在环境模拟中也有一定应用。
例如,在固体废物处理中,常常需要将污染物转移到空气或水等介质中,基于SPH方法的流体动力学模拟技术可以模拟不同介质中的物质转移状态,进一步研究污染物的传播与转移。
基于GPU加速的计算流体力学仿真研究
基于GPU加速的计算流体力学仿真研究一、前言近年来,GPU已经成为了运行高性能计算科学应用的选择。
在许多领域,GPU加速已经成为大规模计算的必要手段。
因此,将流体动力学中的计算量转移到GPU上进行加速,不仅能够加快仿真过程,还能够优化计算效率,因此GPU加速在流体力学仿真方面已经得到了广泛的研究和应用。
二、基本概念流体力学是描述液、气的运动和相互作用的科学。
它是研究流体现象、流体力学规律及其应用的分支学科。
而计算流体力学(CFD)则是用计算机处理流体流动的数学模型,通过数值模拟和计算方法,对流体冲击、转换和输运进行分析和计算。
GPU(图形处理器)是一种专门用于处理图像和图形等计算机应用的处理器,它专门处理计算并行性高的计算量,具有高效能、并行性强等特点。
在计算力方面,GPU已经发展到可以支持低精度的浮点数,同时对单精度和双精度浮点数也做了很多的优化。
三、GPU加速的实现在流体力学仿真方面,采用隐式求解方法(模拟求解变化量)的计算速度要比显式求解方法(取巧式求解)快很多。
在基于GPU的计算流体力学仿真研究中,大多数运算是基于此类方法进行进行的。
在通常的计算模拟中,我们首先将需要模拟的物理过程进行离散化,然后通过数值模拟的方法,将这个过程从时间上划分成小步骤,也就是求解一般常微分方程(general ordinary differential equations,简称ODE)。
在每步中,需要对一些向量(如速度矢量和压力梯度)进行操作。
由于这些向量具有很好的并行性,所以可以采用GPU进行调用。
在实现流体力学仿真中,需要采用一些特殊的库来完成:CUDA库和OpenCL库。
这两个库都包含在最新的GPU驱动程序中,在科学计算方面它们都具有很大意义。
四、并行化处理在批量处理的时候,GPU的主要作用是将计算过程分成多个小步骤(step),这些小步骤称之为kernel,而这个过程称为并行化逻辑。
假设我们有一项需要完成的任务是求解一定区域内的速度向量的距离。
基于CPU-GPU混合加速的SPH流体仿真方法
OpenMP;
l。(Yi)一∑m,w(n_,^)
(2)
Figure
Framework for SPH fluid simulation
Oh
based
CPU GPU hybrid acceleration
为使位于不同压强区的两个粒子相互压力相 等,采用双方粒子压强的算术平均值代替单个粒子 压力,得到:
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
展。
Foster
利用SPH方法模拟流体的运动,首次将SPH方法 应用于水面的绘制,提出了用一个光滑核函数来计 算粒子问的密度、粘度、速度等物理量。之后的相
N和Metaxas D[21介绍了一种运用纳
S(Navier
关研究大多是基于MOiler M的基础工作,并且相 关改进主要集中于计算的简化以及稳定性的提高 方面邸]。近几年的工作大多围绕不同模态的多相 耦合展开,Schechter H等口1提出在流体、固体周 围设置虚粒子用于解决流固耦合问题。Akinci 合边界处理方法。 SPH方法需要对用于模拟流体流动的离散粒 子状态进行计算,需要大量的计算资源,如果仅依 靠CPU处理计算工作,对于大数量级的粒子模 拟,现有的CPU还不能完成逼真、实时的流体运 动模拟。 随着图形硬件的发展,GPU通用计算GPG—
GPU加速的SPH方法在溢洪道水流模拟中的应用
GPU加速的SPH方法在溢洪道水流模拟中的应用打开文本图片集摘要:基于拉格朗日描述的光滑粒子动力学方法(SPH)擅长于处理自由面剧烈变化的水流现象,十分适合水利工程中泄洪等问题的数值模拟。
然而,SPH方法通常采用均匀分布的粒子对流体计算域进行空间离散,对于工程问题而言需要的粒子数量较多、计算量大。
为了突破SPH方法在实际大规模计算中的适用范围,采用C++和CUDA混合编程的技术,借助GPU实现了对SPH方法的并行加速。
通过WES三圆弧段组成的光滑溢洪道过流问题,验证了GPU加速的SPH方法的计算精度和可靠性,计算效率相对原始的SPH仿真过程提高了61.8倍。
最后,将GPU加速的SPH方法应用于水利工程的溢洪道泄流问题,分别模拟了光滑溢洪道和台阶式溢洪道流动特性,通过自由面的演化过程及泄流沿程截面上的速度分布状态,对比分析了台阶对泄流现象的影响。
关键词:光滑粒子动力学方法;GPU加速;台阶式溢洪道;消能率中图法分类号:TV512文献标志码:A1研究背景台阶式溢洪道是将传统光滑溢洪道的泄流槽做成台阶式,水流在流经台阶时与每级台阶均产生剧烈的碰撞,形成水流的旋滚及内部的紊动剪切作用,促使水流表面破碎,进而能显著增加溢洪道的泄流消能率,有助于减小下游消力池的规模[1-2]。
所以,目前台阶式溢洪道在国内外许多工程上得以应用[3-5]。
然而,水流与台阶之间的剧烈作用将对溢洪道的安全提出挑战,有必要对台阶式溢洪道的流动现象及机理进行系统研究,以确保溢洪设施的安全。
尽管世界各国水利工程技术人员对此流动问题开展了大量的试验研究[6],但受限于尺度效应、测量手段、经费等原因,难以获取流动机理分析所必备的详细数据。
相较之下,采用数值模拟的手段对该泄流问题进行研究能够得到丰富的可视化结果,故而深受研究人员的青睐[7-8]。
传统的SPH方法是通过粒子的运动来表示流动现象,为了精确模拟强非线性变化的自由面,需要采用大量的粒子对流体空间进行离散,同时需要采用较小的计算时间步长,故而对计算资源的消耗大,计算效率通常不高。
基于GPU加速的计算流体力学模拟
基于GPU加速的计算流体力学模拟计算流体力学是一门研究物质在流动状态时的数值模拟的学科。
它在工业、军事、生物医学和天气预报等领域有广泛的应用。
近年来,随着计算设备性能的不断提高,基于GPU加速的计算流体力学模拟成为了研究热点。
GPU(Graphics Processing Unit)是计算机中的一个重要部件,它是專門用來加速圖形渲染的處理器。
由于它在图形计算方面的高性能,计算机科学家开始将其应用于其他领域的加速计算。
在计算流体力学中,GPU可用来加速离散化方程的求解过程,这极大地提高了计算效率。
使用GPU加速计算流体力学模拟的方法可以大致分为以下三步:首先,将流体体系的运动方程使用离散化方法转化为一个有限元方程,然后通过GPU进行求解。
这个过程中,需要将空间离散化,使得流体体系可以用一个网格结构进行表示。
其次,需要使用并行计算技术,将计算任务分割成多个小任务,让不同的处理器在各自的内存空间里运行。
这样,处理器之间就不会相互干扰,而且每个计算核心都可以处理独立的任务,提高了计算并行度和效率。
最后,需要使用一些高效的GPU优化算法和数据结构,如GPU全局内存存取、GPU硬件线程调度等,以提高计算性能和效率。
例如,使用CUDA(Compute Unified Device Architecture)技术可以提高GPU计算的并行度,使得GPU可以处理更多的并行计算任务。
基于GPU加速的计算流体力学模拟已经被广泛应用于风力发电、火箭航空、水利工程等领域。
由于GPU的高效率和强大的处理能力,它可以快速地模拟各种实际场景下的流体运动和变化,满足实际需求。
在未来,基于GPU加速的计算流体力学模拟仍将成为计算流体力学领域的研究热点。
随着GPU技术不断发展和提高,计算性能将会不断提高,加速计算流体力学模拟的效率和精度。
同时,GPU可编程性的发展也将会为流体力学研究提供更大的灵活性和可扩展性,从而更好地满足计算流体力学的实际需求。
SPH方法
SPH方法SPH(Smoothed Particle Hydrodynamics)方法是一种基于粒子的流体动力学数值模拟方法,它可以有效地模拟流体的运动和相互作用。
SPH方法最初是由Gingold和Monaghan在1977年提出的,它在模拟自由表面流动、多相流动、冲击波等方面具有很好的适用性。
在工程领域和科学研究中,SPH方法已经得到了广泛的应用,并且在模拟复杂流体问题上取得了很多成功的实例。
SPH方法的核心思想是将流体连续介质看作由大量的质点(粒子)组成,每个粒子都带有一定的物理量(如质量、密度、速度等)。
通过对这些粒子进行相互作用的计算,可以得到整个流体系统的运动状态。
相比传统的有限元方法和有限体积方法,SPH方法更适用于处理自由表面流动和大变形流体问题,因为它不需要网格,可以自适应地适应流体的形变和运动。
在SPH方法中,流体的运动状态由每个粒子的物理量来描述,通过对每个粒子的运动方程进行离散化和数值求解,可以得到整个流体系统的运动状态。
在计算过程中,需要考虑粒子之间的相互作用力,包括压力力、粘性力、重力等。
这些相互作用力可以通过核函数来进行离散化,并且可以通过邻近粒子的加权平均来进行计算,从而得到每个粒子受到的合力。
SPH方法的一个重要特点是其自适应性,因为它不需要网格,所以可以很好地处理自由表面流动和大变形流体问题。
在模拟自由表面流动时,只需要在自由表面上生成一些表面粒子,并且通过一定的边界条件来控制这些表面粒子的运动状态,就可以很好地模拟出自由表面的运动。
而在模拟大变形流体问题时,由于SPH方法不需要进行网格重构,所以可以很好地处理流体的大变形和破碎等现象。
除了在流体动力学模拟中的应用外,SPH方法还可以很好地模拟其他物理现象,如固体动力学、气体动力学等。
在固体动力学中,SPH方法可以很好地模拟材料的变形和破碎现象,因为它不需要网格,可以很好地处理材料的大变形和破碎。
在气体动力学中,SPH方法可以很好地模拟气体的流动和相互作用,因为它可以很好地处理气体的自由表面和大变形现象。
基于GPU计算架构的流体仿真研究
基于GPU计算架构的流体仿真研究近年来,随着GPU(图形处理单元)计算能力的不断提高,越来越多的科学计算和仿真应用开始采用GPU计算架构来加速计算过程。
其中,流体仿真作为计算密集型领域的重要一环,也在逐步向GPU计算架构转移。
一、GPU计算架构的优势相比于传统CPU(中央处理单元)计算架构,在流体仿真领域采用GPU计算架构具有以下优势:1.并行计算能力:GPU中拥有大量的CUDA核心(Compute Unified Device Architecture,统一计算架构),可以实现数百到数千个线程同时执行,从而充分发挥GPU的并行计算能力。
2.浮点运算性能:流体仿真需要进行大量的浮点运算,GPU的浮点运算性能远高于CPU,可以大大加快仿真计算的速度。
3.高带宽访问:GPU的内存访问速度远高于CPU,可以满足流体仿真过程中对大量数据的高速访问需求。
二、GPU计算架构在流体仿真中的应用1.基于拉格朗日方法的流体仿真:拉格朗日方法是一种基于粒子的流体仿真方法,需要模拟每个粒子的运动轨迹。
采用GPU计算架构可以大大提高计算效率,加快仿真速度。
2.基于欧拉方法的流体仿真:欧拉方法是一种流体网格化方法,可以将流体分成小块进行仿真计算。
GPU的并行计算能力可以实现对每个小块的同时计算,大大加快仿真速度。
3.基于混合方法的流体仿真:混合方法将拉格朗日方法和欧拉方法结合起来,结合二者的优点,可以在流体仿真过程中更加高效地处理各种物理现象。
GPU计算架构提供了并行计算和高带宽访问的优势,可以更好地支持混合方法的流体仿真。
三、GPU计算架构在流体仿真研究中的挑战虽然GPU计算架构在流体仿真中具有许多优势,但也会面临一些挑战:1.数据传输瓶颈:GPU计算架构是基于CPU-GPU交互的,数据传输会成为计算的瓶颈,需要使用更加高效的数据传输方式来加快计算进程。
2.算法改进:GPU计算架构对算法的要求较高,需要针对GPU特性进行算法优化和改进,才能真正发挥GPU的性能优势。
GPU通用计算平台上的SPH流体模拟
GPU通用计算平台上的SPH流体模拟Chapter 1: Introduction- Background: Introduction to the field of fluid dynamics and the need for numerical simulations in this field- Problem Statement: The limitations of traditional CPU-based simulation methods and the need for GPU-based solutions- Objectives: The purpose of this study and the specific objectives to be achieved- Research Questions: The key questions addressed in this study - Scope and Limitations: The boundaries of this study and the restrictions on what can be achievedChapter 2: Literature Review- Overview of the existing literature on fluid dynamics simulations using GPU computing- Summary of the computational methods used in SPH fluid simulations- Discussion of the strengths and limitations of current SPH fluid simulators- Review of GPU-specific implementations and techniques used in SPH simulations- Evaluation of the available software and tools for developing SPH fluid simulation on a GPU platformChapter 3: Methodology- Description of the software environment used in our study (e.g. programming language, libraries, simulation framework)- Explanations of the key concepts in GPU computing and parallel processing- The mathematical formulas and numerical techniques used in ourSPH fluid simulations- Simulating fluid dynamics with CUDA and OpenCL frameworks - Optimizations for performance and accuracy in SPH fluid simulations on a GPU platformChapter 4: Results and Analysis- Presentation of the simulation results- Discussion and analysis of the results obtained in comparisonwith previous studies- Validation of the model using experimental data and comparison with analytical solutions- Evaluation of the performance and scalability of the implementation on a GPU platformChapter 5: Conclusion and Future Work- Summary of the major findings of this study- Conclusions drawn from the results and implications of the study for future work in SPH simulation- Limitations and challenges of the current implementation and suggestions for further optimization- Future research directions in the area of SPH fluid simulation ona GPU platform.第一章节引言:流体动力学数值模拟方法在空气动力学、水动力学、生物流体力学以及化学工程等领域中均扮演着极为重要的角色。
基于CPU-GPU混合加速的SPH流体仿真方法
基于CPU-GPU混合加速的SPH流体仿真方法胡鹏飞;袁志勇;廖祥云;郑奇;陈二虎【期刊名称】《计算机工程与科学》【年(卷),期】2014(36)7【摘要】基于光滑粒子流体力学SPH的流体仿真是虚拟现实技术的重要研究内容,但SPH流体仿真需要大量的计算资源,采用一般计算方法难以实现流体仿真的实时性.流体仿真通常由物理计算、碰撞检测和渲染等部分组成,借助GPU并行加速粒子的物理属性计算和碰撞过程使SPH方法的实时流体仿真成为可能.为了满足流体仿真应用中的真实性和实时性需求,提出一种基于CPU GPU混合加速的SPH流体仿真方法,流体计算部分采用GPU并行加速,流体渲染部分采用基于CPU的OpenMP加速.实验结果表明,基于CPU-GPU混合加速的SPH流体仿真方法与CPU实现相比,能显著地减少流体仿真单帧计算时间且能更快速地完成渲染任务.【总页数】7页(P1231-1237)【作者】胡鹏飞;袁志勇;廖祥云;郑奇;陈二虎【作者单位】武汉大学计算机学院,湖北武汉430072;武汉大学计算机学院,湖北武汉430072;武汉大学计算机学院,湖北武汉430072;武汉大学计算机学院,湖北武汉430072;武汉大学计算机学院,湖北武汉430072【正文语种】中文【中图分类】TP393.02【相关文献】1.一种基于CPU-GPU异构计算的混合编程模型 [J], 王伟;郭绍忠;王磊;冯颖2.基于 CPU-GPU 混合计算平台的 RNA 二级结构预测算法并行化研究 [J], 夏飞;朱强华;金国庆3.混合 CPU-GPU加速矩阵的 Hessenberg约化 [J], 沈聪;曹婷;宋金文;高火涛4.一种基于CPU-GPU混合系统的并行同态加密算法 [J], 郑志蓉5.基于CPU-GPU异构混合编程的遥感数据时空融合 [J], 陈凯; 曹云刚; 杨秀春; 潘梦; 张敏因版权原因,仅展示原文概要,查看原文内容请购买。
SPH方法并行化解决方案
SPH方法并行化解决方案SPH(Smoothed Particle Hydrodynamics)方法是一种用于模拟流体流动行为的计算方法,该方法通过将流体划分为许多小粒子,并对其进行数值计算来模拟流体的运动。
然而,由于SPH方法的计算量较大,常常需要长时间才能完成计算,因此并行化是解决该问题的一个重要方案。
首先,可以通过将流体域分成多个子域,并在每个子域上进行并行计算的方式实现SPH方法的并行化。
每个子域中的粒子可以使用不同的处理器进行计算,并在计算结束后将计算结果进行合并。
这种方式可以将原本串行计算的时间复杂度从O(n^2)降低到O(n)。
其次,可以通过使用多线程技术来实现SPH方法的并行化。
在SPH方法中,每个粒子的计算过程是相互独立的,因此可以将计算任务划分为多个线程,并在每个线程上独立进行计算。
这种方式可以利用计算机的多核心资源,提高计算效率。
此外,还可以使用GPU(图形处理器)来加速SPH方法的计算。
GPU 具有较强的并行计算能力,可以同时计算大量的任务。
通过将SPH方法的计算任务转移到GPU上,可以显著提高计算效率。
同时,由于GPU的并行处理能力较强,还可以将多个GPU进行并行计算,进一步提高计算效率。
在实现SPH方法的并行化时,还需要考虑一些问题。
首先,流体粒子之间的相互作用是SPH方法的核心,因此在进行并行计算时需要保证粒子之间的相互作用仍然能够得到正确的计算。
其次,由于并行计算可能会引入一些并行化误差,因此需要对并行计算的结果进行一定的修正,以保证计算结果的准确性。
最后,在进行并行计算时,还需要考虑数据的通信和同步问题,以确保不同计算单元之间的数据能够正确传递和同步。
总的来说,SPH方法的并行化可以通过将流体域划分为多个子域进行并行计算,使用多线程技术或GPU进行并行计算等方式来实现。
通过并行化,可以显著提高SPH方法的计算效率,加速流体模拟计算的速度。
GPU通用计算平台上的SPH流体模拟
GPU通用计算平台上的SPH流体模拟温婵娟;欧嘉蔚;贾金原【期刊名称】《计算机辅助设计与图形学学报》【年(卷),期】2010(022)003【摘要】针对流体模拟需要大量计算资源从而很难达到实时模拟的问题,提出一种完全在GPU上实现的基于平滑粒子流体动力学的流体模拟方法.首先通过在GPU 上构造基于哈希函数的空间均匀网格来实现任意大小场景的快速邻近粒子查找,并在GPU上并行求解SPH流体方程来实现流体模拟;渲染流体时,通过在顶点着色器中进行纹理采样,利用粒子坐标缓存数据直接更新流体粒子系统的顶点缓存,从而避免了CPU-GPU之间的数据传输,充分利用了GPU的并行性.实验对比表明,与纯CPU实现以及CPU和GPU混合实现的模拟结果相比,采用该方法能显著地减少单个时间片的计算时间,大幅度提高流体模拟和渲染的整体性能.【总页数】6页(P406-411)【作者】温婵娟;欧嘉蔚;贾金原【作者单位】同济大学软件学院图形图像实验中心,上海,201804;同济大学软件学院图形图像实验中心,上海,201804;同济大学软件学院图形图像实验中心,上海,201804【正文语种】中文【中图分类】TP391.9【相关文献】1.基于GPU通用计算平台的乐谱自动识别系统设计 [J], 谢晨伟;陆天翼;汤勇明2.在GPU上实现基于高斯映射的通用刀具扫描体建模 [J], 黎柏春;杨建宇;于天彪;王宛山3.GPU通用计算平台上中心差分格式显式有限元并行计算 [J], 蔡勇;李光耀;王琥4.基于虚拟化环境的多GPU并行通用计算平台研究 [J], 徐恒;吴俊敏;杨志刚;尹燕5.基于GPU的面向SPH流体模拟的邻居查找算法 [J], 赵相坤;李凤霞;战守义因版权原因,仅展示原文概要,查看原文内容请购买。
一个SPH流体实时模拟的全GPU实现框架
一个SPH流体实时模拟的全GPU实现框架郭秋雷;唐逸之;刘诗秋;李桂清【期刊名称】《计算机应用与软件》【年(卷),期】2011(028)011【摘要】How to implement timely the high realistic imitation of large-scale fluid simulation is an important element in computer graphics research. Fluid simulation consists of quite a few components including physical calculation, collision detection, surface reconstruction and rendering, so that there are a lot of works with regard to GPU acceleration aiming at the algorithms of each component of the fluid simulation. This paper proposes a set of GPU-based framework for SPH fluid simulation acceleration. On the basis of employing smoothed-particle hydrodynamics to solve Navier-Stokes equation, we speed up greatly the particle collision detection with GPU-based parallel spatial subdivision. Meanwhile, we design a fluid surface information reconstruction algorithm which uses the geometry shader, and the index-based optimisation is further carried out, which makes the reconstruction process of fluid surface avoid from traversing those areas do not contain surfaces. Experimental results show that the method in this paper can simulate timely the fluid scene with perfect reality.%怎样实时地进行高度逼真的大规模流体模拟是图形学要研究的一个重要内容.流体的模拟由物理计算、碰撞检测、表面重构和渲染几个部分组成,因此有大量工作针对流体模拟中的各个部分算法进行GPU加速.提出一整套基于GPU的SPH流体模拟加速框架.在利用平滑粒子动力学(SPH)求解Navier-Stokes 方程的基础上,借助基于GPU的空间划分PSS( Parallel Spatial Subdivision)来大幅度提升粒子碰撞的检测速度.同时,设计一种基于几何着色器(Geometry Shader)的流体表面信息的重建算法,并进一步地实现基于索引的优化,使得在流体表面重建过程无须遍历不包含表面的区域.实验结果表明,该方法能实时模拟出具有较好真实感的流体场景.【总页数】4页(P69-72)【作者】郭秋雷;唐逸之;刘诗秋;李桂清【作者单位】华南理工大学计算机科学与工程学院广东广州510006;华南理工大学计算机科学与工程学院广东广州510006;华南理工大学软件学院广东广州510006;华南理工大学计算机科学与工程学院广东广州510006【正文语种】中文【中图分类】TP391.77【相关文献】1.GPU通用计算平台上的SPH流体模拟 [J], 温婵娟;欧嘉蔚;贾金原2.GPU中的流体场景实时模拟算法 [J], 陈曦;王章野;何戬;延诃;彭群生3.基于CPU-GPU混合加速的SPH流体仿真方法 [J], 胡鹏飞;袁志勇;廖祥云;郑奇;陈二虎4.基于GPU的面向SPH流体模拟的邻居查找算法 [J], 赵相坤;李凤霞;战守义5.基于稳定性SPH-SWE数值模型的真实感流体动画实时模拟 [J], 邵绪强;梅鹏;陈文新因版权原因,仅展示原文概要,查看原文内容请购买。
应用基于GPU的SPH方法模拟二维楔形体入水砰击问题
应用基于GPU的SPH方法模拟二维楔形体入水砰击问题王珏;邱流潮
【期刊名称】《计算力学学报》
【年(卷),期】2013(030)0z1
【摘要】光滑粒子流体动力学(SPH)法是一种无网格的拉格朗日效值方法,广泛应用于计算流体领域模拟复杂自由表面流问题.SPH方法的主要缺点就是计算量过大,而基于GPU的并行计算方法可使SPH计算得到有效加速.本文应用基于GPU的SPH并行计算方法研究了二维楔形体的入水砰击问题.数值计算结果与文献中对应的解析解比较一致,验证了基于GPU的SPH方法的精度和可靠性.仿真结果同时显示基于GPU的并行计算方法可使SPH计算速度得到显著提高.
【总页数】4页(P174-177)
【作者】王珏;邱流潮
【作者单位】中国农业大学应用力学系,北京100083;中国农业大学应用力学系,北京100083
【正文语种】中文
【中图分类】O352
【相关文献】
1.基于气垫效应的二维楔形体入水砰击载荷预报方法研究 [J], 张健;尤恽;王珂;万正权
2.基于SPH方法的救生艇入水砰击数值模拟 [J], 胡杰;谢荣
3.基于OpenFOAM的无转角和有转角楔形体舱段入水砰击载荷数值模拟研究 [J], 骆寒冰; 杨宇; 谢芃; 季红叶
4.弹性楔形体入水砰击载荷及结构响应的理论计算与数值模拟研究 [J], 王一雯;郑成;吴卫国
5.二维楔形体入水砰击仿真研究 [J], 陈震;肖熙
因版权原因,仅展示原文概要,查看原文内容请购买。
GPU中的流体场景实时模拟算法_陈曦
第22卷第3期2010年3月计算机辅助设计与图形学学报Jo urnal of Co mputer -A ided Design &Computer G raphics V ol .22N o .3M a r .2010收稿日期:2009-06-15;修回日期:2009-11-05.基金项目:国家“九七三”重点基础研究发展计划项目(2009CB320802);国家自然科学基金重点项目(60833007);国家“八六三”高技术研究发展计划(2007AA01Z316);国家自然科学基金项目(60970075);浙江省自然科学基金杰出青年团队项目(R407042).陈 曦(1987—),男,主要研究方向为计算机图形学、计算机视觉、数字图像处理;王章野(1965—),男,博士,副教授,硕士生导师,论文通讯作者,主要研究方向为计算机图形学、虚拟现实、红外成像仿真(zyw ang @cad .z ju .edu .cn );何 戬(1983—),男,硕士研究生,主要研究方向为计算机图形学、虚拟现实;延 诃(1983—),男,硕士,主要研究方向为计算机图形学、虚拟现实;彭群生(1947—),男,博士,教授,博士生导师,CCF 高级会员,主要研究方向为计算机图形学、生物计算、虚拟现实等.GPU 中的流体场景实时模拟算法陈 曦,王章野*,何 戬,延 诃,彭群生(浙江大学CAD &CG 国家重点实验室 杭州 310027)(chexiz @cad .zju .edu .cn )摘要:为了实时模拟真实的大规模流体场景,提出一种基于平滑粒子流体力学(SP H )进行流体场景模拟的算法.首先提出了新的精细程度函数作为非均匀采样的依据,以减少实际模拟时所需的粒子数,提高模拟的速度;然后引入一种三维空间网格划分算法和改进的并行基数排序算法,以加快模拟过程中对邻域粒子和边界的查找及其相互作用的计算;最后使用最新的N VIDI A ?CU DA ?架构,将SPH 的全部模拟计算分配到G P U 流处理器中,充分利用G P U 的高并行性和可编程性,使得对SPH 方法的流体计算和模拟达到实时.实验结果表明,采用文中算法能对流体场景的计算模拟达到实时,并实现比较真实的模拟效果.与已有的SP H 流体CP U 模拟方法相比,其加速比达到2个数量级以上,同时相比已有G P U SP H 方法,能模拟出更为丰富的细节效果.关键词:流体场景;实时模拟;G P U 加速;基于物理的模拟;自适应平滑粒子水动力学中图法分类号:T P391An Integrated Algorithm of Real -Time Fluid Simulation on GPUChen Xi ,Wang Zhangye *,H e Jian ,Yan H e ,and Peng Qunsheng(S tate Key Labor ator y of CAD &CG ,Zhej iang Univers ity ,Han gz hou 310027)A bstract :Sim ulating large -scale fluid scenes in real -time is of great value in both resea rch and applicatio n .T o achieve this g oal ,w e present an integ rated alg orithm fo r fluid scene sim ulation .A new function of fineness is pro po sed to make decision in o ur no n -unifo rm particle re -sampling proce ss to bo th reduce the num ber of particles in need of sim ulation and enhance simulation speed .We also pro po se a novel 3D spatial g rid partitio n algo rithm and pa rallel radix so rt alg orithm to increase speedfo r searching neighboring particles and interacting w ith boundaries ;We use the new N VIDIA ?Compute Unified Device A rchitecture (C UDA )to co mpute SPH entirely o n GPU ,w hich m akes full use of the high parallelism and prog ram mability of GPU to simulate fluid in real -time using SPH method .Expe riments show that the method pro po sed can be used to sim ulate fluid scene in real -time with satisfacto ry effect ,and the co mputatio n speed increases up to mo re than tw o orders of m ag nitude in co mparison with the existing CPU SPH methods .Mo re detail effects than o ther GPU SPH methods can be gene rated .Key words :fluid scenes ;real -time simulatio n ;G PU accelerating ;phy sically based simulation ;SPH 自然场景的真实感实时模拟,特别是流体场景的模拟,在数字娱乐产业中(如电影特效、游戏制作、计算机动画、虚拟现实以及航海模拟和灾难救援等)有着广泛的应用.但由于基于物理复杂模型的真实感建模与快速实时模拟一直存在着矛盾,因此它一直是国际计算图形学领域研究的热点与难点之一.早期的流体模拟的研究[1-2]主要是基于非物理的过程式建模方法,即参数化表面生成;M astin 等[3]提出了基于统计的快速傅里叶变换(fast Fourier transfo rm,FFT)与过正弦曲线的叠加来模拟水面; Tessendorf等[4]提出的高度场方法可以运用到游戏等场景中:上述方法都是将三维的流体模拟简化到二维的高度场上,虽然模拟速度较快,但是由于这些方法不是基于物理原理,真实性不足,不能模拟浪头翻卷及泡沫等细节效果;而且这些方法基于随机函数,难以实现固液交互.随着当今图形处理器(g raphics pro cessing unit,GPU)的性能不断强大,越来越多的研究者把目光聚焦在计算量更大但是更加真实的基于物理方法的流体模拟[5]研究上.目前,基于物理的流体模拟方法大致分为两大类[6]:一类是基于网格的欧拉方法.它从流体占据的空间中各固定点出发,分析各空间点上流体的速度、压力、密度等参数随时间的变化.虽然基于Level Set的欧拉方法能较有效地描述卷浪的自由表面如水面和卷浪,但是对于细浪和泡沫等细节尚不能很好地模拟.另一类是基于粒子的拉格朗日方法,它从分析流体各个微粒的运动出发得出整个流体的运动状态,能够很好地模拟复杂的水面细节,近年来受到了越来越多的学者青睐,并取得不少进展.然而,上述的工作大多需要大量的离线计算,而且当流体与场景中的边界进行交互时计算复杂度会急剧上升,如何在保持与场景交互的流体的真实感同时进行实时的流体计算模拟,仍然是流体模拟领域的一大挑战.1 相关工作基于粒子的拉格朗日方法能够适用于各种规模场景的流体模拟,并能实现卷浪等真实感效果,因此正越来越受到流体模拟研究者的关注.在拉格朗日方法中,由于以平滑粒子流体力学(smoothed particle hy dro dynamics,SPH)[7]方法更加真实、稳定且高效,目前已成为最有前景的模拟方法之一.Reeves[8]最早将粒子系统引入图形学;S tam 等[9]则是最早将SPH方法引入流体模拟用于模拟气体和火焰的效果;Takeshita等[10]利用SPH模拟了爆炸效果;Mǜller等[11]首次将SPH方法应用于水面的绘制;另外一些工作则应用SPH方法来模拟流固耦合[12]及多相流[13].由于SPH方法需要对每个粒子的状态进行分析计算,而上述算法均是在CPU中实现,不能达到实时应用,因此研究人员提出了一些利用GPU加速甚至全部实现SPH的算法.Amada等[14]利用GPU对SPH进行加速,但其中的邻域粒子查找是在CPU中进行的,每一步迭代过程均要在CPU中计算邻域信息并将数据转移到GPU中,因而未能完全利用GPU的并行性能.Kolb等[15]则在GPU 中实现了整个SPH过程,但是由于该算法在网格上进行计算,在粒子上进行插值,这会造成物理上的不连续错误,效果并不真实.H arada等[16]提出了将SPH计算全部在GPU中实现的算法,并提出了利用空间网格进行邻域查找的方法,提高了模拟速度;但该算法将每个网格的状态编码到一个RGBA四通道的像素中,受到像素通道数目的限制,空间中每个网格最多只能包含4个粒子,使得当粒子数目增多时,网格数与粒子数达到了同一数量级,且由于每次迭代都要重新计算每个网格粒子数,因此该算法不能对每个粒子进行并行处理.上述方法并没有考虑通过建立自适应的粒子系统来提高计算效率.局部压强恒定的流体内部实际上只需要更少的粒子来模拟,而在流体表层或运动的区域则需要更多的粒子才能显得真实.Desbrun 等[17]首先提出了时空自适应框架来模拟高形变物体,但其只考虑了根据物理条件的采样,因而欠缺真实性,且并不适合在GPU上并行实现.这种算法固有的局限导致了大量的CPU计算,因而整个算法的效率并不高.Adam s等[18]提出了通过用局部特征场作为采样条件来改进这种算法,但其未考虑其物理机制,因此在迭代时间步长比较大时易造成物理上的不稳定.另一些研究则尝试把SPH和其他方法的优点结合起来.T hurey等[19]提出了一种通过结合高度场和S PH模型的方法来实时模拟卷浪和水花的算法,但其水面的效果会出现明显的不连续.Lo sasso 等[20]提出了一种结合基于网格的PLS(particle level set)方法和基于粒子的SPH方法的新算法,但该算法计算代价太大,效率也不高.虽然目前已有很多用SPH方法来模拟流体的工作,但是它们仍然不能实时模拟与边界有交互的流体场景.本文首先提出并描述了自适应SPH的框架,并引入了基于物理、几何意义等的精细程度函数;提出了新的三维空间网格划分算法和改进了的基数排序算法,将SPH邻域查找全部在GPU中实现,且能对所有粒子并行进行,为邻域粒子作用力的397第3期陈 曦,等:GP U中的流体场景实时模拟算法实时计算和粒子与边界的实时碰撞检测奠定基础;同时描述了该算法在GPU 中的具体实现,如变长的粒子集合的处理等.实验结果证明,本文算法能够实时模拟出细节丰富的大规模流体场景的动态效果.2 非均匀采样SPH 框架2.1 基本SPH 物理框架SPH 是拉格朗日流体模拟方法中的一种,其基本思想是将流场离散成一系列的粒子,任一物理量(如密度、压强等)通过这些点的值积分插值得到,积分插值使用如下的和函数内积实现,其形式可表示为A (x )=∫DA (x ′)W (x -x ′,h )d x ′.离散化后可得A (x )=∑jm j A j ρj W (x -x j ,h );其中,m j 是粒子j 的质量,ρj 是粒子所在位置的流体密度.x 表示粒子的核半径,函数W (x ,h )称为光滑核函数,是控制流体粒子核的光滑或者粗糙程度的系数.2.2 非均匀采样SPH 基本原理为了获得更精细流体效果,传统的SPH 方法很可能会出现用大量小半径粒子来模拟流体的情况,也有可能会因为采样频率过高而导致计算复杂度太大,而这常常是不必要的.其实,不同精细程度的流体可以通过改变粒子半径而获得,与粒子个数没直接关系.因此,本文提出一种自适应改变粒子半径的框架,此框架中粒子的半径是非均匀的.通过非均匀采样,可以减少系统的计算负担,同时保证流体的真实感.对系统中的每个粒子p i ,设其粒子半径为r i ,核半径为h i ,若对另一个粒子p j 两者距离有‖x i -x j ‖≤2max (h i ,h j ),则称2个粒子相邻.另外,本文将作用在p i 上的压力近似为文献[17]中导出的表面压力和粘滞力的平均,则这2种力的方程分别为F Pres sure i=-km i ∑j ≠imjρi -ρ0ρ2i +ρj -ρ0ρ2ji(W h i +W h j )2;和F Viscosityi=-ηm i∑j ≠i m j∏iji(W h i +W h j )2.其中,η为粘滞系数,∏ij在文献[7]中定义.同理,其他SPH 的物理量也类似地定义,如h和W h 分别由(h i +h j ) 2和(W h i +W h j ) 2代替.以上对SPH 模型的修改使得本文的非均匀采样SPH 模型符合牛顿运动定律.3 本文非均匀采样规则本节首先提出一种新的基于粒子精细程度的非均匀采样规则函数,该函数不仅考虑了流体的形状、几何信息,而且考虑了粒子的受力情况和运动状态,并根据粒子的邻域粒子数作补充调整.根据这个函数,本文为系统中粒子的采样制定了量化的规则.3.1 精细程度函数已有的研究,如文献[18]中没有考虑到流体的物理复杂性,因此经过自适应非均匀采样以后,流体的某些细节不能模拟.若系统时间步长比较大,将会导致不连续的效果.本文提出了一个新的基于粒子精细程度的采样模型,不仅考虑了几何信息,而且考虑了各个粒子的受力情况和运动状态等物理信息,以及邻域粒子速度的影响.1)考虑流体外形的几何信息.很明显,越靠近流体的表面的粒子给人的视觉冲击会越大,因此模拟要更精细,需要的粒子半径要越小;而在流体内部的粒子则受到较少关注,只需粗略地模拟,粒子半径可以稍大.基于这个原因,本文在实践中首先找到流体的表面一层粒子,这可以通过计算流体的表面张力大小来判断.然后并行计算出流体每个粒子p i 到流体表面的距离为d i ,在每一迭代单位时间步长内最大的距离值记为d max .2)考虑流体的物理信息.根据物理学定义,考虑受力情况和运动状态这2个因素的影响.如果只考虑粒子到流体表面的距离,不能够区分表面的形变状况.分析造成形变的原因易知,在剧烈形变的部分通常受到了更大的局部压力,而这部分需要更小半径的粒子以体现其受力细节.因此,本文将局部压强s i 作为采样的参考因素,并将最大的压强记为s max .同时,以上的因素都只是考虑到了粒子静止时的状况,而显然粒子的状态除了空间位置和受力情况之外还受由运动状态决定.运动状态通常由运动速度决定,记粒子运动速度为v i ,最大运动速度为v max .如果粒子在流体表面,则运动越快的粒子越容易离散为水滴甚至水雾;若在流体内部,则运动速度越大的部分受压强越大,更容易形变,因此运动速度越大,粒子越精细.398计算机辅助设计与图形学学报 第22卷3)在充分考虑流体的几何信息和物理状况后,以粒子的邻域粒子密度作为校正条件.因为粒子重新采样后,会造称局部粒子密度的变化,如果不根据邻域粒子的多少作校正,会造成系统局部的受力运动不稳定.因此本文将邻域粒子数记为N i,其最大值记为N max,邻域粒子数越少,粒子越需精细.综上所述,可获得粒子采样的精细程度(level of fineness)函数模型LF i=λ1-d id m ax+μs is max+θv iv max+ω1-N iN maxλ+μ+θ+ω(1)其中λ+μ+θ+ω=1分别为调节各项比例的系数,在实际应用中分别取为0.3,0.3,0.3和0.1.3.2 非均匀采样规则根据式(1),本文制定出一个阈值Υ,如果LF i>Υ,说明流体该位置需要进行细分采样;否则,说明流体需要减少采样的精细度.重新采样后,无论是采样细分还是合并都要保留原来流体的体积,即新的采样粒子占据原来粒子同样大小的空间.4 三维空间查找算法实现实时SPH方法的关键是快速求出粒子与粒子间力的相互作用,因此对粒子的查找、排序以及作用检测求解成为了算法的关键.已有的SPH算法大多使用遍历穷尽的算法,n个物体间的作用力检测将会花费O(n2)的时间复杂度.H arada等[16]提出的利用空间网格进行邻域查找来提高了模拟速度,但是该方法中每个网格最多只能包含4个粒子,使得当粒子数目增多时网格数与粒子数达到了同一数量级,而且此方法不能对每个粒子并行进行处理.如果对三维空间进行网格剖分,并且网格不受粒子数量的限制,以此对粒子的位置以及查找排序的标识,在查找时只对邻近网格的粒子进行,这样能够减少大量不必要的受力计算,大大地提高算法的效率,使得平均时间复杂度减小到O(n lo g n).因此,对空间进行适当的剖分是非常必要的.而基于NVidia G80以上G PU的C UDA架构包含了对三维纹理的处理,使得三维的空间划分变成可能.4.1 三维空间网格划分算法下面给出详尽的空间划分在CUDA上实现的算法,步骤如下:Step1.对空间进行均匀的网格剖分.由于网格剖分的最终目的是便于查找邻域粒子,而SP H中假设粒子只受核半径内其他粒子的影响,本文将查找的范围限定为粒子所在网格邻域内的27个网格,根据已经在CP U中求出的粒子核半径,设网格的边长为l,核半径为h,则有3l≥2h.根据核半径的定义,核半径比粒子半径大,所以由此得到的空间划分,每个网格中可能会有多于4个粒子.Step2.为每个网格编号.由于CU DA中提供对三维向量的支持,本文根据每个网格在空间中的位置给每个网格分配一个三维整型向量(x,y,z).其中,x=ceil(WorldSize.x CellSize.x);y=cei l(Wor ldS ize.y CellSize.y);z=ceil (WorldS ize.z CellS iz e.z);CellI D=(x,y,z);Step3.建立粒子-网格对应表.根据上述的网格划分,每个粒子的归属由它中心所在的网格决定,因而可以建立一个大小为Siz eMap的粒子-网格对应表,以粒子索引号为键值,以其所在网格号为值,每个粒子-网格对应表的元素存放着粒子索引(Particle I D)和网格索引(Cel l I D)的键值二元组,以方便邻域查找.因为粒子的位置在每一步迭代后都会发生变化,因此这个粒子-网格对应表也会频繁地随着粒子位置的变化而更新,为了提高访问粒子-网格对应表数据的效率,本文将它绑定到纹理显存中.Step4.建立边界-网格对应表.在导入边界几何信息时进行预计算,建立面片索引(Boundary F ace ID)和网格索引(Cell ID)的对应表.与粒子-网格对应表不同的是,由于粒子不需要作精确求交,因此粒子间作用力只由其中心位置决定,每个粒子只需对应于其中心所在网格;而面片需要精确求交,面片经过的网格均要建立对应关系以做出碰撞检测,所以会出现一个面片对应多个网格的情况.虽然GP U分配动态存储空间不方便,但因为网格和面片尺度相近,因而可以对每个网格中最多的面片数进行限定,从而以哈希表的形式进行存储.4.2 改进的GPU并行基数排序算法实时SPH算法的关键是快速求出粒子与粒子间,特别是核半径内邻近粒子的相互作用力.新建立或者更新粒子位置后的粒子-网格对应表是乱序的,必须通过排序算法以网格为序排列起来才能在计算中快速地取得邻近粒子的信息.因此,更新粒子状态后的排序算法是制约整个SPH算法能否达到实时的关键.排序一直是算法中研究的核心问题之一,但是在GPU中的排序具有自己的特殊性———高度的并行性,因此可突破非并行排序算法平均O(n log n)复杂度的限制.目前,基数排序、快速排序以及合并排序已经在GPU有效地实现.本文采用基于基数排序算法进行粒子排序.基数排序是排序算法中最著名、历史最久的之一,其基本原型详见文献[21].它根据键值的位数d和基数r=2b将排序分为多轮,而在每一轮中,使用木桶399第3期陈 曦,等:GP U中的流体场景实时模拟算法排序(bucket sort,又称counting so rt).理论证明,这种排序方法具有稳定性,即每新一轮排序后,之前各轮排序所得的相对顺序不会打乱.由于木桶排序各位之间互不干扰,因此这里蕴含着可并行性;并行基数排序正是基于其固有的并行性提出来的.在GPU中,目前最流行的并行基数排序是由Blelloch[22]所提出的.以每轮只看1位的简单情况为例,首先在每轮中对每一键值并行地求出其前序和,这一步也称作“扫描”,所得出的前序和正是每一个元素在这轮排序后应在的相对位置;另外,它还引入了线程块以提高并行度.G rand[23]通过使用大基数以及后处理在C UDA中实现了当时最快的并行基数排序算法之一.实验证明,该算法的排序效率比CPU要快1~2倍.尽管文献[23]算法具有很高的效率,但是还是有一点不足:每步从线程级别的共享存储器将线程回写到全局存储器时,因为数据位置的分散以及GPU内显存带宽的瓶颈限制,会造成50%的时间延迟代价.为了减少这种不必要的时耗,本文提出了改进的并行基数排序算法.与文献[23]类似,本文也是采取分块的形式.不同的是,我们利用了CUDA在线程级别的可编程性,在共享存储器内先对线程块内进行前序和计算.这样在回写全局存储器之前,每个线程块内已经有序,使得回写时能大大减少数据散列造成的传输冲突,充分利用了GPU的显存带宽.5 边界交互碰撞检测算法要处理流体与场景的交互,首先要对粒子和边界进行碰撞检测,最简单的是穷尽算法.假设场景有有M个面片,N个粒子,其时间复杂度为O(M×N).如果场景复杂度增大到粒子的数量级别,将会使计算量急速增长到O(N2),成为实时模拟流体的障碍.文献[24-25]等提出用体素化来处理碰撞检测,然而这些算法也是将物体体素化为二维纹理,且只处理边界间的碰撞,并未与粒子系统结合起来.本节提出一种在三维中快速检测边界碰撞的新算法,其基于第4节中提出的查找搜索算法,将粒子与粒子、粒子与面片之间的交互统一到同一种方法处理,使得固液交互达到实时.5.1 建立网格与边界面片的对应与空间网格大小相比,粒子的半径是可以忽略的,本文假定粒子只对应于一个网格,但是边界的面片大小不能忽略,有可能占据几个网格.本文改进第4节中的粒子排序查找算法,允许一个面片对应多个网格,并把面片几何中心所在网格记为中心网格.在预计算中,首先计算出边界面片的包围盒(ax is-alig ned bo unding box,AABB),包含x,y,z 方向上的最大最小值共6个点,结果保存在CUDA 全局存储器中,用于以后的碰撞检测中;对面片包围盒所经过的空间网格,以面片号为键值建立面片-网格哈希表.然后,对这些以面片为序的哈希表进行并行基数排序.本文仅处理静止的边界,因此以上空间对应排序只需在预计算中进行.如果处理动态边界,如船只等,边界更新排序可以在每一步迭代时进行. 5.2 粒子-边界碰撞检测经过预计算,边界面片与空间网格的顺序对应已经建立,只需在每步迭代后的碰撞检测中对流体粒子进行如下的碰撞检测:对某一个粒子,假设在单位时间步长Δt内运动经过了某几个网格C i(i=1, 2,…,k),则通过在有序的查找表中找出这些网格中的面片索引(因为只可能与这些网格中的面片相交),根据这些索引在公共存储器中提取出这些面片的包围盒,并与运动轨迹进行求交.如果相交,再对该面片与粒子进行精确求交,若仍然相交,才会对流体粒子位置进行交互.因为网格的大小由核半径决定,核半径通常比面片大小要小很多,若把时间步长调小,则粒子的运动轨迹最多穿越1~2个面片的包围盒,而且先对面片的包围盒求交,速度远远快于对精确求交,这样,只需大大减少对每个粒子进行的求交数目,而求交速度显著提升.6 运用通用GPU进行流体计算鉴于SPH方法是基于粒子的拉格朗日方法,如果要较好地模拟流体的细节,则要求粒子数比较多,至少要达到上万个.这时如果将流体的计算全部放在CPU的话,将会非常缓慢,很难达到实时要求.我们根据SPH方法的要求,充分利用新一代GPU的高度并行性和C UDA方便的可编程性,综合上述各种新的加速算法,设计了一种完全在GPU400计算机辅助设计与图形学学报 第22卷对流体进行计算模拟的算法模型,使得对大规模大数量粒子数下的流体模拟达到实时的速度,在保证实现模拟的物理真实性的前提下,大大提高了算法的效率.整个GPU 中流体模拟流程如图1所示.图1 基于G P U 的SPH 模拟算法流程图1)求出流体的基本物理量从第2节易知,流体的性质是由一些用户定制的基本参数,如静止密度、粒子半径等决定的.首先由用户制定好初始化的参量,然后根据这些基本参数求出其他常数的物理量,如核半径等.2)在GPU 上分配存储空间由于本文算法中绝大部分计算模拟都要在GPU 中进行,因此必须在GPU 中为计算所需要的数据分配足够的空间.根据已经由用户定制好的系统参数如粒子数目等,为每个粒子的各个物理量在显存中分配空间.具体步骤如下:Step1.为标量分配空间.根据第2节的SP H 的计算分解步骤,在每一步迭代过程中首先要求出的物理量是2个标量:粒子所受到的压强和(质量)密度.因此,在G PU 的共享显存中为每个粒子的这2个标量以及中间标量单位密度压强分配空间,每个粒子分配大小为32bit 的空间.Step2.为矢量分配空间.因为SP H 运算中涉及大量的力学与运动学的物理量,如速度、压力等,这些量都是具有3个分量的.但是在G P U 中,CU DA 将会以半w arp 的形式进行流处理计算,每个wa rp 有32个线程.线程必须按顺序访问字:半wa rp 块中的第k 个线程必须访问第k 个字;并从CP U 向G PU 传输数据[26].因为3与32互质,这种传输方式将使得数据很难对齐传输,导致数据读取缺失率大大提高,降低运行效率.此外,GP U 中计算的流水线将映射到像素处理器上,以RG BA 四通道对数据进行计算,设计成3个分量矢量显然会导致数据传输的不一致.因此我们为每个粒子的矢量分配4个浮点型分量.Step3.为粒子 边界-网格对应表分配空间.本文算法对粒子的查找将基于空间网格划分,为每个粒子分配一个对应的空间网格,而查找时将使用粒子-网格对应表的数据结构,表的每一个元素将存放着粒子索引(Particle ID )或边界面片索引(Boundary I D )和网格索引(Cell I D )的键值二元组(key -value pair ),以方便邻域查找.3)三维空间上划分网格本文按照第4.1节算法在三维空间中均匀划分网格,为下面的快速排序查找进而实时模拟奠定基础.在实际应用中,为了保险起见,将所有网格边长l =2h ,以此对空间进行剖分.4)GPU 并行基数排序实时SPH 方法的关键是快速求出粒子与粒子间,特别是核半径内邻近粒子的相互作用力.因此更新粒子状态后的排序算法是制约整个SPH 算法能否达到实时的关键所在.第4.2节的算法不仅应用于邻域粒子的排序,也在导入边界几何信息时对边界面片按网格顺序排序的预计算中发挥重要作用.实验证明,这种改进了的并行技基数排序算法比基于CPU 的并行基数排序算法平均快2~3倍,比文献[23]中的GPU 基数排序算法平均快20%,而且随着粒子数量的增多,加速效果更趋明显.5)计算邻域粒子的作用力基于以上的基数排序得到了按照网格的顺序紧凑排列的数组,这样对粒子进行查找时,就能够很方便地对粒子邻近核半径范围内的所有网格的粒子进行遍历查找.由于本文在剖分网格时已经将网格的变长设定在2 3核半径以上,因此对核半径内粒子的搜索可以转化为对粒子所在网格为中心的27个网格的搜索.根据第2节的SPH 求解步骤,整个求解压力密度算法的伪代码如下:Calculate Pressure DensityN umberO f Threads =N umberOf Particles ;Assign CUD A T hread for each particle P i P i 是当前粒子,以下线程在G P U 中并行执行F or (each P k in N eighbor i ) P k 为P i 邻域内的粒子Dist =Pos (P i )-Pos (P i ,P k ); 粒子空间距离P ressure (P i )+=Pressure (P k )*W (D ist ,h )*C k ;Densi ty (P i )+=Mass (P k )*W (Dist ,h );End ; end CUD A T hread for P i401第3期陈 曦,等:GP U 中的流体场景实时模拟算法。
GPU中的流体场景实时模拟算法
GPU中的流体场景实时模拟算法陈曦;王章野;何戬;延诃;彭群生【期刊名称】《计算机辅助设计与图形学学报》【年(卷),期】2010(022)003【摘要】为了实时模拟真实的大规模流体场景,提出一种基于平滑粒子流体力学(SPH)进行流体场景模拟的算法.首先提出了新的精细程度函数作为非均匀采样的依据,以减少实际模拟时所需的粒子数,提高模拟的速度;然后引入一种三维空间网格划分算法和改进的并行基数排序算法,以加快模拟过程中对邻域粒子和边界的查找及其相互作用的计算;最后使用最新的NVIDIA CUDA架构,将SPH的全部模拟计算分配到GPU流处理器中,充分利用GPU的高并行性和可编程性,使得对SPH方法的流体计算和模拟达到实时.实验结果表明,采用文中算法能对流体场景的计算模拟达到实时,并实现比较真实的模拟效果.与已有的SPH流体CPU模拟方法相比,其加速比达到2个数量级以上,同时相比已有GPU SPH方法,能模拟出更为丰富的细节效果.【总页数】10页(P396-405)【作者】陈曦;王章野;何戬;延诃;彭群生【作者单位】浙江大学CAD & CG国家重点实验室,杭州,310027;浙江大学CAD & CG国家重点实验室,杭州,310027;浙江大学CAD & CG国家重点实验室,杭州,310027;浙江大学CAD & CG国家重点实验室,杭州,310027;浙江大学CAD & CG国家重点实验室,杭州,310027【正文语种】中文【中图分类】TP391【相关文献】1.基于GPU雨场景的实时模拟 [J], 唐玉蕾;袁赞;吴志红2.基于GPU粒子系统的大规模雨雪场景实时模拟 [J], 刘小玲;杨红雨;郭虎奇3.基于GPU粒子系统的大规模场景高效雨雪实时模拟 [J], 文治中;刘直芳;李纲;梁威4.一个SPH流体实时模拟的全GPU实现框架 [J], 郭秋雷;唐逸之;刘诗秋;李桂清5.一种基于GPU的火焰实时模拟算法 [J], 邓定胜因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
万方数据
408
计算机辅助设计与图形学学报
第22卷
舻)。莩仇,筹删一而I,h)一
∑m』W(I工一而J,^)
(2)
使用poly6核函数来对流体密度进行插值[153
‰㈤力项 本文使用理想气体的压强方程来计算压强
口;之后,就可以进行粒子速度和坐标的更新.为了
简化实现,本文使用欧拉方法对速度和坐标进行更 新,即
阮=口idt
(6)
置=巩dt
(7)
其中,d£为时间片的长度,鼍为粒子的坐标.
使用欧拉方法进行粒子的更新会在时间片取值 较大的情况下导致系统不稳定,但GPU实现非常
高效,因此系统可以在时间片取值较小的情况下达
Key words:parallel process;physically based fluid simulation;GPU;Navier—Stokes equations
基于物理的流体模拟由于计算成本较高,在很 长的一段时间中一直属于高质量离线渲染的领域. 物理流体模拟是基于计算流体力学的,其中的纳维一 斯托克斯(Navier-Stokes,NS)方程式是一个很好的 流体流动模型.关于通过数值解法来求解NS方程
P=k(p—po)
(3)
其中,P。为静止密度值,而愚为不可压缩性常量.当
获得每个粒子的压强之后,通过计算粒子间的压强
梯度来获得压力值.本文使用spike核函数
蹦沪鞘篓嗡嗡^一卜“
的梯度‘5]来计算压力,从而避免粒子聚集. 压力方程
聊%,2~莩辨,(鲁+生Pi)Vw刘x--xi|'^,
(4)
3.3计算粘性力项 粘性力是由摩擦力产生的一种现象,它会减少
1 相关工作
基于网格的模拟在计算流体力学中非常有用. Foster等[11使用网格来进行三维流体的模拟; Stam[2]扩展了文献[1]方法,提出了结合网格方法 和粒子方法的半拉格朗日流体模拟法,来实现稳定 的流体模拟;周世哲等[33提出了基于多重网格法的 实时流体模拟.
SPH是最重要的基于粒子的流体模拟方法之 一,它最早由Gingold等[43提出用于解决天体力学 问题;Desbrun等Is]使用SPH来模拟可变性物体; Mtiller等[61使用SPH来实现可交互的流体模拟.
这一问题,国内外的研究人员发表了大量的论文.其 中,基于粒子的方法,也被称为拉格朗日方法,具有很 多很好的特性:首先,它是一种不需要网格的方法, 流体可以在整个场景中自由流动,而且所有的计算 资源都可以集中到流体本身;其次,该方法可以展现
收稿日期:2009—03—21I修回日期:2009—08-24.基金项目:上海市科技重点攻关项目(08511501000);本论文的研究成果曾获得AMD中 国大学加速计算应用大赛(AMDChinaUniversityAccelerated ComputingApplicationContest)--等奖.温婵娟(1984一),女,硕士研究生,主要 研究方向为计算机图形学、科学计算与信息可视化;欧囊蔚(1984一),男,硕士,主要研究方向为计算机图形学,科学计算与信息可视化;贾金原 (1963一),男,博士。教授。博士生导师,CCF高级会员。主要研究方向为虚拟现实,WebGraphics、计算机仿真,几何造型(jyjia@tongii.edu.on).
现代GPU能够对显存进行高效的读写.在 SPH流体模拟过程中,所有的数组都被映射为 GPU缓存.GPU缓存是显卡显存中的一块内存空 间,模拟器为所有的粒子属性分配多个GPU缓存, 如图1所示.坐标缓存和速度缓存保存了每个粒子 的位置和速度信息,它们在整个模拟过程中都保存 了每个粒子的状态;其他的缓存,如密度缓存,压强 缓存,外力缓存等,都是临时缓存,可以动态地被创 建和销毁.
上海201804)
摘要:针对流体模拟需要大量计算资源从而很难达到实时模拟的问题,提出一种完全在GPU上实现的基于平滑 粒子流体动力学的流体模拟方法.首先通过在GPU上构造基于哈希函数的空间均匀网格来实现任意大小场景的快 速邻近粒子查找,并在GPU上并行求解SPH流体方程来实现流体模拟;渲染流体时,通过在顶点着色器中进行纹 理采样,利用粒子坐标缓存数据直接更新流体粒子系统的顶点缓存,从而避免了CPU--GPU之间的数据传输,充分 利用了GPU的并行性.实验对比表明,与纯CPU实现以及CPU和GPU混合实现的模拟结果相比,采用该方法能 显著地减少单个时间片的计算时间,大幅度提高流体模拟和渲染的整体性能.
』
I"J
计算.
3使用SPH对流体进行建模
使用SPH进行建模时,需要求解简化后的NS 方程
口。=等=g+等+罕.㈣
胖=一三VP‘ B
覃了‘“‘‘y=竺V 2H{
Pi
其中,口i是粒子加速度,%为粒子速度,g为重力加 速度,B为粒子所在位置的流体密度,只为粒子所 在位置的流体压强,弘为流体粘度. 3.I计算密度项
随着可编程图形硬件的快速发展,图形处理单 元(graphic processing unit,GPU)不仅仅可被用于 3D渲染,还可以用来进行一些通用的计算任务 (general purpose graphic processing unit,GPGPU).在 各种GPU通用计算应用中,基于粒子的流体模拟 展示了高度的数据并行性和高强度的计算需求,因 而非常适合在GPU上实现.然而已有的基于GPU 的粒子流体模拟算法需要CPU的参与,导致CPU 部分的计算和传输成为了算法的瓶颈.本文就此问 题展开讨论,提出一种完全基于GPU的粒子流体 模拟算法,其性能得到大幅度的提高.
关键词:并行处理;物理流体模拟;GPU;Navier-Stokes方程 中图法分类号:TP391.9
GPGPU·based Smoothed Particle Hydrodynamic Fluid Simulation
Wen Chanj uan,Ou Jiawei,and Jia Jinyuan
(Research Center of Graphics and Image,School of Soft,rare Engineering,Tongji University,Shanghai 201804)
万方数据
第3期
温婵娟,等:GPU通用计算平台上的SPH流体模拟
407
更多的流体细节.一个很重要的基于粒子的流体模 拟方法是平滑粒子流体动力学(smoothed—particle hydrodynamics,SPH),使用该方法可以简化NS方 程的求解.然而随着粒子数量的增多,计算量增大, 在CPU上使用SPH进行流体模拟仍然无法实现实 时的模拟.
·A(z)一∑■优p,’ 坐w(I工一工i l,^),
用SPH求解位于位置X粒子的标量值A. 当求解流体方程的时候,经常需要对属性项进
行求导.在SPH方法中,求导操作只影响平滑核函 数,因此标量值A的梯度可以表示为
VA(x)一∑仇,字vW(1工一而l,^);
|
r’
而标量值A的拉普拉斯算子可以用
V2A(工)=∑m,争V 2w(I工一毛I,^)
流体的动能,粘性力项还可以被用于保持流体模拟 系统的稳定性.粘性力项使用以下核函数的拉普拉 斯算子
w一加烈一嘉+吾+去_1'峰≤^
r=I善一毛l’
胖,(j)=P研;∑m』掣V 同时,使用
2W。;ke(1 X--而f,JII)
(5)
来计算粘性力.
3.4更新速度与坐标
根据式(1)把各个外力相加获得最终的加速度
率较低. 本文通过在GPU上实现基于哈希函数的空间
均匀网格,避免了CPU的干预和数据的传输,有效 地提高了模拟的效率;同时,也避免了为空闲的网格 单元分配空间,大大优化了GPU显存的利用率.
2 SPH
SPH是一种在粒子系统中进行插值的方法“], 它是计算流体动力学的重要方法之一.SPH通过一 个对称的、有一定作用半径的平滑核函数,把单个粒 子某一属性项的值平滑地分配给相邻的粒子.根据 SPH的定义,可以通过位置X对在平滑域内所有粒 子的标量值A进行插值并求加权和,以获得位子位 置X的粒子的标置值A.而每个粒子的权重可以通 过计算一个核函数w获得,可通过方程式
第22卷第3期 2010年3月
计算机辅助设计与图形学学报
Journal of Computer—Aided Design&Computer Graphics
V01.22 No.3 Mar.2010
GPU通用计算平台上的SPH流体模拟
温婵娟,欧嘉蔚,贾金原
(同济大学软件学院图形图像实验中心 (chanjuan.wen@grnail.corn)
Abstract:Real—time fluid simulation has become a challenging task due to its intensive computational resource required.This paper presents a new particle-based SPH fluid simulation method based completely on GPU.By this method,hash—based uniform grid is constructed firstly on GPU to locate the neighbor particles faster in arbitrary scale scenes.Then in rendering stage,the particle vertex buffer is updated with the particle position buffer directly by sampling textures in vertex shader,thus, the intensive data transfers between CPU and GPU iS avoided and the parallelism of GPU hardware iS further utilized.The experimental results show that,in comparison with the pure CPU implementation or combined implementation of CPU and GPU,our method can be used to reduce the fundamental computing time in terms of single GPU time slice effectively and thus significantly improve the performance of fluid simulation and rendering.