【技术实现步骤摘要】
本专利技术涉及加快大规模GPU核心程序运行速度的方法,尤指通过移除死代码来加快GPU运行速度的方法。
技术介绍
GPU (Graphics Processing Unit,图形处理单元)过去通常用于图形图像应用领域,现在也广泛应用于加速各种通用的并行算法和应用。这些算法和应用在GPU上的核心程序通常都比较简单,一般只有上百行代码。但是对于一些具有实际应用价值的大规模应用程序,如非确定性粒子输运程序MCNP (Monte Carlo N-particle, N粒子蒙特卡罗方法),其GPU实现的核心代码通常上万行,同时在具体程序执行时存在大量死代码。与CPU相比,GPU的指令缓存较少,从而对生成的汇编代码的大小很敏感。并且GPU —般采用_inline_指令对子函数进行内联,编译时需要对整个核心程序进行全局优化。死代码的存在既增大了生成的汇编代码体积,又降低了全局优化的效果,严重影响了 GPU运行速度。目前加快GPU运行速度的方法主要有以下几种(I)将只读数据布局于GPU常量存储空间来提高访存速度。(2)将频繁访问的数据布局于GPU片上共享存储器来提高访存速度。(3 ...
【技术保护点】
一种通过死代码移除来加快GPU运行速度的方法,其特征在于包括以下步骤:第一步、为大规模GPU核心程序中的所有函数构建状态检测表,状态检测表的表项数为GPU核心程序中函数的个数;状态检测表共包含六个字段,分别为:函数编号ID、函数名称Name、调用标记Callee、静态分析标记Static、动态执行标记Dynamic和删除标记Del;函数编号ID为函数的全局唯一标记,函数名称Name表示函数的名字;调用标记Callee表示函数是否被程序调用,调用标记Callee为true表示函数被程序调用过,Callee为false表示函数没有被程序调用过;静态分析标记Static表示对函数 ...
【技术特征摘要】
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表明函数代码段不是死代码不应删除;第二步、记录函数基本信息扫描程序代码,从O开始给GPU核心程序中每个函数代码段分配唯一函数编号并将分配的函数编号写入状态检测表的ID字段中,并将函数编号为q 的函数名记录于ID字段为q的状态检测表的表项的Name字段中;对于有N个函数的GPU 核心程序,则状态检测表有N个表项,N个表项的ID字段为O N-1,O < 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对应的字...
【专利技术属性】
技术研发人员:迟利华,刘杰,胡庆丰,晏益慧,龚春叶,甘新标,徐涵,蒋杰,杨博,
申请(专利权)人:中国人民解放军国防科学技术大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。