[发明专利]一种利用GPU进行大涡模拟实时渲染的方法无效
申请号: | 201210129012.5 | 申请日: | 2012-04-28 |
公开(公告)号: | CN102663208A | 公开(公告)日: | 2012-09-12 |
发明(设计)人: | 张广勇;张清;赵开勇;李勤俭;钟诚文;李凯;姚皆可 | 申请(专利权)人: | 浪潮电子信息产业股份有限公司 |
主分类号: | G06F17/50 | 分类号: | G06F17/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 250014 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供了一种利用GPU进行大涡模拟实时渲染的方法,涉及主机端的初始化和流程控制以及设备端的大涡模拟的实时计算和实时渲染,该方法包括:GPU计算卡进行大涡模拟加速计算;GPU显示卡对模拟结果进行实时渲染。本发明利用GPU计算卡快速计算的特点进行大涡模拟的并行计算,同时通过另一个GPU显示设备端对大涡模拟的流场演化结果进行实时渲染。 | ||
搜索关键词: | 一种 利用 gpu 进行 模拟 实时 渲染 方法 | ||
【主权项】:
一种利用GPU进行大涡模拟及实时渲染的方法,其特征在于将初始化以及控制过程放在CPU端执行,而把耗时但是并行性非常好的迁移、碰撞和边界处理过程利用CUDA技术在适于科学计算的GPU并行执行,并在迭代执行一定次数后求得流函数并传递到用于显示的GPU设备,显示GPU将流函数映射到颜色值并进行实时渲染,方便观看流体模拟的演化过程,方法包括主机端的初始化、流程控制以及大涡模拟的实时计算和实时渲染,其中:所述主机端,根据流场物理背景进行网格划分,给定网格所有格点上的宏观参量,宏观参量包括密度、速度、参考长度、雷诺数和黏性系数,并由此计算出所有格点上各个方向的分布函数,以此作为计算的初场,同时设定CUDA内核Kernel的线程执行配置以及实时渲染间隔的迭代步长ITR_STEP;主机端要依据流场物理背景进行网格划分,设定所有格点上的宏观参量的初始值,根据所述网格上的格点数设置并行执行所需迭代计算的线程数,具体内容如下:1)根据所述物理问题的要求将流场计算域进行网格划分,所述网格大小为NX*NY,NX为x方向上的格点数,NY为y方向上的格点数,所述网格上的格点数为N =NX*NY;2)迭代步长ITR_STEP为每迭代多少步进行一次渲染显示;3)将网格上的格点数N设置为并行执行所述迁移碰撞计算的线程数,以及渲染时的线程数;4)显示设备的渲染与计算设备的计算的并发执行指计算设备把每ITR_STEP步迭代的计算结果传递给显示设备之后,显示设备进行渲染的同时计算设备可进行下一个ITR_STEP的迭代计算;5)主机端在将格点数N设置为并行执行所述迁移碰撞和边界处理算法以及渲染算法的线程数同时,还包括:设定GPU线程块中的线程数BLOCKDIM,取值为64‑512,设置并行执行所述迁移、碰撞以及渲染算法的GPU线程块的块数为(NX+BLOCKDIM‑1)/BLOCKDIM,NY,该GPU线程块中每一线程映射到所述网格的一个格点,边界处理过程分别按照左右边界、上边界以及下边界另行单独处理,线程块大小不变,线程块数量依NX和NY决定;6)主机端控制迭代次数,并把计算设备迭代后的结果传递到显示设备中,其中:主机端控制每迭代ITR_STEP次之后,即计算设备的内核迭代调用ITR_STEP次之后,计算设备把计算得到的流场演化结果回传给主机端内存,主机端再传递给显示设备端,如果计算设备和显示设备满足PCI‑E P2P传递,流场演化结果不通过主机端而直接传递给显示设备,所述PCI‑E P2P指计算设备和显示设备都支持统一虚拟寻址技术,显存之间或不通过主机端内存而直接数据的传递;所述大涡模拟的实时计算,由科学计算能力强的GPU计算设备完成,用于计算的设备端,根据所述线程执行配置,使用相应的多线程并行地根据所述所有格点上各个方向的初始分布函数,依次通过迁移和碰撞、边界处理得到演化步的流场分布函数;所述大涡模拟的实时渲染,由图形渲染能力强的GPU显示设备完成,主机端控制每迭代ITR_STEP后,从计算设备把当前流场的演化结果传递给显示设备,显示设备将演化结果并行的映射到颜色值后进行渲染显示,显示设备的渲染与计算设备的计算并发执行;具体步骤如下:(1)根据物理问题,在主机端给定所有格点上的宏观参量,包括:密度、速度、黏性系数,并给定实时显示的迭代间隔ITR_STEP,即每迭代多少步显示一次;(2)计算设备进行迁移、碰撞以及边界处理流场演化过程的并行计算;根据计算GPU的全局存储器访问方式以及寄存器个数来设计CUDA的线程执行配置,确定总线程数和总线程块数:迁移和碰撞中对每个网格的计算之间没有任何依赖性,因此,将每个CUDA线程映射到一个流场格点,流场中的总网格格点数即为总的线程数;在LBM算法中,对边界要做特殊的处理,而边界上的每个格点之间的计算也没有数据的依赖性,因此,也并行处理;(3)计算设备迭代计算ITR_STEP步后,求得流场当前流函数并传递到显示设备中;计算GPU每迭代ITR_STEP之后将计算结果传递给主机端内存,主机端再把计算结果传递给显示GPU的显存;如果计算GPU和显示GPU之间支持PCI‑E P2P传输,数据通过PCI‑E总线直接由计算GPU传送到显示GPU,而不需经过主机端内存,从而提高传输速度;(4)显示设备进行并行渲染和结果显示;显示GPU将一个OpenGL像素缓冲对象PBO注册到CUDA,用一个自设的函数将流函数数值映射到RGB颜色值并直接写入像素缓冲对象,然后将颜色值作为二维纹理进行渲染并显示输出,流函数到颜色值的映射用一个内核并行执行;(5)计算和显示并发执行;在步骤(2)‑(4)中,当显示卡进行渲染的时候,计算卡继续进行下一个ITR_STEP步的迭代计算,通过流方式实现计算和显示的异步处理,满足流体模拟的实时显示过程。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮电子信息产业股份有限公司,未经浪潮电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210129012.5/,转载请声明来源钻瓜专利网。
- 上一篇:舷外机用丙烷化油器
- 下一篇:一种减小服务器共振方法