[发明专利]代码处理方法和设备有效
申请号: | 201780094772.8 | 申请日: | 2017-10-27 |
公开(公告)号: | CN111095197B | 公开(公告)日: | 2021-10-15 |
发明(设计)人: | 林焕鑫;王卓立;马军超;沈伟锋 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 处理 方法 设备 | ||
本发明实施例提供了一种代码处理方法和代码处理设备,该代码处理方法,包括:获取待执行代码,所述待执行代码包括第一分支代码和第二分支代码,所述第一分支代码包括第三分支代码和第四分支代码,所述第二分支代码和所述第三分支代码包括相同的第一执行逻辑,所述第四分支代码不包括所述第一执行逻辑;获取目标条件判断式;提取所述第二分支代码和所述第三分支代码中的所述第一执行逻辑;使用所述目标条件判断式和所述第一执行逻辑生成第五分支代码,所述目标条件判断式用于在所述第五分支代码中控制所述第一执行逻辑的执行。在该待执行代码中第一执行逻辑的数量由两份减少为一份,减少了待执行代码中的冗余代码。
技术领域
本发明实施例涉及数据处理领域,尤其涉及一种代码处理方法和代码处理设备。
背景技术
图形处理器(graphics processing unit,GPU)在接收到内核启动调用时,会创建大量的线程,例如,64或者32个线程可组成一个线程束,在开放运算语言(Open ComputingLanguage,OpenCL)中线程束称之为Wavefront(简称wave),在计算统一设备架构(ComputeUnified Device Architecture,CUDA)中线程束称之为warp。线程束中的线程绑定在一起执行,每一时刻都执行统一的指令。当线程束中的线程遇到分支且判断条件不唯一的时候,由于指令的统一性,该线程束需要串行执行其成员线程对应的分支,这被称为分支分歧问题。此时,每条分支的支路都是全部线程一起执行,但是与当前执行的支路无关的线程运行的结果会被舍弃,从而降低了并行度以及执行的效率。
现有解决分支分歧问题的方案有代码取同方案,该方案将位于同一if语句下的两条分支上相同的指令提取到该两条分支之外,以减少由于分歧造成串行时对指令重复的运算。
然而,对互斥的两条分支,例如位于不同的if语句下的两条分支,即使存在可取同的指令,现有的代码取同方案对此不作处理,从而对代码的优化效果仍不够理想,GPU在遇到分支分歧时仍需串行执行较长的冗余代码。
发明内容
本发明实施例提供了一种代码处理方法和代码处理设备,用于减少代码中的冗余代码。
本发明实施例的第一方面提供一种代码处理方法,包括:获取待执行代码,其中,待执行代码包括第一分支代码和第二分支代码,第一分支代码包括第三分支代码和第四分支代码,第二分支代码和第三分支代码包括相同的第一执行逻辑,第四分支代码不包括第一执行逻辑,该第二分支代码和第三分支代码为互斥的分支代码,该第二分支代码和该第三分支代码需串行执行时,第一执行逻辑被执行了两次,该第一执行逻辑为冗余的代码。为了减少冗余代码,减少对第一执行逻辑的重复执行,获取目标条件判断式,以及提取第二分支代码和第三分支代码中的第一执行逻辑,从而提取第一执行逻辑后,第二分支代码和第三分支代码不包括第一执行逻辑。然后,使用目标条件判断式和第一执行逻辑生成第五分支代码,目标条件判断式用于在第五分支代码中控制第一执行逻辑的执行。
这样,因第一执行逻辑的提取,在第二分支代码和第三分支代码中不包括第一执行逻辑,而在生成的第五分支代码中包括该第一执行逻辑,使得在该待执行代码中保留了第一执行逻辑,且在该待执行代码中第一执行逻辑的数量由两份减少为一份,减少了待执行代码中的冗余代码。
结合本发明实施例的第一方面,在本发明实施例的第一方面的第一种实现方式中,提取第二分支代码和第三分支代码中的第一执行逻辑之前,本实现方式的方法还包括:判断开销时间是否小于第一节约时间,其中,开销时间表示目标条件判断式产生的执行时间,第一节约时间表示执行第一执行逻辑所需的时间。从第二分支代码和第三分支代码中提取第一执行逻辑后,虽然减少了冗余代码,但是生成第五分支代码使用的目标条件判断式会产生执行时间,从而待执行代码生成第五分支代码后所需的执行时间可能长也可能短。若开销时间小于第一节约时间,表示待执行代码生成第五分支代码后所需的执行时间比未提取第一执行逻辑的待执行代码所需的执行时间段,则执行提取第二分支代码和第三分支代码中的第一执行逻辑的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201780094772.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于上行链路传输的方法和装置
- 下一篇:一种加载应用的方法及终端设备