[发明专利]一种基于GPU端的有限元刚度矩阵模拟方法有效

专利信息
申请号: 201811439272.6 申请日: 2018-11-29
公开(公告)号: CN109753682B 公开(公告)日: 2020-12-22
发明(设计)人: 童哲铭;高杰;童水光 申请(专利权)人: 浙江大学
主分类号: G06F30/23 分类号: G06F30/23;G06F119/14
代理公司: 杭州天昊专利代理事务所(特殊普通合伙) 33283 代理人: 何碧珩
地址: 310027*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 gpu 有限元 刚度 矩阵 模拟 方法
【权利要求书】:

1.一种基于GPU端的有限元刚度矩阵模拟方法,针对弹性体变形的求解问题,首先依据静力学原理建立其平衡方程,并基于有限元方法对其动力学方程进行离散,从而将微分方程求解转化为线性方程组的求解,该线性方程组即为需要求解的刚度方程Ax=b,其中A为刚度矩阵,x为位移向量,b为节点力向量,具体包括以下步骤:

(1)建立变形体的静力学方程,基于有限元方法对其离散成刚度方程Ax=b

(2)刚度矩阵A的分裂处理;

(3)对应分配GPU显存;

(4)将CPU端初始化数据复制到GPU上;

(5)调用计时函数开始计时;

(6)调用设备端多项式预优共轭梯度算法进行计算;

(7)将计算结果从GPU上复制回CPU端,用于前端显示;

(8)释放CPU与GPU显存;

A.刚度方程Ax=b的初始化,其中x为待求解向量,初始化为0,其中取h=0.002,具体实现方法为:

A1.使用CPU端malloc函数对矩阵A,基于对角预优方法获得分裂阵M1、N1,并对临时矩阵进行动态内存分配以及初始化,作为中间变量;其中分裂阵M1=0,N1=0;

A2.使用CPU端malloc函数对向量动态内存分配以及初始化;

A3.构造单位阵

步骤(2)中,刚度矩阵A分裂处理的实现方法是:

B1.选取M1为刚度矩阵A的对角预优矩阵;

B2.对M1的对角线元素取倒数,复制回M1,以节约内存;

B3.构造N1矩阵,使

步骤(3)中,分配GPU显存的实现方法为:使用cudaMalloc函数为上述矩阵和向量分配GPU端显存;

步骤(4)中,将CPU端初始化数据复制到GPU上的实现方法为:使用cublasSetVector函数进行将CPU端初始化数据复制到GPU上;

步骤(5)中,调用计时函数开始计时的实现方法为:

E1.使用CUDA事件来对GPU段运算进行计时,

E2.将待处理数据指针传输到PPcg_device函数的参数里;

步骤(6)中,调用设备端多项式预优共轭梯度算法进行计算的实现方法为:

F1.使用cudaMalloc函数为设备端中间矩阵temp、J、G以及中间向量temp,r动态分配内存;

F2.初始化参数cublas库函数参数alpha=1.0,_alpha=-1.0以及变量浮点型beta=0.0,q0=0.0,q1=0.0,error_norm=0;

F3.使用cublasScopy函数将b向量复制到r向量,

F4.使用cublasSgemv计算r=Ax-r;

F5.使用cublasSgemm函数计算G=M1*N1;

F6.使用cudaMemcpy函数将I矩阵复制到矩阵

F7.使用cublasSdot函数计算向量r与自身的内积并将结果复制到error_norm上;

F8.预优共轭梯度算法;

F9.释放GPU显存;

步骤(7)的具体实现方法:使用cudaGetVector函数复制会计算结果。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

本文链接:http://www.vipzhuanli.com/pat/books/201811439272.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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