【技术实现步骤摘要】
【国外来华专利技术】代码处理方法和设备
本专利技术实施例涉及数据处理领域,尤其涉及一种代码处理方法和代码处理设备。
技术介绍
图形处理器(graphics processing unit,GPU)在接收到内核启动调用时,会创建大量的线程,例如,64或者32个线程可组成一个线程束,在开放运算语言(Open Computing Language,OpenCL)中线程束称之为Wavefront(简称wave),在计算统一设备架构(Compute Unified Device Architecture,CUDA)中线程束称之为warp。线程束中的线程绑定在一起执行,每一时刻都执行统一的指令。当线程束中的线程遇到分支且判断条件不唯一的时候,由于指令的统一性,该线程束需要串行执行其成员线程对应的分支,这被称为分支分歧问题。此时,每条分支的支路都是全部线程一起执行,但是与当前执行的支路无关的线程运行的结果会被舍弃,从而降低了并行度以及执行的效率。现有解决分支分歧问题的方案有代码取同方案,该方案将位于同一if语句下的两条分支上相同的指令提取到该两条分支之外,以减少由于分歧造成串行时对指令重复的运算。然而,对互斥的两条分支,例如位于不同的if语句下的两条分支,即使存在可取同的指令,现有的代码取同方案对此不作处理,从而对代码的优化效果仍不够理想,GPU在遇到分支分歧时仍需串行执行较长的冗余代码。
技术实现思路
本专利技术实施例提供了一种代码处理方法和代码处理设备,用于减少代码中的冗余代码。本专利技术实施例的第一方面提供一种代码处 ...
【技术保护点】
一种代码处理方法,其特征在于,包括:/n获取待执行代码,所述待执行代码包括第一分支代码和第二分支代码,所述第一分支代码包括第三分支代码和第四分支代码,所述第二分支代码和所述第三分支代码包括相同的第一执行逻辑,所述第四分支代码不包括所述第一执行逻辑;/n获取目标条件判断式;/n提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑;/n使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,所述目标条件判断式用于在所述第五分支代码中控制所述第一执行逻辑的执行。/n
【技术特征摘要】
【国外来华专利技术】一种代码处理方法,其特征在于,包括:
获取待执行代码,所述待执行代码包括第一分支代码和第二分支代码,所述第一分支代码包括第三分支代码和第四分支代码,所述第二分支代码和所述第三分支代码包括相同的第一执行逻辑,所述第四分支代码不包括所述第一执行逻辑;
获取目标条件判断式;
提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑;
使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,所述目标条件判断式用于在所述第五分支代码中控制所述第一执行逻辑的执行。
根据权利要求1所述的方法,其特征在于,
所述提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑之前,所述方法还包括:
判断开销时间是否小于第一节约时间,所述开销时间表示所述目标条件判断式产生的执行时间,所述第一节约时间表示执行所述第一执行逻辑所需的时间;
若开销时间小于第一节约时间,则执行所述提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑的步骤。
根据权利要求2所述的方法,其特征在于,
所述判断开销时间是否小于第一节约时间,包括:
计算所述目标条件判断式的代码长度和所述第一执行逻辑的代码长度;
判断所述目标条件判断式的代码长度是否小于所述第一执行逻辑的代码长度,其中,所述目标条件判断式的代码长度小于所述第一执行逻辑的代码长度表示所述开销时间小于所述第一节约时间。
根据权利要求2所述的方法,其特征在于,
所述判断开销时间是否小于第一节约时间,包括:
计算所述目标条件判断式使用的寄存器数量;
判断所述目标条件判断式使用的寄存器数量是否小于预设寄存器数量阈值,其中,所述目标条件判断式使用的寄存器数量小于所述预设寄存器数量阈值表示所述开销时间小于所述第一节约时间。
根据权利要求1-4任一项所述的方法,其特征在于,
所述获取目标条件判断式,包括:
在所述第二分支代码和所述第三分支代码中的所述第一执行逻辑所在的位置处,分别设置标识符,所述标识符用于当标识符所在的分支代码中的控制所述第一执行逻辑执行的条件判断式满足时设定特定值;
使用所述第二分支代码的标识符和所述第三分支代码的标识符生成目标条件判断式;
所述使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,包括:
在所述第一分支代码和所述第二分支代码之后,使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,所述目标条件判断式用于当所述目标条件判断式的标识符满
足所述特定值时,控制执行所述第一执行逻辑。
根据权利要求1-4任一项所述的方法,其特征在于,
所述获取目标条件判断式,包括:
合并第一条件判断式和第二条件判断式,得到目标条件判断式,其中,所述第一条件判断式用于在所述第二分支代码中控制所述第一执行逻辑的执行,所述第二条件判断式用于在所述第三分支代码中控制所述第一执行逻辑的执行;
所述使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,包括:
在所述第一分支代码和所述第二分支代码之前,使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码。
根据权利要求1-6任一项所述的方法,其特征在于,
所述方法还包括:
将执行所述第二分支代码的线程和执行所述第三分支代码的线程设置在同一线程束中。
根据权利要求1-7任一项所述的方法,其特征在于,
所述第二分支代码和所述第四分支代码包括相同的第二执行逻辑;
所述提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑之前,所述方法还包括:
计算第一节约时间和第二节约时间,所述第一节约时间表示执行所述第一执行逻辑所需的时间,所述第二节约时间表示执行所述第二执行逻辑所需的时间;
所述提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑,包括:
当所述第一节约时间大于所述第二节约时间时,提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑。
根据权利要求1-8任一项所述的方法,其特征在于,
所述待执行代码为图形处理器GPU程序的内核代码,所述第一分支代码、所述第二分支代码、所述第三分支代码、所述第四分支代码、和所述第五分支代码为if语句的分支代码。
一种代码处理设备,其特征在于,包括:
第一获取单元,用于获取待执行代码,所述待执行代码包括第一分支代码和第二分支代码,所述第一分支代码包括第三分支代码和第四分支代码,所述第二分支代码和所述第三分支代码包括相同的第一执行逻辑,所述第四分支代码不包括所述第一执行...
【专利技术属性】
技术研发人员:林焕鑫,王卓立,马军超,沈伟锋,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。