切片数据结构和向gpu等的安装方法

文档序号:6466330阅读:191来源:国知局
专利名称:切片数据结构和向gpu等的安装方法
技术领域
本发明涉及通过基于利用粒子的流体计算方法的粒子法模拟等关于用于 邻近搜索的计算格子的使用方法使存储器效率良好、且高效进行邻近粒子搜索 的切片数据结构以及在GPU等中安装利用切片数据结构的粒子法模拟的安装 方法。
背景技术
"粒子法模拟"是将作为对象的物体作为多个粒子的集合来捕捉,并注目 多个粒子的每一个的行为来进行计算的模拟法。在计算机上进行计算时,在上 述粒子中,通常是使用具有一定直径的"球"。当通过球的集合体来表现物体 的形状时,根据该球的大小(直径)的决定方法,物体形状的近似度或者空间 解析度也变化。此外,通过变化球的直径来变化空间解析度,就能够控制基于 计算机的模拟计算中的计算精度以及计算速度。
近年来,利用上述粒子法模拟来进行流体等的行为计算、,在计算机显示 装置的画面上进行流动等的流体模拟研究。作为公开了该研究的文献,,可以举 出田中正幸等、"利用粒子法的刚体计算方法的开发与在计算机绘图学中的 应用"、日本机械学会、第19次计算力学演讲会演讲论文集、701-702页、2006。 粒子模拟技术的研究作为计算机绘图学(Computer Graphics, CG)的基础的 技术是非常重要的。
利用粒子法的流体模拟的方法有MPS法(Moving Particle Semi-implicit Method)以及SPH ( Smoothed Particle Hydrodynamics )。 MPS法是解出根据连 续的公式导出的泊松(poisson)方程式来计算非压缩流动,但SPH不课以非 压缩条件来计算^t拟非压缩流动。因此,MPS法比SPH计算成本高。因而, 在计算机绘图学领域中,SPH方法成为主流。
在上述的粒子法模拟的研究中,以前大多进行了主要利用CPU来做成计 算算法的方法。但是,近年来逐渐进行利用GPU (GraphicsProcessingUnit:—
般是流处理器)的粒子法模拟的研究。GPU,为了特化为图形的处理,成为在 内部多个处理器并行进行运算处理的构成。因而,如果是顶点的坐标变换等的 处理,则GPU能够比CPU更高速地进行处理。此外,GPU能够通过写称为 着色器的程序来控制处理,因而可以使用到图形以外的各种处理。因此,有关 粒子法模拟的计算也可以GPU来高速化地进行,这点也尝试过了。例如,本 发明的发明人开发了通过GPU来进行SPH的全部模拟的方法。作为公开该方 法的文献,可列举出T. Harada, S. Koshizuka , and Y. Kawaguchi Real-time fluid simulation coupled with cloth. In Proc. Of Theory and Practice of Computer Graphics, 2007以及T. Harada, S. Koshizuka , and Y. Kawaguchi Smoothed particle hydrodynamics on gpus. In Proc. Of Computer Computer International, pages 63-70, 2007。
在本发明的发明人提案的上述方法中,关于粒子法模拟中的邻近粒子搜索 使用了在空间上固定的格子,因而存在存储器的效率低,且对计算区域产生限 制的问题。
例如,使用粒子的流体计算方法,由于与使用流体计算方法相比, 一般不 使用计算格子,因而也能够容易计算细的飞沫等,存在能够表现实际的流体行 为的优点。另一方面,使用粒子的流体计算方法,计算粒子之间不具有连接关 系,而可动态变更粒子的配置,因而为了计算在某个坐标的物理量,需要在各 个时步中搜索在该坐标的邻近存在的粒子的处理。
为了高效率地进行邻近粒子搜索,在计算区域中配置格子(计算格子), 将某个粒子的序号存储在该粒子进入的立素(存储桶或者格子)中,由此,能 够实现高效率。 一般以内包计算区域的方式准备计算格子。
在上述说明中,若固定化计算格子来准备计算格子,在流体的计算区域内 的粒子分布变化时,不存在粒子的立素会增多,存储器的使用效率变低。能够 使用模拟程序的存储器的大小有限制,因而越减少计算格子中使用的存储器, 在表现流体的粒子中使用的存储器就越增力口,就能够进行更加大规模的流体模 拟。
根据以上的问题点,期望能够提高用于粒子法模拟的邻近粒子搜索的计算 格子的存储器效率。

发明内容
本发明的目的是,鉴于上述问题点,提供在基于使用粒子的流体计算方法 的粒子法模拟中,关于在邻近粒子搜索中使用的计算格子的使用方法,能使存 储器的使用效率良好,且使邻近粒子搜索高效率化的切片数据结构。
此外,本发明的其他目的是,提供在GPU等中安装利用了切片数据结构 的粒子法模拟的安装方法,该切片数据结构是能够在GPU等容易安装能够提 高存储器的使用效率的上述切片数据结构。
本发明的切片数据结构,为了达到上述的目的,采用如下的构成。 粒子法模拟等中使用的切片数据结构,是关于在使用CPU、流处理器以
及GPU等来进行粒子法模拟的计算等中使用的空间的数据结构。该空间是由 多个立素构成的三维计算空间。在所述三维计算空间中形成与任意一个轴垂直 相交的二维切片区域(切片),由此以多个二维切片区域分割多个立素(格子)。 在多个二维切片区域中的每一个中,关于粒子存在的立素的存在范围计算最大 和最小立素的各个的开始坐标,由此决定以矩形形状包围存在范围的矩形范围 (边界框)。对包含在多个二维切片区域的各个的矩形范围内的所述立素,确 保存储器。
切片数据结构是,在上述结构中,在关于存在粒子的立素确保的存储器的 存储要素中,存储特定该粒子的值(例如粒子序号等)。
切片数据结构是在上述结构中,使用定义各个二维切片区域的矩形范围的 值、决定切片序号的值以及开头序号来进行多个二维区域的各个矩形范围内的 某个点存在的(x, y, z)的立素的立素序号v (x, y, z)的计算。
用于本发明的粒子法模拟等的切片数据结构,在上述结构中,粒子法模拟 的计算是邻近粒子搜索的计算,为了使邻近粒子搜索的计算高效率化,由二维 切片区域分割三维计算空间。
用于粒子法模拟等的切片数据结构,在上述结构中,在粒子法模拟的所述 计算中,使用流处理器或GPU来进行关于粒子法模拟的计算由二维切片区域 分割所述三维计算空间的计算。
利用了切片数据结构的粒子法模拟的向流处理器或GPU的安装方法,是 构筑用于高效率化粒子法模拟的邻近粒子搜索的数据结构,将为了在GPU上
使用该数据结构来进行邻近粒子搜索所需要的数据作为阵列来存储在视频存
储器中,安装在GPU上的方法。该方法具有下述步骤在由多个立素构成的 三维空间,形成与任意一个轴垂直相交的多个二维切片区域,通过多个二维切 片区域分割多个立素的步骤;在多个二维切片区域的每一个中,关于粒子存在 的立素的存在范围,计算最大和最小的立素的各个的开始坐标,由此决定以矩 形形状包围存在范围的矩形范围的步骤;准备至少一个一维阵列的步骤;将定 义多个二维区域的每一个最低限所必要的4个值存储在阵列的要素(GPU时 是RGBA通道)中的步骤;准备至少一维的其他阵列的步骤;以及将粒子的 粒子序号存储在其他阵列的步骤。
在向流处理器的安装方法中,在向所述GPU的程序的安装中使用着色器 时,作为阵列^f吏用紋理。
在上述安装方法中,最低限的4个值是任意二维切片区域(i)中的开头 的立素的序号Pi、最小立素的开始坐标bxj.^、 bzj, min、规定的轴方向的立素 数nxj。
根据本发明,不使用固定格子,而将三维计算空间分割成与一个轴垂直相 交的二维切片区域,利用规定的矩形范围即边界框的考虑法来限制存储在存储 器的立素,因而能够高效率地利用GPU等的视频存储器,能够使在利用GPU 等的粒子法模拟的邻近粒子搜索中使用的立素(格子)的存储效率良好,能够 提高邻近粒子搜索的效率。


图1是表示执行本发明的粒子法模拟的计算机系统的基本结构的系统结 构图2是表示安装在计算机系统中的GPU内部的基本结构的框图; 图3是表示三维计算空间的立体图4是用于对比说明现有的固定格子(A)与本实施例的格子(立素)的 决定方法(B)的图5是表示用于在GPU上安装基于切片数据结构的计算方法的步骤的流 程图6是表示关于数据结构的设定阶段的更加具体的步骤的流程图7是表示关于边界框的决定阶段的更加具体的步骤的流程图; 图8是图解切片的"开头序号的计算"的考虑方法的图; 图9是表示关于值的读取阶段的更加具体的步骤的流程图。
具体实施例方式
以下,根据

本发明的优选实施例。
图1是表示实施在GPU的粒子法模拟中,在邻近粒子搜索的计算中使用 切片数据结构,利用该切片数据结构来构筑的模拟方法的计算机系统的结构。
计算机系统IO例如利用PC (Personal Computer)而构成,并具有作为运 算处理部来进行通常的计算机运算处理的CPU11以及进行被特化为图像处理 的运算处理的GPU12。此外,计算机系统IO作为存储装置具有主存储器13A 以及视频存储器(VRAM) 13B,作为周边装置至少具有输入装置14以及显 示装置15。 CPUll、 GPU12、主存储器13A、输入装置14以及显示装置15 经由总线16相互连接。输入装置14经由输入接口 17与总线16连接,显示装 置15经由输出接口 18与总线16连接。此外,视频存储器13B直接与GPU12 连接。通过GPU12对视频存储器13B进行数据存取。
另外,在本实施例中,在GPU12中应用的编程方法是利用着色器(Shader) 的结构。
CPU (中央运算处理装置)11例如是安装在PC等的通常的运算处理部。 此外,GPU12是"Graphics Processing Unit",执行图像运算处理。在CPU中 例如使用"CoreX6800"。
GPU12内置多个处理器而构成,并作为并行计算机来使用。GPU12使用 例如NVIDIA公司制作的"GeForce 8800GTX"。另外,在GPU12中使用的产 品并不局限于这些,也可以使用具有类似的结构 功能的其他流处理器。该 GPU12执行存储在主存储器13A的邻近粒子搜索运算程序13A-1,并执行粒 子法模拟中的邻近粒子搜索运算。邻近粒子搜索运算程序13A-1,进行在邻近 粒子搜索中使用的数据结构的构筑。在后面详细说明关于具有本发明的特征的 结构的IW居结构的构筑方法。
此外,GPU12执行存储在主存储器13A的通常的图像处理程序13A-2, 并使用在邻近粒子搜索的计算中得到、且存储在紋理中的图像数据来实施图像
处理,使用生成的图像数据在显示装置15的画面上描绘(用于显示的渲染)。 在显示装置15的画面上,基于粒子法模拟的计算,显示CG图像。
在本实施例的以下说明中,例如将说明基于粒子法模拟的流体模拟的计算 例。在该流体模拟的运算中,主要利用GPU12的特征性的内部结构以及功能 来执行用于应用到邻近粒子搜索的数据结构的构筑方法。如后面所述,将在本 实施例中说明的数据结构称为"切片数据结构(或者基于切片的数据结构)"。 另外,也可以利用CPU来执行。
接着,参照图2说明上述的GPU12内的要部的基本结构。图2是示意性 的表示GPU12的内部结构的框图。GPU12具有并列配置的多个处理21,并基 于根据这些处理器的并列计算处理来执行用于显示(描绘)的渲染。尤其,根 据本实施例的在邻近粒子搜索中使用的数据结构的构筑(立素(或者桶)的构 筑)方法,在一个立素中存在4个粒子时,将4个粒子的粒子序号写入一个像 素的各个RGBA通道中。通过GPU12中的该立素的构筑处理来实现图像运算 处理的高速化。
GPU12通常具有在前段侧中并列配置的例如8个顶点(vertex)着色器 (VS) 22以及在后段侧并列配置的例如24个分段(fragment)着色器(FS) 23。在多个顶点处理器(21A)的每个中执行的程序是顶点着色器22,在各个 分段处理器(21B)中执行的是分段着色器23。
在上面的说明中,顶点处理器是并列配置的处理器,并且是被特化成同时 处理多个顶点的坐标变换(将输入的顶点坐标变换成被渲染得图像空间中的坐 标)的处理器。GPU12与CPU相比能够高速计算顶点的坐标变换,指定顶点 处理器的动作的是顶点着色器。
而且,GPU12具有深度测试功能部24、颜色蒙板功能部25以及模板测试 功能部26。此外,方块27是着色器指令分配部。
说明作为在利用GPU12的粒子法模拟中使用的本实施例的数据结构的 "切片数据结构"的基本概念。
在基于粒子法的流体计算中,设定用于各时步中执行的邻近粒子搜索的计 算中使用的空间(或者区域)。将该空间称为"计算空间"。该计算空间如图3 所示,在垂直相交的X轴、Y轴、Z轴中定义的三维空间31。在计算空间31 中准备多个格子32。多个格子32形成计算空间31,各个格子32是一边为"d" 的小的立方体。在本实施例的说明中,将该格子32称为"立素"。另外,"立 素"还称为"桶"或者"格子(grid)"。
上述的多个格子即立素32具有无限宽度,在计算中在计算空间31上不变 更其配置。在本实施例的计算方法中,在形成计算空间31的上述多个立素32 中,如后面所述,在视频存储器13B上只保存必要的立素。
另外,如现有的计算方法,使用固定的格子时,在计算空间内规定用于计 算区域的边界框,为了该边界框内部的立素不管粒子的有无确保存储器。即、 甚至对不存在粒子的立素也要确保存储器。与此相对,在本实施例的计算方法 中,原则上确保对存在粒子的立素,确保存储。
在本实施例的计算方法中,首先,形成关于计算空间31与一个轴垂直相 交的多个切片31a,将在计算空间31中准备的多个立素32分割成包含在多个 切片31a的各个中。各个切片31a的维次是比计算空间31的维次(3维)相 比低1维次,是2维。相当于各切片31a的厚度的尺寸大致与立素32的一边 (d)相等。即、在切片31a垂直相交的一个轴的方向中只具有一个立素。作 为该"一个轴"可以选择X轴、Y轴、Z轴等任意一个轴。例如,作为"一个 轴"选择Y轴,则切片31 a成为沿着XZ规定的XZ平面方向扩展的2维空间。 以下说明将三维计算空间31分割成与Y轴垂直的2维切片31A时的例子。
将计算空间31分割成多个切片31a后,在各个切片31a中定义关于XZ 轴方向的边界框。该边界框表示在一个切片31a中将粒子存在的区域以用于根 据矩形区域尽可能狭窄地确定的边界来区分的范围。在该切片31a中定义边界 框意味着计算XZ轴方向中的最大和最小立素的开始坐标bXi, max、 bxj, min、 bzi, max、 bzi.min。在这里"i"表示规定切片的序号。通过计算XZ方向中的最大和 最小立素的开始坐标bxj, max、 bxi, min、 bzi, max、 bzj, min,来根据下面的(公式1 ) 的(1)式和(2)式求出包含在该一个切片31a的边界框的立素数,换言之包 含在切片31a中的XZ轴方向的立素数nXi, nzj。
(公式l)
"&,.画-te +1 (2)
通过使用上述的nxi,nzi,能够将序号i的切片31a中的立素数n,作为n「nxi xnzi来求出。在本实施例的计算方法中,只对各切片内的边界框内部的区域 的立素,确保存储器。
在这里,假定将计算空间31分解成n个切片(So, S,, S2, ...SnJ。在最 初的切片Si的开头的立素的序号pi作为从切片So到Sw的立素的数的和来计 算下面的(公式2)的(3)式。 (公式2)
在图4中表示使用现有的计算方法的固定格子的结构的时的边界框的例 (A)和本实施例的计算方法的用于决定立素的边界框的例(B)。在图4的(A) 和(B)中如图示定义了 X轴、Y轴、Z轴。图4的(A)和(B)用与Z轴 方向垂直相交的一个XY轴方向的一个正方形的面(XY平面)来表示。在图 4的(A)和(B)中,由正方形41规定的范围内的小的正方形41a表示一个 立素,而且圆42表示在立素内存在的粒子。因此,在正方形41的范围内包含 存在粒子42的立素和不存在粒子42的立素。
在图4的(A)和(B)中,用与Y轴方向垂直相交的序号43表示的层 状的部分与前面所述的切片31a相对应。
另外,在图4中,上述的序号41a, 42, 43分别只表示一部分,省略了在 其他相同的部分标注序号的部分。
根据现有的计算方法,由于是固定格子的结构,因而构筑成如图4的(A) 中所示,与粒子的有无无关,对包含在正方形的范围41 (以粗的实线表示) 的全部立素确保存储器。即甚至对不存在粒子42的多个立素也需要确保存储 器。与此相对,在本实施例的计算方法中,构筑成对在各切片中定义的边界 框合成而形成的区域44 (以粗的实线表示),即在以尽可能地只包含存在粒子 42的立素的方式狭窄形成的区域44所包含的立素确保存储器。
通过如前面所述对计算空间31利用上述切片形成边界框,按下述,计算某个点(x, y, z)存在的立素的序号。
首先,使用Y轴方向的最小立素的开始坐标bymin,通过下面的(公式3) 的(4)式来计算包含该点的切片的序号。 (公式3)
(4)
然后,通过以下(公式4)的(5)式来计算点(x, y, z)的立素序号v (x, y, z)。 (公式4)<formula>formula see original document page 12</formula>(5)
这样,计算存在上述的点(x, y, z)的立素的立素序号。参照(5)式,
可以知道为了计算存在某个点的立素的序号而必要的值是,定义各切片的边界
框的值bXi, min、 bZi,min、 nxi,决定切片序号的值byimin,各切片的开头序号Pi,
还有立素的一边的长度d。若使用利用切片的上述数据结构,则如图4的(B)
所示能够高效率地利用存储器来形成立素(格子)。
根据以上所述,通过本实施例的计算方法来形成特征性的数据结构的"切
片数据结构"。为了实际构筑上述切片数据结构,决定n个切片{S0, S1, S2,..., Sn-l)的各个边界框,根据所决定的边界框,计算各个切片的开头序号。然后, 求出用于计算立素序号v(x, y, z)的上述4个值(pi 、 bXi,min、 bzj,油、nxj) 后,将这些值写入到立素中。这些4个值是用于定义边界框的最低限度的值, 并不只限定于这些值。
然后,说明为能够使用GPU12来执行基于上述切片数据结构的计算方法 在GPU12上安装的机构。
在图5中示出了使用GPU12的本实施例的计算方法的安装。如图5所示, 通过以下5个阶段来构成在视频存储器13B上设定数据结构的阶段(Sll )、 在分割计算空间31的各个切片31a上决定边界框的阶段(S12)、计算在各个 切片31a上的粒子的开头序号的阶段(S13)、存储值的阶段(S14)以及读取 值的阶段(S15)。
另外,关于上述"切片数据结构",通过"切片数据结构的构筑"的观点 以及"切片数据结构的利用"的观点能够把握。根据"切片数据结构的构筑"
的观点,"切片数据结构的构筑"是在上述5个阶段S11 S15中,通过"数据 结构的设定"、"边界框的决定"、"开头序号的计算"以及"值的存储"来构成。 此外,根据"切片数据结构的利用"的观点,在上述5个阶段S11 S15中, 由"值的读取"来构成。
以下,分别说明在5个阶段S11 S15中的处理内容。
数据结构的设定的阶段S11:
最初,参照图6的处理,说明用于能够在GPU12上安装的数据结构。为 了在GPU12上进行计算,有必要将关于计算空间中的切片、立素以及粒子的 数据作为紋理13B-1来存储在视频存储器13B。
如前面所述,计算空间31被分割为多个切片31a,因而为了存储各切片 31a所需要的值,即前面所述的4个值pi 、 bxi,min、 bzi,min、 nxi,准备1维紋 理(步骤S21)。当多个切片31a的数超过一维紋理的大小的最大值时,也可 以作成二维紋理。各切片31a所必要的4个值pi 、 bxi, min、 bzi, min、 nxi存储 在一维紋理的一个RGBA通道中(步骤S22 )。由于利用了 RGBA通道进行存 储,因而通常以1个紋理就能够充分应对。
此外,为了存储保持在格子即立素的值,准备二维紋理(步骤S23)。在 本实施例的例中,在立素中保持的值是粒子序号。利用二维紋理来存储保持在 立素中的粒子序号(步骤S24)。假定将存储粒子序号的二维紋理称之为"索 引池紋理"。在本实施例的例中,对一个立素分配一个紋理元素。此时,二维 紋理的紋理元素数成为能够存储在索引池紋理中的立素的最大值。
决定边界框的阶段S12:
然后,参照图7的处理流程,说明边界框的决定步骤。为了决定切片31a 中的边界框,首先计算在各切片中的最大和最小立素的开始坐标(步骤S31 )。 在该计算的处理中,通过根据粒子的Y坐标值计算该粒子所属的切片的序号, 而且计算在各切片中存在的粒子的坐标的最大值和最小值来进行。由于使用了 GPU12,所以,在该GPU12中,对每一个粒子分配一个顶点,写入到准备的 前面所述的一维紋理中(步骤S32)。
在GPU12的顶点着色器中,根据粒子的Y坐标值使用上述的式(4)来 计算切片序号(i),即计算在上述一维紋理中写入的位置(步骤S33),并且在 计算的该位置中写入顶点(步骤S34)。然后,在GPU12的分段着色器中,将 X坐标值以及Z坐标值作为"颜色"来输出(步骤S35)。另外,使用GPU12 的字母混合的功能可以进行最大值和最小值的选择。在具有如字母混合的,比 较来自几个处理器的被写入的值的功能的流处理器中,通过连续进行对存储器 的写入来执行上述动作。在具有原子操作能力的流处理器中,该能力能够用于 比较通过几个处理器写入的值的功能中。
计算开头序号的阶段S13:
通常,通过使用在多个切片31a每个中的XZ坐标的最大值和最小值能够 计算在该切片上的立素的数。开头序号的计算,在各切片中必须要计算式(3)。 当流处理器能够高效计算(式(3))时,使用该功能。但是,在GPU中使用 着色器来执行时不利用该功能,而必须采用其他的作法。对上述式(3)的计 算处理,关于切片i读取从no到n"的值后进行计算。假定切片的总数是m, 根据现有的计算方法需要m ((m+l )) /2次的存储器存取,因而由于存储器传 送速度会限制处理速度。
因此,在本实施例的计算方法中,利用了 GPU12的顶点着色器的功能来 执行。
即、读取在切片i中存在的立素的数ni,加到从(i+l)到第m个切片的 开头序号阵列中。由此,能够用m次的存储器存取计算开头序号。该处理就 是所谓的"Scattering Operation",在使用GPU12时能够使用顶点着色器来进 行。假设有m个切片时,该处理是写入到要素数m的一维阵列中的处理。即、 使用GPU12时,就成为在由m个紋理元素形成的一维文理中写入的处理。在 从第(i+l )到第m个切片的开头序号阵列中写入在切片i中存在的立素数ni 的处理,能够通过描绘第(i+l)个紋理元素到第m个的紋理元素的线段来进 行。
上述处理,才艮据GPU12的功能,通过分^:着色器功能来将切片内的立素 数作为颜色来输出。而且,通过根据GPU12的字母混合功能来进行加算处理, 能够评价式(3),并计算各切片的开头序号。
图8是图解上述切片的"开端序号的计算"的考虑方法的图。图8的(A) 与前面所述的图4的(B)的内容相同。图8的(B),在对应的位置以数值表 示了在(A)中所示的从下到上例如10层切片的每一个中的边界框内所包含 的立素的数。图8的(C)是用解加算各切片的立素的数的状态的图。图 8的(D)是从下侧到上侧,表示关于切片的总数的累计值的图。
存储值的阶段S14:
储在索引池紋理中。 读取值的阶段S15:
参照图9所示的处理流程。根据粒子的Y坐标值计算切片序号(步骤S41 ), 读取该切片的开头序号pi以及在切片上的最小值bxi, min、 bzi, min、在切片上的 X轴上的立素nxi (步骤S42)。利用这些值计算上述式(5),计算分配给该粒 子的立素的索引(步骤S43)。通过对一个粒子分配一个顶点,并读取该紋理 元素的粒子序号,由此进行对对应于计算出的索引的紋理元素的值的写入(步 骤S44 )。
存储在存在某个坐标的立素的值的读取,是通过根据该坐标与存储值时同 样地计算立素的索引,即计算存储器的地址来进行。
在利用切片数据结构的本实施例的计算方法中,能够用GPU12进行存储 了粒子序号的格子数据结构的构筑以及直到粒子序号的存储的处理,由此用 GPU12能够进行粒子法模拟的全部过程。
本实施例的计算方法,不使用固定格子,而不受计算区域的限制,因而即 使在广的计算空间也能够容易进行计算,通过排除不存在粒子的立素能够高效 率地使用存储器。而且,即使增加粒子的个数,也能够使用通常使用的存储器 来执行粒子法模拟。
在前面所述的实施例中,说明了在GPU中的程序安装中使用着色器 (shader)时的例,但并不局限于这些,也可以使用其他程序模块来安装。目 前,在GPU上的程序安装中除上述的着色以外,可以使用CUDA、 CTM、 Brook 等。这些,在将GPU作为流处理器(StreamingProcessor)来使用时,在编程 语言的意义上是共通的。在使用前面所述的着色器(shader)的例中,为了在GPU上的计算,将计算空间中的切片、立素以及关于粒子的数据作为紋理
13B-1来存储在视频存储器13 B中,但在使用CUDA等时,代替紋理一般来 说可使用"阵列"。
权利要求
1. 一种切片数据结构,其为空间数据结构,其特征在于,所述空间是由多个立素构成的三维计算空间,通过形成在所述三维计算空间中与任意一个轴垂直相交的二维区域,通过所述多个二维切片区域分割所述多个立素,在所述多个二维切片区域中的每一个中,关于粒子存在的立素的存在范围计算最大和最小立素的各个的开始坐标,由此决定以矩形形状包围所述存在范围的矩形范围,关于包含在所述多个二维切片区域的各个的所述矩形范围内的所述立素,确保存储器。
2. 根据权利要求1所述的切片数据结构,其特征在于, 在关于所述粒子存在的所述立素所确保的所述存储器的存储要素中,存储特定所述粒子的值。
3. 根据权利要求1所述的切片数据结构,其特征在于, 使用定义各个所述二维切片区域的所述矩形范围的值、决定切片序号的值以及开头序号来进行所述多个二维区域的各个的所述矩形范围内的某个点(x, y, z)存在的所述立素的立素序号v (x, y, z)的计算。
4. 根据权利要求1所述的切片数据结构,其特征在于, 所述粒子法^f莫拟的所述计算是邻近粒子搜索的计算,为了高效地进行所述邻近粒子搜索的计算,由所述二维切片区域分割所述三维计算空间。
5. 根据权利要求1~4任意一项所述的切片数据结构,其特征在于,关于所述粒子法模拟的所述计算由所述二维切片区域分割所述三维计算 空间的计算,使用GPU来进行。
6. —种利用切片数据结构的粒子法模拟的向流处理器的安装方法该方法 是,构筑用于高效地进行粒子法模拟的邻近粒子搜索的计算的数据结构,将为 了使用该数据结构在流处理器上进行邻近粒子搜索所需要的数据作为阵列(array)存储在视频存储器中后,安装在流处理器中的方法,其特征在于, 具有下述步骤形成在由多个立素构成的三维空间中与任意一个轴垂直相交的多个二维切片区域,通过所述多个二维切片区域分割所述多个立素的步骤;在所述多个二维切片区域的每一个中,关于粒子存在的立素的存在范围计算最大和最小的立素的各个开始坐标,由此决定以矩形形状包围所述存在范围的矩形范围的步骤;准备至少一维阵列的步骤;将定义所述多个二维区域的每一个最低限所必要的4个值存储在所述阵 列的要素中的步骤;准备至少一维的其他阵列的步骤;以及 将所述粒子的粒子序号存储在所述其他的阵列的步骤。
7. 根据权利要求6所述的利用切片数据结构的粒子法模拟的向流处理器 的安装方法,其特征在于,最低限的所述4个值是任意二维区域(i)中的开头的立素的序号pi、最 小立素的开始坐标bxj, min、 bzj, min、规定的轴方向的立素数nxj。
8. 根据权利要求6所述的利用切片数据结构的粒子法模拟的向流处理器 的安装方法,其特征在于,所述流处理器是GPU,所述阵列的所述要素是RGBA通道。
9. 根据权利要求8所述的利用切片数据结构的粒子法模拟的向流处理器 的安装方法,其特征在于,在向所述GPU的程序的安装中使用着色器时,作为所述阵列使用紋理。
10. 根据权利要求1所述的切片数据结构,其特征在于, 所述空间是在粒子法模拟的计算中使用的空间。
全文摘要
本发明提供一种切片数据结构以及利用切片数据结构的粒子法模拟的向GPU等的安装方法。用于使用流处理器或GPU等的粒子法模拟等的切片数据结构,是关于计算空间的数据结构,空间是由多个立素构成的三维计算空间,形成与Y轴垂直相交的多个切片,通过多个二维切片分割多个立素,在多个二维切片中的每一个,对于存在粒子的立素的存在范围计算最大和最小立素的各个开始坐标,决定以矩形形状包围存在范围的边界框,对包含在多个二维切片区域的各个边界框内的立素,确保存储器。
文档编号G06F19/00GK101388108SQ20081014471
公开日2009年3月18日 申请日期2008年7月30日 优先权日2007年9月11日
发明者原田隆宏 申请人:普罗姆泰克软件公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1