【技术实现步骤摘要】
一种线程间冗余删除的异构编译优化方法
本专利技术涉及编译器的研发和优化技术,特别是涉及一种面向异构平台的线程间冗余删除编译优化技术。
技术介绍
随着摩尔定律的放缓、GPU等加速设备获得越来越多的高性能计算应用的支持,现代计算系统正在向装备有CPU和加速设备(如GPU或XeonPhi)的异构平台过渡,从全球TOP500超级计算机榜单上排名前三的皆是异构平台、异构平台数量超过100中可见一斑。异构系统通常由CPU与一个或多个加速设备在片上或主板上相互连接组成,其中CPU负责复杂的控制、调度等工作,而加速设备则负责大规模并行计算或专业领域的计算任务。当今市场上加速设备种类很多,每种类型的加速设备具有不同的特性,包括:CPU、GPU、协处理器、DSP(信号处理器)、ASIC(专用集成电路)、FPGA(现场可编程门阵列)等等。与异构系统相对应,异构程序亦由两部分组成——主机端代码和设备端代码(即kernel)组成,主机端代码通过提交命令来驱动设备进行并行计算,而并行执行的kernel代码是编译优化的重点。面向异构系统的编程模型,有只适用于特定异构系统的编程模型,比如NVIDIA的CUDA,微软提出的C++AMP,IBM的LIME,Intel提出的Merge等等;也有通用的编程模型,由KhronosGroup提出的OpenCL异构编程模型为不同的设备架构提供了统一接口,为异构计算提供了一个开放的、通用标准。OpenCL执行模型大致如下:当主机端代码提交kernel代码执行时,系统生成一个n维(n≤3)的索引空间NDRange,kernel代码被实例化成若干线程并且按照 ...
【技术保护点】
1.一种线程间冗余删除的异构编译优化方法,其特征在于,包括如下步骤:S1、获取Kernel源代码及Kernel执行信息;S2、对所述Kernel源代码及Kernel执行信息,以工作组为单位,分维度识别出候选冗余计算;S3、基于所述候选冗余计算分维度进行收益代价分析,得到每一维度的最优合并因子及其优化冗余的纯收益;S4、基于每一维度的最优合并因子及其优化冗余的纯收益确定总合并维度及总合并因子;S5、基于总合并维度及总合并因子,对Kernel代码进行线程优化冗余操作,合并线程,进行代码变换和优化;S6、输出优化后的源码形式的Kernel代码及中间文件形式的Kernel执行信息。
【技术特征摘要】
1.一种线程间冗余删除的异构编译优化方法,其特征在于,包括如下步骤:S1、获取Kernel源代码及Kernel执行信息;S2、对所述Kernel源代码及Kernel执行信息,以工作组为单位,分维度识别出候选冗余计算;S3、基于所述候选冗余计算分维度进行收益代价分析,得到每一维度的最优合并因子及其优化冗余的纯收益;S4、基于每一维度的最优合并因子及其优化冗余的纯收益确定总合并维度及总合并因子;S5、基于总合并维度及总合并因子,对Kernel代码进行线程优化冗余操作,合并线程,进行代码变换和优化;S6、输出优化后的源码形式的Kernel代码及中间文件形式的Kernel执行信息。2.根据权利要求1所述的一种线程间冗余删除的异构编译优化方法,其特征在于,所述步骤S2包括如下步骤:S21、以工作组为单位,分维度对Kernel代码的中间语言进行指令之间的依赖分析,得出依赖于每一维度线程的普通指令以及不依赖于该维度线程的普通指令;普通指令为同步指令以外的其他指令;S22、将不依赖于线程的普通指令视为该线程所在维度的候选冗余计算。3.根据权利要求2所述的一种线程间冗余删除的异构编译优化方法,其特征在于,所述步骤S3包括如下步骤:S31、在不同合并因子下,以工作组为单位,分维度计算优化冗余的收益;S32、结合硬件平台特征,以工作组为单位,在不同合并因子下,分维度计算优化冗余的代价;S33、针对同一工作组同一维度线程,在不同合并因子下,用步骤S31中计算的收益与步骤S32中计算的同一维度同一合并因子下的代价相减,得到该维度线程在不同合并因子下的纯收益,取其中最大纯收益所对应的合并因子作为该维度线程的最优合并因子;S34、重复步骤S31-S33,直至计算得到每一维度线程的最优合并因子及其对应的纯收益为止。4.根据权利要求3所述的一种线程间冗余删除的异构编译优化方法,其特征在于,所述步骤S4包括如下步骤:S41、获取每一维度线程的最优合并因子及其对应的纯收益;S42、对所有维度的最优合并因子对应的纯收益进行对比,选出纯收益最大者所对应的维度作为总合并维度,并将该维度的最优合并因子作为总合并因子。5.根据权利要求4所述的一种线程间冗余删除的异构编译优化方法,其特征在于,所述步骤S5包括如下步骤:S51、按照选出的总合并维度和总合并因子,对Kernel代码内依赖于总合并维度的普通指令逐条复制,复制的遍数为总合并因子减一,对不依赖于总合并维度的普通指令不做复制;并转换代码中对线程号的使用;S52、对复制后的指令中的相关变量做扩展或者更换变量名,避免变量冲突,得到变换后的新的Kernel代码;S53、根据总合并维度和总合并因子,相应修改主机端相关代码,包括分维度的线程总数和工作组内每一维线程数。6.根据权利要求3所述的一种线程间冗余删除的异构编译优化方法,其特征在于,在不同合并因子下,以工作组为单位,分维度计算优化冗余的收益时,不同合并因子下每一维度的收益为不依赖于该维度的所有普通指令在合并因子下做优化冗余操作时...
【专利技术属性】
技术研发人员:黄磊,刘颖,伍明川,洪锐,冯晓兵,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。