用于编译器优化的存储器参考元数据制造技术

技术编号:14057902 阅读:38 留言:0更新日期:2016-11-27 10:05
本发明专利技术涉及一种设备,其包含存储器和编译处理器,编译处理器经配置以:通过由在编译处理器上执行的编译器和运行时间组成的群组中的至少一者产生用于执行经编译内核的自变量;通过由在编译处理器上执行的群组中的至少一者确定对自变量的第一存储器区的第一存储器参考和对自变量的第二存储器区的第二存储器参考是否参考同一存储器区;通过群组中的至少一者基于确定而产生与第一存储器参考和第二存储器参考相关联的元数据,其中元数据指示第一存储器区与第二存储器区之间的关系。编译器和运行时间中的至少一者可基于元数据而重新编译内核,且指示目标处理器执行经重新编译的内核。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及编译内核的源代码,且更具体地说涉及用于编译用于存储器存取的内核的源代码的技术。
技术介绍
已存在朝向所谓的异构计算架构的趋势。在异构计算架构中,称为内核的程序可使用框架来进行编译,使得例如CPU(中央处理单元)、GPU(图形处理单元)、FPGA(现场可编程门阵列)等多种不同类型的处理器可执行所述内核。最近的支持异构计算的框架包含OpenCL框架以及DirectCompute框架。
技术实现思路
本专利技术描述用于检测内核中的存储器参考的存储器混叠和存储器重叠以便产生用于编译优化的元数据的技术。为了执行本专利技术的技术,例如及时编译器(JIT)等编译器将程序的源代码(也被称作“内核”)编译为二进制文件。执行编译器的编译处理器可在运行时间(当编译处理器产生执行内核所需要的自变量时)使用例如OpenCL等异构计算框架编译所述内核。在本专利技术中描述的技术中,驱动程序分析在缓冲器中一起传递的将传递到将执行内核的目标处理器的自变量,而不是指示目标处理器使用所产生自变量执行内核。基于所述分析,驱动程序/运行时间产生指示第一存储器参考与第二存储器参考之间的关系(例如,第一存储器参考和第二存储器参考的存储器区是否重叠、重叠达何种范围等)的元数据。如果存储器区是不相同的,那么编译处理器可使用编译器基于元数据且使用例如循环展开等更积极的编译技术而重新编译内核。驱动程序也可以能够确定内核的存储器存取重叠达何种范围,且可基于存储器重叠量使用更积极的技术重新编译内核。以此方式,本专利技术的技术可增加使用及时编译器编译的内核的执行性能。在一个实例中,本专利技术描述一种方法,其包括:通过由在编译处理器上执行的编译器和运行时间组成的群组中的至少一者产生用于执行经编译内核的二进制代码的自变量;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定对所述内核自变量的第一存储器区的第一存储器参考和对所述内核自变量的第二存储器区的第二存储器参考是否参考同一存储器区;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述确定而产生与所述第一存储器参考和所述第二存储器参考相关联的元数据。所述元数据可指示所述第一存储器区与所述第二存储器区之间的关系。所述方法进一步包含响应于通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的第一和第二存储器参考并不参考所述同一存储器区而进行以下操作:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者致使编译器基于所述元数据而重新编译所述内核;以及通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者指示目标处理器执行所述经重新编译的内核。在另一实例中,本专利技术描述一种装置,其包含存储器和编译处理器,所述编译处理器经配置以:通过由在所述编译处理器上执行的编译器和运行时间组成的群组中的至少一者产生用于执行经编译内核的二进制代码的自变量;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定对所述内核自变量的第一存储器区的第一存储器参考和对所述内核自变量的第二存储器区的第二存储器参考是否参考同一存储器区;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述确定而产生与所述第一存储器参考和所述第二存储器参考相关联的元数据。所述元数据可指示所述第一存储器区与所述第二存储器区之间的关系,且响应于通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的第一和第二存储器参考并不参考所述同一存储器区,所述编译处理器进一步经配置以:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者致使编译器基于所述元数据而重新编译所述内核;以及通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者指示目标处理器执行所述经重新编译的内核。在另一实例中,本专利技术描述一种存储指令的非暂时性计算机可读存储媒体,所述指令当执行时致使编译处理器进行以下操作:通过由在所述编译处理器上执行的编译器和运行时间组成的群组中的至少一者产生用于执行经编译内核的二进制代码的自变量;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定对所述内核自变量的第一存储器区的第一存储器参考和对所述内核自变量的第二存储器区的第二存储器参考是否参考同一存储器区;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述确定而产生与所述第一存储器参考和所述第二存储器参考相关联的元数据。所述元数据指示第一存储器区与第二存储器区之间的关系,且响应于通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的第一和第二存储器参考并不参考所述同一存储器区,所述编译处理器可进一步经配置以执行致使所述编译处理器进行以下操作的指令:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者致使编译器基于所述元数据而重新编译所述内核;以及通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者指示目标处理器执行所述经重新编译的内核。在附图和下文描述中陈述本专利技术的一或多个实例的细节。本专利技术的其它特征、目标和优点将从所述描述和图式以及权利要求书而显而易见。附图说明图1是说明根据本专利技术的技术的支持混叠分析以辅助编译优化的实例计算装置的框图。图2是说明根据本专利技术的技术的可执行内核的处理器的一或多个着色器核心的多个处理元件的概念图。图3A是说明根据本专利技术的技术的包含当执行时可造成混叠的代码的内核代码的概念图。图3B是说明根据本专利技术的技术配置的编译器可能够检测的混叠的实例的概念图。图3C是说明根据本专利技术的技术配置的编译器可能够检测的不重叠存储器参考的实例的概念图。图3D是说明根据本专利技术的技术配置的驱动程序/运行时间可检测的重叠存储器参考的概念图。图4A是说明根据本专利技术的技术的循环展开的概念图。图4B是说明根据本专利技术的技术的代码重排序的概念图。图4C是说明根据本专利技术的技术的代码向量化的概念图。图5是根据本专利技术的技术用于产生编译器元数据以辅助编译器优化的实例方法的流程图。具体实施方式如上文简要地描述,当前在开发各种异构计算框架。异构计算框架的一些实例包含当前由Khronos集团开发的OpenCLTM框架以及当前由开发的DirectCompute框架。异构计算框架允许单个程序或“内核”在多种不同处理器上执行,例如CPU(中央处理单元)、GPU(图形处理单元)、FPGA(现场可编程门阵列)、DSP(数字信号处理器)等。为了准备内核用于执行,在本专利技术中称为编译处理器的处理器编译内核源代码以产生将由目标处理器执行的二进制代码。目标处理器可为同一处理器或不同于目标处理器。编译处理器使用的编译器的一个实例称为及时编译(JIT)编译器。JIT编译器在执行时间(也被称作运行时间)编译源代码,而不是在执行之前编译(有时称为“本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201580016245.html" title="用于编译器优化的存储器参考元数据原文来自X技术">用于编译器优化的存储器参考元数据</a>

【技术保护点】
一种编译用于执行的内核的方法,其包括:通过由在编译处理器上执行的编译器和运行时间组成的群组中的至少一者产生用于执行经编译内核的二进制代码的自变量;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定对所述内核自变量的第一存储器区的第一存储器参考和对所述内核自变量的第二存储器区的第二存储器参考是否参考同一存储器区;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述确定而产生与所述第一存储器参考和所述第二存储器参考相关联的元数据,其中所述元数据指示所述第一存储器区与所述第二存储器区之间的关系;以及响应于通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的第一和第二存储器参考并不参考所述同一存储器区而进行以下操作:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者致使编译器基于所述元数据而重新编译所述内核;以及通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者指示目标处理器执行所述经重新编译的内核。

【技术特征摘要】
【国外来华专利技术】2014.04.04 US 14/245,9461.一种编译用于执行的内核的方法,其包括:通过由在编译处理器上执行的编译器和运行时间组成的群组中的至少一者产生用于执行经编译内核的二进制代码的自变量;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定对所述内核自变量的第一存储器区的第一存储器参考和对所述内核自变量的第二存储器区的第二存储器参考是否参考同一存储器区;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述确定而产生与所述第一存储器参考和所述第二存储器参考相关联的元数据,其中所述元数据指示所述第一存储器区与所述第二存储器区之间的关系;以及响应于通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的第一和第二存储器参考并不参考所述同一存储器区而进行以下操作:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者致使编译器基于所述元数据而重新编译所述内核;以及通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者指示目标处理器执行所述经重新编译的内核。2.根据权利要求1所述的方法,其中确定所述内核的所述第一存储器参考和所述第二存储器参考是否参考所述同一存储器区进一步包括:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的包含所述第一和第二存储器参考的循环代码区段,其中重新编译所述内核包括:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述产生的元数据而展开所述循环代码区段,且编译所述展开的循环代码区段。3.根据权利要求1所述的方法,其中确定所述内核的所述第一存储器参考和所述第二存储器参考是否参考所述同一存储器区进一步包括:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的包含所述第一和第二存储器参考的代码区段,其中重新编译所述内核进一步包括:响应于确定所述代码区段的所述第一和第二存储器参考并不参考所述同一存储器区,通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述产生的元数据而重排序所述代码区段的加载操作和存储操作中的至少一者。4.根据权利要求1所述的方法,其中确定所述内核的所述第一存储器参考和所述第二存储器参考是否参考所述同一存储器区进一步包括:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的包含所述第一和第二存储器参考的代码区段,其中重新编译所述内核进一步包括:响应于确定所述代码区段的所述第一和第二存储器参考并不参考所述同一存储器区,通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述产生的元数据而将所述代码区段的多个标量指令向量化为至少一个向量指令。5.根据权利要求1所述的方法,其中所述元数据进一步指示所述第一存储器区与所述第二存储器区之间的重叠区。6.根据权利要求5所述的方法,其中所述元数据包含所述第一存储器区与所述第二存储器区之间的重叠的字节数目。7.根据权利要求5所述的方法,其中所述元数据进一步包括所述存储器重叠区的起始地址和所述存储器重叠区的结束地址中的至少一者。8.根据权利要求1所述的方法,其中所述编译处理器包括中央处理单元CPU,且所述目标处理器包括图形处理单元GPU。9.根据权利要求1所述的方法,其中所述编译器使用包括微软DirectCompute和OpenCL中的至少一者的异构计算框架来重新编译所述内核。10.根据权利要求1所述的方法,其中所述内核自变量包括为所述自变量分配的存储器的缓冲器区域。11.一种装置,其包括:存储器;以及编译处理器,其经配置以:通过由在所述编译处理器上执行的编译器和运行时间组成的群组中的至少一者产生用于执行经编译内核的二进制代码的自变量;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定对所述内核自变量的第一存储器区的第一存储器参考和对所述内核自变量的第二存储器区的第二存储器参考是否参考同一存储器区;通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述确定而产生与所述第一存储器参考和所述第二存储器参考相关联的元数据,其中所述元数据指示所述第一存储器区与所述第二存储器区之间的关系;以及响应于通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的第一和第二存储器参考并不参考所述同一存储器区而进行以下操作:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者致使编译器基于所述元数据而重新编译所述内核;以及通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者指示目标处理器执行所述经重新编译的内核。12.根据权利要求11所述的装置,其中为了确定所述内核的所述第一存储器参考和所述第二存储器参考是否参考所述同一存储器区,所述编译处理器进一步经配置以:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的包含所述第一和第二存储器参考的循环代码区段,其中为了重新编译所述内核,所述编译处理器进一步经配置以:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者基于所述产生的元数据而展开所述循环代码区段,且编译所述展开的循环代码区段。13.根据权利要求11所述的装置,其中为了确定所述内核的所述第一存储器参考和所述第二存储器参考是否参考所述同一存储器区,所述编译处理器进一步经配置以:通过由在所述编译处理器上执行的所述编译器和所述运行时间组成的所述群组中的所述至少一者确定所述内核的包含所述第一和第二存储器参考的代码区段,其中为了重新编译所述内核,所述编译处理器进一步经配置以:响应于确定所述代码区段的所述第一和第二存储器参考并不参考所述同一存储器区,通过由在所述编译处理器上执行的所述编译器和所述运行时间组成...

【专利技术属性】
技术研发人员:C·C·利姆D·S·布拉克曼
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:美国;US

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

1