一种支持异构计算核架构的编译器实现方法和系统技术方案

技术编号:23470379 阅读:28 留言:0更新日期:2020-03-06 12:34
本发明专利技术公开了一种支持异构计算核架构的编译器实现方法,包括:将高级语言程序转化为中间表示代码;再将中间表示代码转化为机器码指令;根据机器码指令的类型,将不同类型的机器码指令映射至异构计算核架构中对应的计算核上执行,所述机器码指令包括通用指令、集群指令和线程指令;其中:对于集群指令,采用对应的自定义内建函数进行转换;对于通用指令和线程指令,采用开源编译器现有内建函数或指令进行转换。本发明专利技术能够自动处理多种类型的高级语言程序,将其依次转换成中间表示代码和最终可供执行的机器码指令,根据机器码指令的属性类型将其分发至不同的计算核上执行,避免通过系统总线传输数据,提高指令执行性能。

A compiler implementation method and system supporting heterogeneous computing core architecture

【技术实现步骤摘要】
一种支持异构计算核架构的编译器实现方法和系统
本专利技术涉及编译器软件
,具体而言涉及一种支持异构计算核架构的编译器实现方法和系统。
技术介绍
根据适用场景的不同,GPGPU指令可分为通用指令(GeneralInstruction)、集群指令(GroupInstruction)和线程指令。其中,集群指令是指多个线程操作同一组数据,并为多个线程产生输出,且这些输出之间存在关联。AI相关操作,如卷积、激活函数等相互联系紧密的操作属于这类指令。线程指令是指一组可以并行且独立执行的操作,如图形操作。通用指令是指不同线程有不同操作数和结果的操作,如一般数据类型的计算指令。假设有一段代码如图1所示,可根据上述标准分为上述三类指令序列。通用指令因其性质,适合由CPU执行;线程指令因其性质,适合由GPU执行;集群指令因其性质,适合由专用芯片(ASIC)执行。但是,将同一段指令的不同部分放在不同设备执行是一种低效方法,因为其中涉及数据传输开销和同步。目前亟需一种方法,能够将高级语言程序编译成支持异构计算核架构的机器码语言,以避免通过系统总线传输数据,提高指令执行性能。
技术实现思路
本专利技术目的在于提供一种支持异构计算核架构的编译器实现方法和系统,能够自动处理多种类型的高级语言程序,将其依次转换成中间表示代码和最终可供执行的机器码指令,根据机器码指令的属性类型将其分发至不同的计算核上执行,避免通过系统总线传输数据,提高指令执行性能。本专利技术不局限于高级程序语言的操作语句类型,对于AI相关操作,采用自定义内建函数进行处理,对于图形相关操作和一般数据操作,通过兼容现有开源编译器前端(如LLVMClang)进行处理,提高计算效率,减少开发量。为达成上述目的,结合图2,本专利技术提出一种支持异构计算核架构的编译器实现方法,所述方法包括:S1:将高级语言程序转化为中间表示代码;S2:再将中间表示代码转化为机器码指令;S3:根据机器码指令的类型,将不同类型的机器码指令映射至异构计算核架构中对应的计算核上执行,所述机器码指令包括通用指令、集群指令和线程指令;其中:对于集群指令,采用对应的自定义内建函数进行转换;对于通用指令和线程指令,采用开源编译器现有内建函数或指令进行转换。进一步的实施例中,步骤S1中,所述将高级语言程序转化为中间表示代码的过程包括:S11:针对AI操作语句的类型一一对应地创建自定义内建函数;S12:遍历高级语言程序,当检测到AI操作语句时,根据操作语句的类型调用对应的自定义内建函数,将该操作语句转换成包含有所述自定义内建函数的中间表示代码。进一步的实施例中,步骤S2中,所述将中间表示代码转化为机器码指令的过程包括:遍历中间表示代码,当检测到自定义内建函数时,通过指令选择过程将其映射成具有集群属性的机器码指令。进一步的实施例中,步骤S11中,所述针对AI操作语句的类型一一对应地创建对应的自定义内建函数的过程包括:步骤S11中,所述针对AI操作语句的类型一一对应地创建对应的自定义内建函数的过程包括:在目标描述文件中增加用于描述自定义内建函数的内存访问优化特性的自定义内建函数入口;所述自定义内建函数入口设置有签名,签名包括返回类型、参数类型和一组标志,标志用于提示对应的自定义内建函数在优化时的处理方式。进一步的实施例中,步骤S12中,遍历高级语言程序,当检测到图形相关数据的操作语句时,采用LLVMClang将该操作语句转换成对应的中间表示代码。进一步的实施例中,步骤S3中,所述根据机器码指令的类型,将不同类型的机器码指令映射至异构计算核架构中对应的计算核上执行的过程包括:遍历机器码指令,根据机器码指令的属性将不同类型的机器码指令分别调度至与之属性相同的已调度的机器码指令的临近位置,不同属性的已调度的机器码指令之间设置有界定指令;结合界定指令,采用硬件分发部件将不同属性的已调度的机器码指令映射至异构计算核架构中对应的计算核上执行。进一步的实施例中,所述集群指令分发至AICore上执行,所述通用指令分发至CPU上执行,所述线程指令分发至GPGPUCore上执行。进一步的实施例中,所述方法还包括:采用调度器对指令分发顺序和/或执行顺序进行调度。基于前述方法,本专利技术还提及一种支持异构计算核架构的编译器实现系统,所述系统包括:程序接收模块,用于接收外部输入的高级语言程序;第一转换模块,用于将高级语言程序转化为中间表示代码;第二转换模块,用于将中间表示代码转化为机器码指令;调度模块,用于遍历机器码指令,根据机器码指令的属性将不同类型的机器码指令分别调度至与之属性相同的已调度的机器码指令的临近位置,并且在不同属性的已调度的机器码指令之间设置界定指令;硬件分发部件,结合界定指令,将不同属性的已调度的机器码指令映射至异构计算核架构中对应的计算核上执行。自定义内建函数管理模块,用于创建和管理自定义内建函数,所述自定义内建函数与AI操作语句一一对应。以上本专利技术的技术方案,与现有相比,其显著的有益效果在于:(1)能够自动处理多种类型的高级语言程序,将其依次转换成中间表示代码和最终可供执行的机器码指令,根据机器码指令的属性类型将其分发至不同的计算核上执行,避免通过系统总线传输数据,提高指令执行性能。(2)本专利技术不局限于高级程序语言的操作语句类型,对于AI相关操作,采用自定义内建函数进行处理,对于图形相关操作和一般数据操作,通过兼容现有开源编译器前端(如LLVMClang)进行处理,提高计算效率,减少开发量。(3)采用的自定义内建函数可在中间标识代码中被调用,编译器后段遍历中间表示代码时,能够根据检测到自定义内建函数将对应的中间表示代码快速转换成对应的具有特定属性的机器码指令,并且快速将其调度到其他同种类的机器码指令的临近位置。(4)采用界定指令分隔开不同属性的机器码指令,便于硬件分发部件将所有机器码指令分发至对应的计算核。(5)采用调度器合理安排机器码分发顺序和执行顺序,提高整个程序的执行效率。应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的专利技术主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的专利技术主题的一部分。结合附图从下面的描述中可以更加全面地理解本专利技术教导的前述和其他方面、实施例和特征。本专利技术的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本专利技术教导的具体实施方式的实践中得知。附图说明附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本专利技术的各个方面的实施例,其中:图1是现有分设备执行代码的本文档来自技高网...

【技术保护点】
1.一种支持异构计算核架构的编译器实现方法,其特征在于,所述方法包括:/nS1:将高级语言程序转化为中间表示代码;/nS2:再将中间表示代码转化为机器码指令;/nS3:根据机器码指令的类型,将不同类型的机器码指令映射至异构计算核架构中对应的计算核上执行,所述机器码指令包括通用指令、集群指令和线程指令;/n其中:/n对于集群指令,采用对应的自定义内建函数进行转换;对于通用指令和线程指令,采用开源编译器的内建函数或指令进行转换。/n

【技术特征摘要】
1.一种支持异构计算核架构的编译器实现方法,其特征在于,所述方法包括:
S1:将高级语言程序转化为中间表示代码;
S2:再将中间表示代码转化为机器码指令;
S3:根据机器码指令的类型,将不同类型的机器码指令映射至异构计算核架构中对应的计算核上执行,所述机器码指令包括通用指令、集群指令和线程指令;
其中:
对于集群指令,采用对应的自定义内建函数进行转换;对于通用指令和线程指令,采用开源编译器的内建函数或指令进行转换。


2.根据权利要求1所述的支持异构计算核架构的编译器实现方法,其特征在于,步骤S1中,所述将高级语言程序转化为中间表示代码的过程包括:
S11:针对AI操作语句的类型一一对应地创建对应的自定义内建函数;
S12:遍历高级语言程序,当检测到AI操作语句时,根据操作语句的类型调用对应的自定义内建函数,将该操作语句转换成包含有所述自定义内建函数的中间表示代码。


3.根据权利要求2所述的支持异构计算核架构的编译器实现方法,其特征在于,步骤S2中,所述将中间表示代码转化为机器码指令的过程包括:
遍历中间表示代码,当检测到自定义内建函数时,通过指令选择过程将其映射成具有集群属性的机器码指令。


4.根据权利要求2所述的支持异构计算核架构的编译器实现方法,其特征在于,步骤S11中,所述针对AI操作语句的类型一一对应地创建对应的自定义内建函数的过程包括:
在目标描述文件中增加用于描述自定义内建函数的内存访问优化特性的自定义内建函数入口;
所述自定义内建函数入口设置有签名,签名包括返回类型、参数类型和一组标志,标志用于提示对应的自定义内建函数在优化时的处理方式。


5.根据权利要求1所述的支持异构计算核架构的编译器实现方法,其特征在于,步骤S12中,遍历高级语言程序,...

【专利技术属性】
技术研发人员:汪岩邵平平
申请(专利权)人:南京天数智芯科技有限公司
类型:发明
国别省市:江苏;32

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

1