基于张量的编译方法技术

技术编号:39492689 阅读:4 留言:0更新日期:2023-11-24 11:18
本公开涉及一种基于张量的编译方法及其相关产品,其中该相关产品包括设备和计算机可读存储介质

【技术实现步骤摘要】
基于张量的编译方法、设备及其计算机可读存储介质


[0001]本公开一般地涉及程序编译领域

更具体地,本公开涉及一种基于张量的编译方法

用于执行前述方法的设备和计算机可读存储介质


技术介绍

[0002]常量传播是现代编译器中使用最广泛的优化方法之一,它通常应用于高级中间表达
(“Intermediate Representation”,
IR)。
通过常量传播,可以解决在运行时静态检测表达式是否总是求值为唯一常数的问题

如果在调用过程时知道哪些变量将具有常量值,以及这些值将是什么,则编译器可以在编译期间简化常数

常量传播算法通常有简单常量传播
(“Simple Constant Propagation”)、
稀疏简单常量传播
(“Sparse Simple Constant Propagation”)、
条件常量传播
(“Condition Constant Propagation”)
和稀疏条件常量传播
(“Sparse Condition Constant Propagation”)。
[0003]尽管上述的常量传播方案对于编译操作具有优化的作用,但这些传统编译技术是应用于传统编程语言和编程模型的
(

C
语言或
C++
语言等
)
,其仅适用于标量的处理
r/>也就是说,现有的编译技术无法应用于张量的处理

鉴于此,如何实现张量在中间表达中的传播成为亟需解决的技术问题


技术实现思路

[0004]鉴于上述
技术介绍
部分所提及的技术问题,本公开提出一种用于针对于张量的编译方法

利用本公开的方案,可以在编译的中间表达阶段实现张量的全局传播,也即中间表达内的所有基本块
(“basic block

BB”)
范围内的传播

从而有效减少编译期间的编译处理复杂度并对编译操作进行显著的优化

为此,本公开在如下的多个方面中提供解决用于编译期间的张量传播的方案

[0005]在第一方面中,本公开提供了一种基于张量的编译方法,包括:设置基于张量数据属性的数据结构,以用于编译的中间表达的张量全局传播,其中所述张量全局传播与所述中间表达阶段的所有基本块相关;以及执行一个或多个创建语句来创建包含所述数据结构的目标张量寄存器,以便实现编译中的张量全局传播

[0006]在第二方面中,本公开提供了一种基于张量的编译的设备,包括:处理器;以及存储器,其存储有用于对张量进行编译的计算机程序指令,当所述计算机程序指令由处理器执行时,使得实现上文的方法及其下文将讨论到的多个实施例

[0007]在第三方面中,本公开提供了一种计算机可读存储介质,其存储有基于张量进行编译的计算机程序指令,当所述计算机程序指令由处理器执行时,使得实现上文的方法及其下文将讨论到的多个实施例

[0008]通过本公开如上多个方面中所提供的编译方案,特别是通过执行针对于张量的一个或多个创建语句,可以在编译的中间表达阶段创建与张量相关的目标张量寄存器,即而可以通过对目标张量寄存器中数据结构的读取和操作来实现在编译阶段对张量数据在中
间表达内所有基本块范围内的传播

由此,编译器可以直接对目标张量寄存器所关联的张量进行操作而不需要在代码执行时才操作,从而优化代码和编译操作并适配涉及张量操作的编程模型

进一步,本公开跳过了将参数存储到寄存器中,待使用时再从寄存器中读取参数的步骤,从而基于本公开的多个创建语句的设置,可以在编译过程中消除多余的指令,特别是与张量迁移相关的指令数量

基于此,本公开的方案可以极大的减少冗余指令的产生,从而提高用户程序的整体性能

附图说明
[0009]通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的

特征和优点将变得易于理解

在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
[0010]图1是示出根据本公开实施例的板卡的结构图;
[0011]图2是示出根据本公开实施例的组合处理装置的结构图;
[0012]图3是示出根据本公开实施例的计算装置的内部结构示意图;
[0013]图4是示出根据本公开实施例的处理器核的内部结构示意图;
[0014]图5是示出根据本公开实施例的不同集群的处理器核间的数据写入过程示意图;
[0015]图6是示出根据本公开实施例的数据流编程的软硬件架构的结构示意图;
[0016]图7是示出根据本公开实施例的用于张量的编译方法的简化流程图;
[0017]图8是示出根据本公开实施例的张量寄存器的示意图;
[0018]图9是示出根据本公开实施例的部分创建语句的处理的示例性流程图;
[0019]图
10
是示出根据本公开实施例的另一部分创建语句的处理的示例性流程图;
[0020]图
11
是示出根据本公开实施例的使用语句的处理的示例性流程图;以及
[0021]图
12
是示出根据本公开实施例的用于张量的编译方法的详细示例性流程图

具体实施方式
[0022]下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行清楚

完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式

基于本公开中的实施方式,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围

[0023]应当理解,本公开的权利要求

说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序

本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征

整体

步骤

操作

元素和
/
或组件的存在,但并不排除一个或多个其它特征

整体

步骤

操作

元素

组件和
/
或其集合的存在或添加

[0024]还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施方式的目的,而并不意在限定本公开

如在本公开说明书和权利要求本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种基于张量的编译方法,包括:设置基于张量数据属性的数据结构,以用于编译的中间表达的张量全局传播,其中所述张量全局传播与所述中间表达阶段的所有基本块相关;以及执行一个或多个创建语句来创建包含所述数据结构的目标张量寄存器,以便实现编译中的张量全局传播
。2.
根据权利要求1所述的编译方法,其中所述张量数据属性包括张量数据的地址信息和维度信息
。3.
根据权利要求2所述的编译方法,其中所述地址信息包括张量数据的起始物理地址,所述维度信息包括张量数据的各维度大小

各维度的起始位置和各维度间的物理地址间隔
。4.
根据权利要求1‑3的任意一项所述的编译方法,其中所述数据结构包括与所述张量数据属性关联的参数

参数有效位和标识
。5.
根据权利要求1所述的编译方法,还包括:基于所述数据结构的标识执行使用语句,以便使用创建的张量寄存器来执行不同张量寄存器间的张量运算
。6.
根据权利要求1所述的编译方法,其中所述创建语句包括以下的一种或多种创建语句:第一创建语句,其用于创建目标张量寄存器;第二创建语句,其用于将特定的存储区域处的张量寄存器所关联的张量数据赋给目标张量寄存器,以创建出目标张量寄存器;第三创建语句,其用于根据预定的张量维度信息和源张量寄存器对张量数据执行切分,以创建出目标张量寄存器;以及第四创建语句,其用于将源张量寄存器的数据结构赋给目标张量寄存器,以创建出所述目标张量寄存器
。7.
根据权利要求6所述的编译方法,还包括:遍历中间表达的所有基本块中的第一创建语句,以便创建目标张量寄存器;以及将所述目标张量寄存器中数据结构的标识与所述第一创建语句中的属性标识项相关联
。8.
根据权利要求6所述的编译方法,还包括:遍历中间表达的所有基本块中的第二创建语句,以便创建目标张量寄存器;以及将所述目标张量寄存器中数据结构的标识设置为未知或无效
。9.
根据权利要求7或8所述的编译方法,还包括:遍历中间表达的所有基本块中的第三创建语句,以便创建目标张量寄存器;以及将所述目标张量寄存器中数据结构的标识与所述第三创建语句中的属性标识项相关联
。10.
根据权利要求9所述的编译方法,其中遍历中间表达的所有基本块中的第三创建语句,以便创建目标张量寄存器包括:根据特定优化等级所建立的定义使用链来确定所述源张量寄存器的所有定值点语句,其中所述定值点语句包括创建语句;
根据所述定值点语句中的属性标识项确定与所述定值点语句关联的数据结构的标识;根据所述标识得到所述源张量寄存器的...

【专利技术属性】
技术研发人员:请求不公布姓名
申请(专利权)人:上海寒武纪信息科技有限公司
类型:发明
国别省市:

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

1