[发明专利]基于分组多流的GPU上多区结构网格CFD加速方法有效

专利信息
申请号: 201310189688.8 申请日: 2013-05-21
公开(公告)号: CN103226540A 公开(公告)日: 2013-07-31
发明(设计)人: 邓小刚;徐传福;张理论;车永刚;王勇献;姜屹;刘化勇;刘巍 申请(专利权)人: 中国人民解放军国防科学技术大学
主分类号: G06F15/173 分类号: G06F15/173
代理公司: 国防科技大学专利服务中心 43202 代理人: 郭敏
地址: 410073 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种基于分组多流的GPU上多区结构网格CFD加速方法,目的是加速GPU上运行的多区结构网格CFD应用。技术方案是构建CPU和GPU软硬件平台,部署多区结构网格CFD应用软件;执行分组多流管理软件、时间步推进软件,设置分组多流参数、CFD时间迭代步数和收敛条件,执行GPU存储管理软件初始化GPU存储空间使用方式、预先分配GPU存储空间并根据需要进行调整;在时间步迭代内执行分组多流管理软件,由GPU完成多区结构网格CFD应用的多流计算。本发明可有效加速GPU上运行的多区结构网格CFD应用,重叠GPU上多个网格分区的计算以及CPU与GUP间通信,以隐藏CPU和GPU间数据传输开销,缓解GPU全局显存容量较小的限制,且本发明简单易实现,通用性强。
搜索关键词: 基于 分组 gpu 上多区 结构 网格 cfd 加速 方法
【主权项】:
1.一种基于分组多流的GPU上多区结构网格CFD加速方法,其特征在于包括以下步骤:第一步,构建CPU和GPU软硬件平台,在CPU和GPU平台上部署多区结构网格CFD应用软件,方法是:CPU作为主处理器,GPU作为加速器,CPU和GPU间通过PCI-E总线连接,CPU上安装有操作系统、编译器以及GPU驱动、GPU开发环境,要求GPU硬件体系结构实现及其编程开发环境支持流处理机制,在CPU上安装多区结构网格CFD应用软件,包括CFD求解流程涉及的初始化软件、边界处理软件、时间步推进软件、流场解输出软件;在CPU上安装GPU存储管理软件和分组多流管理软件,所述CFD是Computational Fluid Dynamics的缩写,即计算流体动力学;第二步,初始化分组多流参数,设置CFD流场变量的GPU存储使用方式,设置CFD的时间迭代步数和收敛条件;记GPU上网格分区数为block_num,流的分组数量num_stream_grp,每组流的数量num_stream,时间迭代步数为Max_Step,block_num、num_stream_grp、num_stream、Max_Step均为正整数;流场变量在GPU上的存储使用方式包括三类:第一类是针对全局流场变量的,在GPU上的存储使用方式为预先分配GPU存储,计算过程中无需重新分配、释放;第二类仍然是针对全局流场变量的,但在GPU上的存储使用方式为临时分配GPU存储,计算过程中需要重新分配、释放,需要在CPU和GPU间拷入拷出;第三类是针对各CFD计算过程涉及的局部流场变量的,在GPU上的存储使用方式为临时分配、使用、释放GPU存储空间;设置方法如下:2.1启动分组多流管理软件根据网格分区数初始化配置GPU流的分组,将num_stream_grp初始化为1,num_stream初始化为block_num;2.2启动GPU存储管理软件将所有全局流场变量的GPU存储使用方式设置为第一类,局部流场变量的GPU存储使用方式设置为第三类;2.3启动CFD时间步推进软件,设置CFD的时间迭代步数和收敛条件;第三步,执行GPU存储管理软件,根据第二步的设置为第一类变量预先分配GPU存储空间,并根据GPU存储空间使用情况调整流场变量的GPU存储使用方式,具体流程如下:3.1执行GPU存储管理软件,根据2.2设定的流场变量存储使用方式为第一类全局变量预先分配GPU存储空间,如果GPU存储空间不足则转3.2,否则转3.3;3.2调整GPU存储使用方式和分组多流配置参数,方法是:3.2.1执行分组多流管理软件,流的分组数量重新设置为num_stream_grp=num_stream_grp+1,相应地每组内GPU流的数量为其中指的是大于X的最小的整数;3.2.2如果num-stream≥2,在CPU上执行GPU存储管理软件,根据流场变量存储使用方式分配GPU存储空间,如果GPU存储空间不足则转3.2.1,否则转3.3;如果num_stream<2,则转3.2.3;3.2.3将部分全局流场变量的GPU存储使用方式由第一类改为第二类,即在分组多流中对这部分变量采用临时分配GPU存储,具体过程如下:3.2.3.1判定是否存在以第一类方式使用GPU存储的全局流场变量,若有则选取一个该类型全局流场变量,将该全局流场变量的GPU存储使用方式改为第二类,转3.2.3.2;如果不存在,则无法再进行调整,提示"GPU存储空间不足"的错误信息,转第六步;3.2.3.2将GPU流的分组数量num-stream_grp初始化为1,每组流的数量num_stream初始化为block-num,转3.1;3.3对于以第一类方式使用GPU存储的全局流场变量,将CPU上变量值拷贝到GPU上,执行第四步;第四步,执行CFD时间步推进软件、GPU存储管理软件、分组多流管理软件,创建GPU上的多流,由GPU进行多区结构网格CFD应用的多流计算,具体步骤如下:4.1执行CFD时间步推进软件,初始化时间步循环的计数器变量n_step=1;4.2执行GPU存储管理软件,为采用第二类和第三类方式使用GPU存储空间的全局、局部流场变量临时分配空间;4.3执行分组多流管理软件,通过一个两层嵌套循环构建分组多流,外层循环针对分组,内层循环针对每组的多流;在外层循环内动态创建num-stream个GPU流,在内层循环由GPU进行多区结构网格CFD应用的多流计算,具体流程如下:4.3.1初始化外层循环的计数器变量stream_grp_id=l;4.3.2根据当前的分组多流配置,动态创建num_stream个GPU流;4.3.3初始化内层循环的计数器变量stream-id=1;4.3.4计算映射到第stream_grp_id个组的第stream-id个流的网格分区的编号nc=(stream_grp_id-1)*num_stream+stream_id,如果nc>block_num,则转4.4,否则转4.3.5;4.3.5利用第stream_id个GPU流启动与第nc个区块相关的操作,包括:启动从CPU拷入该区块到GPU的操作,启动GPU内核代码执行该区块在GPU上的计算,启动从GPU拷出该区块到CPU的操作;4.3.6GPU根据第stream_id个GPU流包含的操作执行第nc个网格分区在GPU上的计算以及在CPU与GPU间的拷入、拷出操作;4.3.7计数器变量stream_id的值增加1,若stream_id<=num_stream,则转4.3.4,否则转4.3.8;4.3.8对第stream_grp_id个组内的多GPU流的执行进行同步;4.3.9销毁第stream_grp_id个组内的多GPU流;4.3.10计数器变量stream_grp_id的值增加1,如果stream_grp_id<=num_stream_grp,则转4.3.2,否则转4.4;4.4执行GPU存储管理软件,释放4.2临时分配、使用的GPU空间;4.5执行CFD时间步推进软件,计数器变量n_step的值增加1,如果n_step<=Max_Step且不满足收敛条件,则转4.2;如果n_step>Max_Step或满足收敛条件,转第五步;第五步,执行GPU存储管理软件,将GPU计算结果拷回CPU,释放所有GPU存储空间,结束多区结构网格CFD的分组多流GPU加速;第六步,结束多区结构网格CFD软件的运行。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201310189688.8/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top