代码处理方法和设备技术

技术编号:24019707 阅读:74 留言:0更新日期:2020-05-02 04:49
本发明专利技术实施例提供了一种代码处理方法和代码处理设备,该代码处理方法,包括:获取待执行代码,所述待执行代码包括第一分支代码和第二分支代码,所述第一分支代码包括第三分支代码和第四分支代码,所述第二分支代码和所述第三分支代码包括相同的第一执行逻辑,所述第四分支代码不包括所述第一执行逻辑;获取目标条件判断式;提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑;使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,所述目标条件判断式用于在所述第五分支代码中控制所述第一执行逻辑的执行。在该待执行代码中第一执行逻辑的数量由两份减少为一份,减少了待执行代码中的冗余代码。

Code handling methods and equipment

【技术实现步骤摘要】
【国外来华专利技术】代码处理方法和设备
本专利技术实施例涉及数据处理领域,尤其涉及一种代码处理方法和代码处理设备。
技术介绍
图形处理器(graphics processing unit,GPU)在接收到内核启动调用时,会创建大量的线程,例如,64或者32个线程可组成一个线程束,在开放运算语言(Open Computing Language,OpenCL)中线程束称之为Wavefront(简称wave),在计算统一设备架构(Compute Unified Device Architecture,CUDA)中线程束称之为warp。线程束中的线程绑定在一起执行,每一时刻都执行统一的指令。当线程束中的线程遇到分支且判断条件不唯一的时候,由于指令的统一性,该线程束需要串行执行其成员线程对应的分支,这被称为分支分歧问题。此时,每条分支的支路都是全部线程一起执行,但是与当前执行的支路无关的线程运行的结果会被舍弃,从而降低了并行度以及执行的效率。现有解决分支分歧问题的方案有代码取同方案,该方案将位于同一if语句下的两条分支上相同的指令提取到该两条分支之外,以减少由于分歧造成串行时对指令重复的运算。然而,对互斥的两条分支,例如位于不同的if语句下的两条分支,即使存在可取同的指令,现有的代码取同方案对此不作处理,从而对代码的优化效果仍不够理想,GPU在遇到分支分歧时仍需串行执行较长的冗余代码。
技术实现思路
本专利技术实施例提供了一种代码处理方法和代码处理设备,用于减少代码中的冗余代码。本专利技术实施例的第一方面提供一种代码处理方法,包括:获取待执行代码,其中,待执行代码包括第一分支代码和第二分支代码,第一分支代码包括第三分支代码和第四分支代码,第二分支代码和第三分支代码包括相同的第一执行逻辑,第四分支代码不包括第一执行逻辑,该第二分支代码和第三分支代码为互斥的分支代码,该第二分支代码和该第三分支代码需串行执行时,第一执行逻辑被执行了两次,该第一执行逻辑为冗余的代码。为了减少冗余代码,减少对第一执行逻辑的重复执行,获取目标条件判断式,以及提取第二分支代码和第三分支代码中的第一执行逻辑,从而提取第一执行逻辑后,第二分支代码和第三分支代码不包括第一执行逻辑。然后,使用目标条件判断式和第一执行逻辑生成第五分支代码,目标条件判断式用于在第五分支代码中控制第一执行逻辑的执行。这样,因第一执行逻辑的提取,在第二分支代码和第三分支代码中不包括第一执行逻辑,而在生成的第五分支代码中包括该第一执行逻辑,使得在该待执行代码中保留了第一执行逻辑,且在该待执行代码中第一执行逻辑的数量由两份减少为一份,减少了待执行代码中的冗余代码。结合本专利技术实施例的第一方面,在本专利技术实施例的第一方面的第一种实现方式中,提取第二分支代码和第三分支代码中的第一执行逻辑之前,本实现方式的方法还包括:判断开销时间是否小于第一节约时间,其中,开销时间表示目标条件判断式产生的执行时间,第一节约时间表示执行第一执行逻辑所需的时间。从第二分支代码和第三分支代码中提取第一执行逻辑后,虽然减少了冗余代码,但是生成第五分支代码使用的目标条件判断式会产生执行时间,从而待执行代码生成第五分支代码后所需的执行时间可能长也可能短。若开销时间小于第一节约时间,表示待执行代码生成第五分支代码后所需的执行时间比未提取第一执行逻辑的待执行代码所需的执行时间段,则执行提取第二分支代码和第三分支代码中的第一执行逻辑的步骤。这样,本实现方式当开销时间小于第一节约时间时,才执行提取第二分支代码和第三分支代码中的第一执行逻辑的步骤,不但能减少待执行代码的冗余代码,还能减少待执行代码所需的执行时间。结合本专利技术实施例的第一方面的第一种实现方式,在本专利技术实施例的第一方面的第二种实现方式中,判断开销时间是否小于第一节约时间,包括:计算目标条件判断式的代码长度和第一执行逻辑的代码长度,然后,判断目标条件判断式的代码长度是否小于第一执行逻辑的代码长度。第一执行逻辑和目标条件判断式也是代码,代码的执行需要时间,代码长度长的代码所需的执行时间往往大于代码长度短的代码所需的执行时间。从而,目标条件判断式的代码长度小于第一执行逻辑的代码长度表示开销时间小于第一节约时间。通过将时间的比较转化为代码长度的比较,因代码的长度容易判断,从而可以简化判断的执行。结合本专利技术实施例的第一方面的第一种实现方式,在本专利技术实施例的第一方面的第三种实现方式中,判断开销时间是否小于第一节约时间,包括:计算目标条件判断式使用的寄存器数量,然后,判断目标条件判断式使用的寄存器数量是否小于预设寄存器数量阈值,因目标条件判断式可能使用到寄存器,若寄存器使用的数量超过寄存器数量阈值,则会减少每个CU/SM上的workgroup数目,造成性能损失,若目标条件判断式使用的寄存器数量小于预设寄存器数量阈值,造成的性能损失较小,从而,目标条件判断式使用的寄存器数量小于预设寄存器数量阈值表示开销时间小于第一节约时间。通过将时间的比较转化为寄存器数量的判断,因使用的寄存器的数量易于确定,从而可以简化判断的执行。结合本专利技术实施例的第一方面、本专利技术实施例的第一方面的第一种至第三种实现方式中的任意一种,在本专利技术实施例的第一方面的第四种实现方式中,获取目标条件判断式,包括:在第二分支代码和第三分支代码中的第一执行逻辑所在的位置处,分别设置标识符,其中,标识符用于当标识符所在的分支代码中的控制第一执行逻辑执行的条件判断式满足时设定特定值。标识符可以记录在该标识符所在的分支代码中,控制第一执行逻辑的执行的条件判断式的结果。其中,标识符例如可以为状态标志寄存器flag标志位或者整型变量。然后,使用第二分支代码的标识符和第三分支代码的标识符生成目标条件判断式。相应地,使用目标条件判断式和第一执行逻辑生成第五分支代码,包括:在第一分支代码和第二分支代码之后,使用目标条件判断式和第一执行逻辑生成第五分支代码,目标条件判断式用于当目标条件判断式的标识符满足前述特定值时,控制执行第一执行逻辑。换言之,若线程执行第五分支代码,若目标条件判断式的标识符满足特定值,则该线程执行第五分支代码的第一执行逻辑,若目标条件判断式的标识符不满足特定值,则该线程不执行第五分支代码的第一执行逻辑。这样,因标识符用于当标识符所在的分支代码中的控制第一执行逻辑执行的条件判断式满足时设定特定值,可以记录在该标识符所在的分支代码中,控制第一执行逻辑的执行的条件判断式的结果。在使用第二分支代码的标识符和第三分支代码的标识符生成目标条件判断式后,通过目标条件判断式即可确定第二分支代码和第三分支代码中的控制第一执行逻辑的执行的条件判断式的结果,因第五分支代码在第一分支代码和第二分支代码之后,从而第二分支代码和包括第三分支代码的第一分支代码先执行,在第五分支代码中,该目标条件判断式可以有效控制第一执行逻辑的执行。结合本专利技术实施例的第一方面、本专利技术实施例的第一方面的第一种至第三种实现方式中的任意一种,在本专利技术实施例的第一方面的第五种实现方式中,获取目本文档来自技高网...

【技术保护点】
一种代码处理方法,其特征在于,包括:/n获取待执行代码,所述待执行代码包括第一分支代码和第二分支代码,所述第一分支代码包括第三分支代码和第四分支代码,所述第二分支代码和所述第三分支代码包括相同的第一执行逻辑,所述第四分支代码不包括所述第一执行逻辑;/n获取目标条件判断式;/n提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑;/n使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,所述目标条件判断式用于在所述第五分支代码中控制所述第一执行逻辑的执行。/n

【技术特征摘要】
【国外来华专利技术】一种代码处理方法,其特征在于,包括:
获取待执行代码,所述待执行代码包括第一分支代码和第二分支代码,所述第一分支代码包括第三分支代码和第四分支代码,所述第二分支代码和所述第三分支代码包括相同的第一执行逻辑,所述第四分支代码不包括所述第一执行逻辑;
获取目标条件判断式;
提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑;
使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,所述目标条件判断式用于在所述第五分支代码中控制所述第一执行逻辑的执行。


根据权利要求1所述的方法,其特征在于,
所述提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑之前,所述方法还包括:
判断开销时间是否小于第一节约时间,所述开销时间表示所述目标条件判断式产生的执行时间,所述第一节约时间表示执行所述第一执行逻辑所需的时间;
若开销时间小于第一节约时间,则执行所述提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑的步骤。


根据权利要求2所述的方法,其特征在于,
所述判断开销时间是否小于第一节约时间,包括:
计算所述目标条件判断式的代码长度和所述第一执行逻辑的代码长度;
判断所述目标条件判断式的代码长度是否小于所述第一执行逻辑的代码长度,其中,所述目标条件判断式的代码长度小于所述第一执行逻辑的代码长度表示所述开销时间小于所述第一节约时间。


根据权利要求2所述的方法,其特征在于,
所述判断开销时间是否小于第一节约时间,包括:
计算所述目标条件判断式使用的寄存器数量;
判断所述目标条件判断式使用的寄存器数量是否小于预设寄存器数量阈值,其中,所述目标条件判断式使用的寄存器数量小于所述预设寄存器数量阈值表示所述开销时间小于所述第一节约时间。


根据权利要求1-4任一项所述的方法,其特征在于,
所述获取目标条件判断式,包括:
在所述第二分支代码和所述第三分支代码中的所述第一执行逻辑所在的位置处,分别设置标识符,所述标识符用于当标识符所在的分支代码中的控制所述第一执行逻辑执行的条件判断式满足时设定特定值;
使用所述第二分支代码的标识符和所述第三分支代码的标识符生成目标条件判断式;
所述使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,包括:
在所述第一分支代码和所述第二分支代码之后,使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,所述目标条件判断式用于当所述目标条件判断式的标识符满

足所述特定值时,控制执行所述第一执行逻辑。


根据权利要求1-4任一项所述的方法,其特征在于,
所述获取目标条件判断式,包括:
合并第一条件判断式和第二条件判断式,得到目标条件判断式,其中,所述第一条件判断式用于在所述第二分支代码中控制所述第一执行逻辑的执行,所述第二条件判断式用于在所述第三分支代码中控制所述第一执行逻辑的执行;
所述使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,包括:
在所述第一分支代码和所述第二分支代码之前,使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码。


根据权利要求1-6任一项所述的方法,其特征在于,
所述方法还包括:
将执行所述第二分支代码的线程和执行所述第三分支代码的线程设置在同一线程束中。


根据权利要求1-7任一项所述的方法,其特征在于,
所述第二分支代码和所述第四分支代码包括相同的第二执行逻辑;
所述提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑之前,所述方法还包括:
计算第一节约时间和第二节约时间,所述第一节约时间表示执行所述第一执行逻辑所需的时间,所述第二节约时间表示执行所述第二执行逻辑所需的时间;
所述提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑,包括:
当所述第一节约时间大于所述第二节约时间时,提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑。


根据权利要求1-8任一项所述的方法,其特征在于,
所述待执行代码为图形处理器GPU程序的内核代码,所述第一分支代码、所述第二分支代码、所述第三分支代码、所述第四分支代码、和所述第五分支代码为if语句的分支代码。


一种代码处理设备,其特征在于,包括:
第一获取单元,用于获取待执行代码,所述待执行代码包括第一分支代码和第二分支代码,所述第一分支代码包括第三分支代码和第四分支代码,所述第二分支代码和所述第三分支代码包括相同的第一执行逻辑,所述第四分支代码不包括所述第一执行...

【专利技术属性】
技术研发人员:林焕鑫王卓立马军超沈伟锋
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1