[发明专利]一种通过死代码移除来加快GPU运行速度的方法有效

专利信息
申请号: 201310020549.2 申请日: 2013-01-21
公开(公告)号: CN103049304A 公开(公告)日: 2013-04-17
发明(设计)人: 迟利华;刘杰;胡庆丰;晏益慧;龚春叶;甘新标;徐涵;蒋杰;杨博 申请(专利权)人: 中国人民解放军国防科学技术大学
主分类号: G06F9/45 分类号: G06F9/45
代理公司: 国防科技大学专利服务中心 43202 代理人: 郭敏
地址: 410073 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种通过死代码移除来加快GPU运行速度的方法,目的是提出一种通过死代码移除来加速GPU运行速度的方法,提高大规模GPU核心程序的执行和编译效率。技术方案是先为大规模GPU核心程序中的所有函数构建状态检测表;记录函数基本信息,初始化状态检测表;静态分析GPU程序;接着运行GPU核心程序,记录GPU核心程序运行时信息,更新状态检测表各函数检测表字段的状态,然后标识死代码、死代码最终确认,根据最终得到的死代码集合D,删除死代码。本发明通过移除运行时不执行的死代码,减少了GPU核心程序的代码体积,也减小了最终生成的汇编代码体积,从而提高GPU中SIMD指令调度的命中率,显著提高大规模GPU核心程序的运行效率。
搜索关键词: 一种 通过 代码 加快 gpu 运行 速度 方法
【主权项】:
1.一种通过死代码移除来加快GPU运行速度的方法,其特征在于包括以下步骤:第一步、为大规模GPU核心程序中的所有函数构建状态检测表,状态检测表的表项数为GPU核心程序中函数的个数;状态检测表共包含六个字段,分别为:函数编号ID、函数名称Name、调用标记Callee、静态分析标记Static、动态执行标记Dynamic和删除标记Del;函数编号ID为函数的全局唯一标记,函数名称Name表示函数的名字;调用标记Callee表示函数是否被程序调用,调用标记Callee为true表示函数被程序调用过,Callee为false表示函数没有被程序调用过;静态分析标记Static表示对函数模块进行静态分析后判断其是否会执行,Static为true表示函数在程序执行时可能会运行,Static为false表示函数在程序执行时不会运行;动态执行标记Dynamic表示程序运行时函数是否被执行,Dynamic为true表明函数经在程序运行时运行过,Dynamic为false表明函数在程序运行时没有运行过;删除标记Del表示函数代码段能否被删除,Del为true表明函数代码段是死代码应该删除,若Del为false表明函数代码段不是死代码不应删除;第二步、记录函数基本信息:扫描程序代码,从0开始给GPU核心程序中每个函数代码段分配唯一函数编号并将分配的函数编号写入状态检测表的ID字段中,并将函数编号为q的函数名记录于ID字段为q的状态检测表的表项的Name字段中;对于有N个函数的GPU核心程序,则状态检测表有N个表项,N个表项的ID字段为0~N-1,0≤q≤N-1;第三步、初始化状态检测表:初始化状态检测表中所有表项的函数的调用标记Callee为true;;初始化所有表项的函数的静态分析标记Static为true;初始化所有表项的函数的动态执行标记Dynamic为true;初始化所有表项的函数的删除标记Del为true;第四步、对GPU程序源码进行静态分析,通过静态分析结果更新状态检测表各函数检测表字段的状态,具体方法如下:4.1获取状态检测表的表项总数N,初始化q=0;4.2如果状态检测表表项q对应的函数不会被调用,则置该表项对应的字段Callee为false,否则置为true;4.3如果状态检测表表项q对应的字段Callee为true,则置该表项对应的字段Static为true,否则置字段Static为false;4.4更新q=q+1,如果q<N,转4.2;否则,转第五步。第五步、运行GPU核心程序,记录GPU核心程序运行时信息,更新状态检测表各函数检测表字段的状态,具体方法如下:5.1获取状态检测表的表项总数N,初始化q=0;5.2如果状态检测表表项q对应的函数不会被调用,则置该表项对应的字段Callee为false,否则置为true;5.3如果表项q对应的字段Static和字段Dynamic均为false,则置该表项对应字段Del为true,否则置字段Del为false;5.4更新q=q+1,如果q<N,转5.2;否则,转第六步;第六步、死代码标识:定义集合S0,S1,…Si…SM-1均为空集,将状态检测表中表项字段Del为true对应的第一个函数并入集合S0,将状态检测表中表项字段Del为true对应的第二个函数并入集合S1,…,将状态检测表中表项字段Del为true对应的第M个函数并入集合SM-1,其中,0≤i<M≤N,M为标识为死代码的函数个数;第七步、死代码最终确认,具体方法如下:7.1初始化死代码函数集合为空定义变量j=0;7.2使用GPU核心程序对应的语言注释标识将Sj对应的函数代码段注释,使得该函数代码段不运行;7.3运行经将Sj注释后的程序,比较运行结果,若结果正确,更新死代码集合D=D∪Sj;否则,转7.4;7.4删除当前Sj对应的函数代码段的注释;7.5j=j+1;7.6如果j<M,转7.2;否则,转第八步;第八步、根据最终得到的死代码集合D,进行死代码删除,具体流程如下:8.1获取死代码集合D的元素个数P,0≤P≤M≤N,定义变量k=0;8.2删除死代码集合D中第k个元素对应的函数代码段;8.3更新k=k+1,如果k<P,转8.2;否则,转第九步;第九步、优化结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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