[发明专利]三维波动方程有限差分数值模拟方法及装置有效
申请号: | 201911154428.0 | 申请日: | 2019-11-22 |
公开(公告)号: | CN112836327B | 公开(公告)日: | 2022-11-04 |
发明(设计)人: | 侯思安;王春明;胡英;崔栋;张才;李萌;张征 | 申请(专利权)人: | 中国石油天然气股份有限公司 |
主分类号: | G06F30/20 | 分类号: | G06F30/20;G06F111/10 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 薛平;谷敬丽 |
地址: | 100007 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 三维 波动 方程 有限 数值 模拟 方法 装置 | ||
1.一种三维波动方程有限差分数值模拟方法,其特征在于,所述方法包括:
定义三维速度模型中GPU线程块的大小,根据GPU线程块的大小将计算平面划分成多个子区域,每个GPU线程块计算一个子区域,所述计算平面是由三维速度模型中GPU显存最快速方向和第二快速方向组成的平面;
根据扩边长度和GPU线程参数定义指示寄存器变量,所述GPU线程参数包括GPU线程块大小、GPU线程块的序号和GPU线程块内GPU线程的序号,所述指示寄存器变量包括真和假两种状态,每个指示寄存器变量分别用于指示子区域外的一个按照扩边长度进行扩边的扩边区域,子区域和子区域外的扩边区域组成向共享内存中加载数据的区域;
针对每个子区域,确定该子区域对应的GPU线程参数,根据扩边长度和GPU线程参数确定该子区域外每个扩边区域对应的指示寄存器变量的状态;
根据每个指示寄存器变量的状态确定该指示寄存器变量对应的扩边区域加载到共享内存中的数据;
根据子区域和子区域外扩边区域加载到共享内存中的数据,进行三维波动方程有限差分数值模拟;
其中,所述指示寄存器变量为x0、x1、z0和z1,
x0=(blockIdx×blockDimx+0>0)∩(threadIdx<w);
x1=(blockIdx×blockDimx+blockDimx-1<nx-1)∩(threadIdx<w)
z0=(blockIdz×blockDimz+0>0)∩(threadIdz<w)
z1=(blockIdz×blockDimz+blockDimz-1<nz-1)∩(threadIdz<w)
其中,w表示扩边长度,blockIdx和blockIdz分别表示GPU线程块在x轴方向和z轴方向的序号,x轴方向为GPU显存第二快速方向,z轴方向为GPU显存最快速方向;blockDimx和blockDimz分别表示GPU线程块在x轴方向和z轴方向的大小;threadIdx和threadIdz分别表示GPU线程块内线程在x轴方向和z轴方向的序号;
其中,所述根据每个指示寄存器变量的状态确定该指示寄存器变量对应的扩边区域加载到共享内存中的数据,包括:
如果指示寄存器变量的状态为真,则该指示寄存器变量对应的扩边区域加载与所述扩边区域对应的全部数据至共享内存中;
如果指示寄存器变量的状态为假,则根据三维速度模型的边界类型加载预设数据至共享内存中,所述预设数据为与扩边区域对应的全部数据中的部分数据。
2.根据权利要求1所述的方法,其特征在于,所述GPU线程块在GPU显存最快速方向的大小为32的倍数。
3.根据权利要求1和2任一所述的方法,其特征在于,根据子区域和子区域外扩边区域加载到共享内存中的数据,进行三维波动方程有限差分数值模拟,包括:
针对从y=0至y=ny-1之间的每个计算平面,将三维速度模型中y轴方向的数据加载至数据寄存器变量中,其中,y轴方向为GPU显存最慢速方向,ny表示三维速度模型在y轴方向的大小;
利用计算平面中子区域和子区域外扩边区域加载到共享内存中的数据,以及数据寄存器变量中存储的y轴方向的数据,根据三维波动方程有限差分公式进行三维波动方程有限差分数值模拟。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国石油天然气股份有限公司,未经中国石油天然气股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911154428.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种冷却壁结构
- 下一篇:客户端中标签的显示处理方法、装置、设备及存储介质