CN115599442B - 一种ai芯片、电子设备及张量处理方法 - Google Patents
一种ai芯片、电子设备及张量处理方法 Download PDFInfo
- Publication number
- CN115599442B CN115599442B CN202211597988.5A CN202211597988A CN115599442B CN 115599442 B CN115599442 B CN 115599442B CN 202211597988 A CN202211597988 A CN 202211597988A CN 115599442 B CN115599442 B CN 115599442B
- Authority
- CN
- China
- Prior art keywords
- addressing
- tensor
- addressing mode
- mode
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 26
- 230000015654 memory Effects 0.000 claims description 35
- 230000009977 dual effect Effects 0.000 claims description 14
- 230000014759 maintenance of location Effects 0.000 claims description 5
- 238000013473 artificial intelligence Methods 0.000 description 31
- 238000004364 calculation method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 230000036961 partial effect Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 12
- 230000014509 gene expression Effects 0.000 description 9
- 230000002829 reductive effect Effects 0.000 description 8
- 239000002356 single layer Substances 0.000 description 5
- 239000010410 layer Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请涉及一种AI芯片、电子设备及张量处理方法,属于计算机技术领域。该AI芯片包括:向量寄存器、引擎单元、向量运算单元;向量寄存器用于存储运算所需的张量数据;引擎单元与向量寄存器连接,引擎单元用于根据张量寻址模式从向量寄存器存储的张量数据中,获取向量运算指令所需的源操作数,引擎单元根据张量寻址模式一次寻址获取的源操作数个数大于或等于1;向量运算单元与引擎单元连接,向量运算单元用于根据向量运算指令对引擎单元获取的源操作数进行运算,得到运算结果。本申请中,采用张量寻址模式进行寻址,使得一次寻址可获得至少一个源操作数,极大提高了获取源操作数的效率,使得只需要较少的指令便可寻找到所需的源操作数。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种AI芯片、电子设备及张量处理方法。
背景技术
随着人工智能技术(Artificial Intelligence,AI)的发展,神经网络已然成为当今最为流行的人工智能技术之一。神经网络中经常涉及张量之间的计算。在进行张量(tensor)之间的计算时,大致的步骤如下:步骤1、计算一个或者多个源操作数对应的张量元素(tensor element)的地址;步骤2、从上述地址把一个或者多个源操作数读入向量运算单元;步骤3、向量运算单元计算出结果。在上述步骤中,只有步骤3是有效的计算,其它步骤的都会造成额外的成本。步骤1对应的张量元素的地址计算代价较大,这一部分的非有效计算在目前常见的系统中占了很大的比例。
当前在计算源操作数对应的张量元素的地址时,是基于numpy(NumericalPython,为Python的一种开源的数值计算扩展)的切片(slicing)寻址模式进行寻址,例如,对于一个张量数组a,可以用a[start:stop:step]这种方式提取出一个新数组,并且可以支持多维数组。其中,start表示寻址的起点地址,stop表示寻址的终点地址,step相当于stride(步长),表示寻址指针的偏移幅度。以切片寻址模式start:stop:step=0:6:2为例,其寻址原理图如图1所示。这种切片寻址模式一次寻址只能得到一个张量元素,比如,示例中的(0,0)、(2,0)、(4,0)、(0,2)、(2,2)、(4,2)、(0,4)、(2,4)、(4,4)。如果要获取多个张量元素,则需要进行多次寻址,这样就会导致大量指令被浪费在了寻址上,即浪费在了非有效计算上。
发明内容
鉴于此,本申请的目的在于提供一种AI芯片、电子设备及张量处理方法,以改善现有寻址方式需要大量的指令才能寻找到所需的源操作数,导致寻址效率低的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种AI芯片,包括:向量寄存器、引擎单元、向量运算单元;
向量寄存器用于存储运算所需的张量数据;
引擎单元,与所述向量寄存器连接,所述引擎单元用于根据张量寻址模式,从所述向量寄存器存储的张量数据中获取向量运算指令所需的源操作数,其中,所述引擎单元根据所述张量寻址模式一次寻址获取的源操作数个数大于或等于1;
向量运算单元,与所述引擎单元连接,所述向量运算单元用于根据所述向量运算指令对所述引擎单元获取的源操作数进行运算,得到运算结果。
本申请实施例中,引擎单元采用张量寻址模式从向量寄存器存储的张量数据中获取向量运算指令所需的源操作数,使得一次寻址可获得至少一个源操作数,其中,引擎单元采用张量寻址模式一次寻址获得的张量元素可以有一个或多个,极大提高了获取源操作数的效率,使得只需要较少的指令便可寻找到所需的源操作数;同时,将引擎单元设置于向量寄存器与向量运算单元之间,使得向量寄存器可以直接存储运算所需的原始张量数据,由于张量运算中会涉及到大量重复的数据,因此利用张量寻址模式寻址后的数据的数据量有可能会大于原始张量数据,这样的设计方式,使得向量寄存器的存储空间不用设计得很大。
可选的,所述向量寄存器的数量为多个,不同的所述向量寄存器存储不同的张量数据。该实施方式中,通过设置多个向量寄存器,不同向量寄存器存储不同的张量数据,这样在进行寻址时,可以同时对各个向量寄存器存储的张量数据进行并行寻址,可以提高寻址效率。
结合第一方面实施例的一种可能的实施方式,所述引擎单元包括:多个寻址引擎,一个所述寻址引擎对应一个所述向量寄存器,每个所述寻址引擎,用于根据各自的张量寻址模式从对应的向量寄存器中获取向量运算指令所需的源操作数。
该实施方式中,通过设置多个寻址引擎,且一个寻址引擎对应一个向量寄存器,这样在寻址时,每个寻址引擎可以根据各自的张量寻址模式从对应的向量寄存器中获取向量运算指令所需的源操作数,不仅能提高寻址效率,且互不干扰。
结合第一方面实施例的一种可能的实施方式,所述引擎单元还包括:主引擎,用于向每个所述寻址引擎发送控制命令,控制每个所述寻址引擎根据各自的张量寻址模式进行寻址,从对应的向量寄存器中获取向量运算指令所需的源操作数。
该实施方式中,通过设置主引擎向每个寻址引擎发送控制命令,来控制各个寻址引擎独立寻址,通过主引擎来集中控制,以保证各个寻址引擎所获取的源操作数的形状(shape)一致,从而保证运算的准确性。
结合第一方面实施例的一种可能的实施方式,若所述张量数据的第一维度需要广播,寻址引擎根据所述主引擎发送的Advance前进命令在所述张量数据的第一维度上进行寻址时,保持寻址指针不变,以持续获取当前寻址指针所指向的源操作数。
该实施方式中,若张量数据的第一维度需要广播时,寻址引擎用于根据主引擎发送的Advance前进命令在张量数据的第一维度上进行寻址时,保持寻址指针不变,以持续获取当前寻址指针所指向的源操作数,从而实现数据的重复读取,达到广播的目的,而不需要重新去寻址,可以提高寻址效率。
结合第一方面实施例的一种可能的实施方式,所述张量寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸。
本申请实施例中,通过对现有的切片寻址模式进行了改进与扩展,使得张量寻址模式(也可以看成是新切片寻址模式)所包含的参数,从原有切片寻址模式包含的三个参数(start,stop,step)扩展成包含更多参数,从而可以提高寻址效率,达到减少冗余指令的目的,另外,通过对扩展增加的参数进行配置可以支持更灵活更多样的寻址。
结合第一方面实施例的一种可能的实施方式,所述张量寻址模式的参数还包括表征寻址所得数据形状为非完整形状的保留情况的特征参数。
本申请实施例中,可以通过引入用于表征寻址所得数据形状为非完整形状的保留情况的特征参数(如用partial表示),使得可以通过配置特征参数的值,来灵活决定是否保留非完整形状所包含的数据。
结合第一方面实施例的一种可能的实施方式,所述张量寻址模式包括嵌套的双重张量寻址模式,所述双重张量寻址模式包括:外迭代寻址模式和内迭代寻址模式,其中,所述内迭代寻址模式在所述外迭代寻址模式寻址得到的张量数据上进行寻址。
本申请实施例中,可采用嵌套的双重张量寻址模式进行寻址,以实现外迭代寻址模式和内迭代寻址模式的独立寻址,相比于单一的寻址模式来说,寻址效率更高,使得只需要一条指令就可实现2条单层指令的寻址,并且内迭代寻址模式是在外迭代寻址模式的基础上进行寻址的,外迭代寻址模式寻址到的数据仅是一个中间结果,并不需要读写,相比于采用单层的张量寻址模式的寻址,减少了第一层(外迭代寻址模式)的数据读写。
结合第一方面实施例的一种可能的实施方式,所述外迭代寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸、表征寻址所得数据形状为非完整形状的保留情况的特征参数。
本申请实施例中,采用包含上述5参数的寻址模式进行寻址,使得在外迭代寻址模式下每次寻址都可以得到一个完整形状(shape)的候选区域,从而便于后续进一步基于完整形状的候选区域进行内迭代寻址模式下的寻址,可以提高寻址效率,达到减少冗余指令的目的。
结合第一方面实施例的一种可能的实施方式,所述内迭代寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸。
本申请实施例中,采用包含上述4参数的寻址模式进行寻址,使得每次寻址都可以得到一个包含多个张量元素的数据形状(shape),一次寻址获取的源操作数大于等于1,从而可以提高寻址效率,达到减少冗余指令的目的。
结合第一方面实施例的一种可能的实施方式,所述外迭代寻址模式,用于从所述张量数据中选定至少一个候选区域,所述候选区域包含多个张量元素;所述内迭代寻址模式,用于从所述至少一个候选区域中获取向量运算指令所需的源操作数。可选的,在一些应用场景下,候选区域的张量元素可以参与数据读写,作为寻址结果的一部分,在一些应用场景下,候选区域的张量元素可以不参与数据读写,仅作为寻址过程的中间结果。具体是否将候选区域的张量元素进行数据输出,可根据实际需求进行灵活配置决定。
结合第一方面实施例的一种可能的实施方式,所述外迭代寻址模式、内迭代寻址模式均为新切片寻址模式、切片寻址模式、索引寻址模式中的一种,所述新切片寻址模式相比于所述切片寻址模式包含更多寻址参数,所述更多寻址参数包括:表征寻址所得数据形状的尺寸。
本申请实施例中,关于双重张量寻址模式,无论是外迭代寻址模式还是内迭代寻址模式,均支持多种寻址模式,从而使得整个寻址方式既兼容现有的寻址方式(切片寻址模式、索引寻址模式),又可以兼容本申请提出的张量寻址方式(新切片寻址模式),增加了方案的灵活性和易用性。
第二方面,本申请实施例还提供了一种电子设备,包括:存储器和如上述第一方面提供的AI芯片;存储器,用于存储运算所需的张量数据;所述AI芯片与所述存储器连接,所述AI芯片,用于将所述存储器中存储的张量数据写入所述AI芯片中的向量寄存器。
第三方面,本申请实施例还提供了一种张量处理方法,包括:根据张量寻址模式从张量数据中获取向量运算指令所需的源操作数,其中,根据所述张量寻址模式一次寻址获取的源操作数个数大于或等于1;根据所述向量运算指令,对获取的源操作数进行运算,得到运算结果。
本申请实施例中,采用张量寻址模式一次寻址获得的张量元素可以有一个或多个。该方法可应用于前述第一方面的AI芯片和/或前述第二方面的电子设备。关于该方法的原理、有益效果,可参见其他方面实施例或实施方式的相关描述。
可选的,根据张量寻址模式从张量数据中获取向量运算指令所需的源操作数,可包括:利用寻址引擎在主引擎发送的控制命令下,根据张量寻址模式从张量数据中获取向量运算指令所需的源操作数。
结合第三方面实施例的一种可能的实施方式,所述张量寻址模式包括嵌套的双重张量寻址模式,所述双重张量寻址模式包括:外迭代寻址模式和内迭代寻址模式;其中,根据张量寻址模式从张量数据中获取向量运算指令所需的源操作数,包括:利用所述外迭代寻址模式从所述张量数据中选定至少一个候选区域,所述候选区域包含多个张量元素;利用所述内迭代寻址模式从所述至少一个候选区域中获取向量运算指令所需的源操作数。
结合第三方面实施例的一种可能的实施方式,所述外迭代寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸、表征寻址所得数据形状为非完整形状的保留情况的特征参数;和/或,所述内迭代寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1为现有技术中的切片寻址模式进行寻址的原理示意图。
图2示出了本申请实施例提供的第一种AI芯片的结构示意图。
图3A示出了本申请实施例提供的第一种发生广播的原理示意图。
图3B示出了本申请实施例提供的第二种发生广播的原理示意图。
图3C示出了本申请实施例提供的第三种发生广播的原理示意图。
图4示出了本申请实施例提供的第一种张量寻址模式的原理示意图。
图5示出了本申请实施例提供的第二种张量寻址模式的原理示意图。
图6示出了本申请实施例提供的第二种AI芯片的结构示意图。
图7示出了本申请实施例提供的按照0:8:2:5的寻址模式进行寻址的原理示意图。
图8示出了本申请实施例提供的按照0:5:2:1的寻址模式进行寻址的原理示意图。
图9示出了本申请实施例提供的一种电子设备的结构示意图。
图10示出了本申请实施例提供的按照0:4:1:3的寻址模式进行寻址的原理示意图。
图11示出了本申请实施例提供的一种张量处理方法的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
鉴于现有张量之间的计算过程中,需要消耗较长的时间去计算源操作数对应的张量元素的地址,即很大一部分时间都浪费在了计算源操作数对应的张量元素的地址上,究其原因,主要是因为现有方式是基于numpy的切片寻址模式进行寻址,这种切片寻址模式一次寻址只能得到一个张量元素,由于张量计算会涉及到大量的源操作数,张量数据又是多维数据,在计算张量元素的地址时通常需要在每个维度上都进行地址计算,张量又总是以一些方式被展开存储的,所以寻找张量元素的地址有可能会用到复杂的计算逻辑,目前现有技术中也没有对张量元素的地址计算进行专门硬件支持的加速方案,导致需要用大量的指令进行多次寻址,这样就会导致大量的指令被浪费在寻址过程上,即浪费在了非有效计算上。
基于此,本申请提供了一种全新的AI芯片,一次寻址便可确定至少一个源操作数对应的张量元素的地址,能极大提高计算源操作数对应的张量元素的地址的效率,使得只需要较少的指令便可寻找到所需的源操作数,极大的减少了冗余指令、提高了有效指令的密度、提高了处理性能,并且可以简化编程量。该AI芯片能够对张量的寻址、运算进行硬件层面的加速,硬件可支持多种张量寻址模式,兼容性好,有利于快速完成张量之间的计算。
此外,本申请实施例还从灵活性、易用性和处理效率方面,针对张量的寻址提出了新的寻址模式,一方面,基于传统切片寻址这种按顺序或按固定跨度来访问数组中的元素的设计思想,进一步扩展设计了一种新的基于切片的张量寻址方式;另一方面,设计了一种可以嵌套使用的能够进行双重张量寻址的寻址模式。这些新的寻址模式都可以在本申请实施例提供的AI芯片上进行应用,有利于在面临张量之间的计算时,减少所需的指令总量,灵活寻址,提升硬件处理性能,提升对于张量的处理效率。
下面将结合图2对本申请实施例提供的一种AI芯片的原理进行说明,该AI芯片包括向量寄存器、引擎单元以及向量运算单元。其中,向量寄存器通过引擎单元与向量运算单元连接。
向量寄存器,用于存储运算所需的张量数据。其中,张量数据是一组多维数据,通常会以某种方式(如线性布局、平铺布局等)展开,存储在诸如内存、片上存储器、寄存器等具有存储功能的器件中。存储于向量寄存器中的张量数据可以是从AI芯片外部的存储器中搬运过来的。
引擎单元与向量寄存器连接,引擎单元用于根据张量寻址模式从张量数据中获取向量运算指令所需的源操作数,其中,引擎单元根据张量寻址模式一次寻址获取的源操作数(个数)大于或等于1。
向量运算单元与引擎单元连接,向量运算单元用于根据向量运算指令,对引擎单元获取的源操作数进行运算,得到运算结果。其中,向量运算指令是指一条指令能够同时计算两个以上的操作数的指令。示例性的,向量运算指令的类型可以是加法、减法、乘法、乘累加等各种运算类型。
其中,上述的AI芯片可以是一种集成电路芯片,具有数据处理能力,可用于处理张量与张量之间的运算。例如,可以是通用处理器,包括中央处理器(Central ProcessingUnit, CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件。通用处理器也可以是微处理器或者该AI芯片也可以是任何常规的处理器等,比如可以是图形处理器(Graphics Processing Unit,GPU)、通用图形处理器(General Purposecomputing on Graphics Processing Unit,GPGPU)等。
发明人发现,张量元素的运算操作过程比较具有规律性,一般操作过程有以下两种:
第一种,维度尺寸相同的两个或者多个张量数据中的张量元素,进行一对一的操作(称为逐个张量元素操作,element-wise operation)。比如,假设两个张量数据的宽(W)和高(H)均为5,即W*H为5*5,则这两个张量数据中的张量元素在进行一对一的操作时,则是对应位置的张量元素之间进行一对一的操作。
第二种,一个张量数据中的某一个张量元素和另一个张量数据中的一组张量元素进行操作(称为广播,broadcasting)。比如,对于一个图像张量(第一操作数),需要把该图像的每一个像素值都除以255(第二操作数)的场景下,假设这2个操作数的维度信息分别是:第一操作数的通道数、宽度、高度分别是:3,224,224;第二操作数的通道数、宽度、高度分别是:1,1,1。
此时,第二操作数在3个维度(即上述的通道数、宽度、高度)上都会发生广播,即,在进行除法运算之前,需要把维度为(1,1,1)的第二操作数(值为255),扩展成一个维度为(3,224,224)的张量,并且这个张量的每一个维度上的值都是255。此时这两个操作数的维度尺寸相同,可以进行除法操作,之后再将这2个张量数据中的张量元素进行一对一的操作即可。
又例如,假设第一操作数的通道数、宽度、高度分别是:3,224,224,第二操作数的通道数、宽度、高度分别是:3,1,224,则对于第二操作数,只需要在宽度方向上进行广播,即,将维度为(3,1,224)的第二操作数扩展成一个维度为(3,224,224)的张量,此时这两个操作数的维度尺寸相同,可以进行除法操作。
其中,要发生广播操作,需要两个张量数据的维度数量相同,且其中一个张量数据的至少一个维度为1,进行广播处理时,发生广播的张量数据的所有其他维度都会在发生广播的维度上进行元素复制。
为了更好的理解上述的广播操作,下面结合图3A、图3B、图3C所示的原理图进行说明。在图3A中,由于操作数5与“np.arange(3)”这个数组(即第一数组)在宽度这个维度上的尺寸不同,因此,在相加之前,需要在宽度方向对5进行广播,使其在宽度方向的维度尺寸与“np.arange(3)”这个数组的维度尺寸一致,之后再相加。同理,在图3B中,由于“np.arange(3)”这个数组与“np.ones((3,3))”这个数组(即第二数组)在高度这个维度上的尺寸不同,在相加之前,“np.arange(3)”这个数组需要在高度方向进行广播,使其在高度方向的维度尺寸与“np.arange(3)”这个数组的维度尺寸一致,之后再相加。同理,在图3C中,由于“np.arange(3).reshape((3,1))”这个数组(即第三数组)与“np.arange(3)”这个数组,在宽度、高度的维度尺寸都不同,因此需要对“np.arange(3).reshape((3,1))”这个数组在宽度方向进行广播,以及对“np.arange(3)”这个数组在高度方向进行广播,使二者的维度尺寸相同,之后再相加。关于张量的逐元素操作、广播操作这些部分的具体实现细节和原理,已经为本领域所熟知,在此不再介绍。
此外,常见张量元素的地址计算模式(比如现有技术的切片寻址模式)也比较具有规则性,其中,切片是指按照一定顺序或者跨度去访问张量元素。为了能提高张量元素的地址计算效率,本申请发明人在充分利用上述的张量操作的规律性的基础上,提出了一种全新的张量寻址模式。该张量寻址模式通过对现有的切片寻址模式进行了改进与扩展,使得张量寻址模式(也可以看成是新切片寻址模式)所包含的参数,从原有切片寻址模式包含的三个参数扩展成包含更多参数,从而可以提高寻址效率,达到减少冗余指令的目的。
本申请中的一种张量寻址模式(新切片寻址模式)的参数包括:表征寻址起点的起始地址(如用start表示)、表征寻址终点的终点地址(如用stop表示)、表征寻址指针偏移幅度的步长(如用step表示)、表征寻址所得数据形状的尺寸(如用size表示)。则张量寻址模式的表达式可以记为[start:stop:step:size]。即,新切片寻址模式相比于切片寻址模式包含更多寻址参数,更多寻址参数包括:表征寻址所得数据形状的尺寸。
其中,size用来描述寻址所得数据形状(shape)的尺寸,即在每一个step的时候会提取一个完整shape包含的所有元素点,而不只提取一个点。上述表达式中的start、stop、step、size的值都是可以配置的,以适用于各种张量之间的计算。
可选地,张量寻址模式的参数还包括:表征寻址所得数据形状为非完整形状的保留情况的特征参数(如用partial表示,用于反映局部张量数据形状的完整性),此时,张量寻址模式的表达式为[start:stop:step:size:partial]。作为一种实施方式,当partial=false,即partial的参数被设为false时,处在边缘的非完整shape所包含的点会被抛弃,即不保留;当partial=true即partial的参数被设为true时,处在边缘的非完整shape所包含的点需保留。本申请中的张量寻址模式的参数相比于现有的切片寻址模式的参数,增加size和partial两个参数。
为了更好的理解,下面以张量寻址模式[start:stop:step:size] =0:6:2:3为例,分别对partial=false以及partial=true的情况进行说明。其中,在该表达式中,start=0,stop=6,step=2,size=3。
当partial=false时,处在边缘的非完整shape所包含的点会被抛弃,其原理图如图4。在这种情况下,每滑动一个step都会根据size判断当前寻址到的这些点能不能形成一个完整的shape(该例中,由于size=3,因此,一个完整shape应有3*3个元素点),如果不能形成完整的shape,那么这个step寻址到的点会被抛弃。当partial=true时,处在边缘的非完整的shape所包含的点需保留,其原理图如图5所示。在这种情况下,每一个step还是会根据size判断当前寻址到的点能不能形成一个完整的shape,即便是不能形成完整的shape,这个step寻址到的点也需保留。
通过对比图4和图5可知,当partial=false时,会抛弃掉图4中处于边缘的非完整shape所包含的点。在图4和图5的示例中,一个完整的shape包含9个点,由于处于边缘的shape的点低于9个,为非完整shape,当partial=false时,非完整shape所包含的点会被抛弃;当partial=true时,非完整shape所包含的点需保留。
通过对比图4(或图5)与图1,可以看出:采用本申请所示的张量寻址模式,一个step便可确定多个张量元素。一次寻址可确定1个或多个源操作数对应的张量元素的地址,例如,上述示例中,一次(即一个step)寻址会寻址到9个张量元素的地址,而采用现有的方式,需要9次寻址才能寻址到这9个张量元素的地址,相应地,需要更多的指令才能寻址到这9个张量元素的地址。因此,相对于现有寻址方式,本申请所示的寻址方式能极大提高计算源操作数对应的张量元素的地址的效率,使得只需要较少的指令便可寻找到所需的源操作数,极大的减少了冗余指令、提高了有效指令密度、提高了性能、简化了编程。
可以理解的是,当期望每一个step只需要寻址1个张量元素时,可以通过配置size=1实现,此时,每一个step只寻址1个张量元素,此时的寻址模式与现有的寻址模式类似(只需通过更改参数的值即可在硬件上兼容现有的寻址逻辑),其原理图如图1所示。或者,直接采用已有的寻址模式进行寻址。此外,当期望每一个step只需要寻址1个张量元素时,也可以不用将size配置为1(例如,仍然可以将size配置为大于1的整数),只是在每滑动一个step的时候,从得到的shape包含的多个张量元素中仅提取一个所需的张量元素即可。以此可以通过本申请实施例提供的新切片寻址模式兼容实现现有的切片寻址效果,兼顾寻址过程的处理效率和寻址灵活性。
其中,AI芯片中的向量寄存器的数量可以为多个,不同的向量寄存器存储的张量数据可以不同。以向量运算指令为三操作数的向量运算指令,如A*B+C为例,A、B、C均为源操作数,其中,A、B、C可以是单个(张量)元素,也可以是包含多个元素的数组。此时,向量寄存器的数量可以包括3个,例如为向量寄存器1、向量寄存器2、向量寄存器3。向量寄存器1可以用于存储源操作数A所在的张量数据,向量寄存器2可以用于存储源操作数B所在的张量数据,向量寄存器3可以用于存储源操作数C所在的张量数据。
在一条向量运算指令中,每一个操作数都对应有一个寻址模式,多个操作数的寻址模式可相互匹配,在匹配的过程中可能会需要发生广播操作,匹配过后的多个操作数的shape相同。本申请不对具体的指令表达形式进行限制。
可以理解的是,不同的张量数据也可以存储在同一个向量寄存器中,只要向量寄存器的空间够大,因此,不能将上述示例的不同的向量寄存器存储的张量数据可以不同的情形理解成是对本申请的限制。
当向量寄存器的数量为多个时,可以采用一个或多个寻址引擎对多个向量寄存器存储的张量数据进行寻址。
为了提高寻址效率,一种可选实施方式下,如图6所示,引擎单元包括:多个寻址引擎,一个寻址引擎对应一个向量寄存器,其中,每个寻址引擎,用于根据各自的张量寻址模式从对应的向量寄存器中获取向量运算指令所需的源操作数。例如,以采用3个向量寄存器存储张量数据为例,此时,可以通过3个寻址引擎来分别对这3个向量寄存器存储的张量数据进行寻址。例如,寻址引擎1对应向量寄存器1,用于根据该寻址引擎1的张量寻址模式从对应的向量寄存器1中获取向量运算指令所需的源操作数;寻址引擎2对应向量寄存器2,用于根据该寻址引擎2的张量寻址模式从对应的向量寄存器2中获取向量运算指令所需的源操作数;寻址引擎3对应向量寄存器3,用于根据该寻址引擎3的张量寻址模式,从对应的向量寄存器3中获取向量运算指令所需的源操作数。各寻址引擎采用的张量寻址模式可以相同,也可以不同。
可以理解的是,另一种可选实施方式下,也可以是由同一个寻址引擎从多个向量寄存器中获取向量运算指令所需的源操作数,比如,由寻址引擎1从向量寄存器1中获取向量运算指令所需的源操作数A,由寻址引擎1从向量寄存器2中获取向量运算指令所需的源操作数B,由寻址引擎1从向量寄存器3中获取向量运算指令所需的源操作数C。
其中,每个寻址引擎,如上述的寻址引擎1、寻址引擎2、寻址引擎3都是独立的,互相不干扰。每个寻址引擎在获取向量运算指令所需的源操作数时,都是采用独立的张量寻址模式进行独立寻址,即,向量运算指令中的每一个源操作数对应一种独立的张量寻址模式。比如上述的源操作数A对应张量寻址模式1,源操作数B对应张量寻址模式2,源操作数C对应张量寻址模式3。张量寻址模式1、张量寻址模式2、张量寻址模式3包含的参数种类可以相同,比如可以都包含上述的5种(start:stop:step:size:partial)参数,不同之处在于参数的具体数值可能不同。
可以理解的是,多个寻址引擎在独立寻址时,可以是都采用本申请提供的上述张量寻址模式(可视为新切片寻址模式)进行寻址,也可以是其中一部分寻址引擎采用本申请提供的上述张量寻址模式进行寻址,剩余部分寻址引擎采用现有的寻址模式(索引寻址模式、numpy的基本切片寻址模式)进行寻址。例如,前述的张量寻址模式1、张量寻址模式2、张量寻址模式3除了可以是同一类型的寻址模式(如新切片寻址模式)外,还可以是不同类型的寻址模式,比如,张量寻址模式1对应本申请中的张量寻址模式(新切片寻址模式)、张量寻址模式2采用现有的3参数的切片寻址模式,张量寻址模式3采用现有的索引寻址模式。也即,相比于全部采用现有的寻址模式来说,也可以在一定程度上提高寻址效率,减少寻址所需的指令数。
作为一种实施方式,每个寻址引擎除了各自的独立寻址模式以外,也都还可以被设置为支持处理广播操作的能力。
为了便于控制各个寻址引擎的寻址,一种可选实施方式下,该AI芯片的引擎单元还可包括:主引擎,主引擎与每个寻址引擎连接,主引擎用于向每个寻址引擎发送控制命令,以控制每个寻址引擎根据张量寻址模式进行寻址,从对应的向量寄存器中获取向量运算指令所需的源操作数。通过引入一个主引擎来集中控制这些独立的寻址引擎,可以提高寻址效率。主引擎可在每一个step给操作数的寻址引擎发送一个控制命令,使寻址引擎可根据控制命令,按照从低维到高维的顺序,遍历张量数据的每一个维度,在相应维度寻址。
其中,控制命令包括Advance前进命令、Reset重置命令、NOP空操作命令。也即,主引擎在每一个step会给操作数的寻址引擎发送上述三个控制命令中的至少一个控制命令。即,主引擎每次向每个寻址引擎发送控制命令时,发送由上述三个控制命令中的至少一个控制命令组合而成的组合控制命令,以控制每个寻址引擎根据各自的张量寻址模式在原始张量数据的不同维度进行寻址。
Advance前进命令表示在当前这个维度上advance(前进或增加)一个step的步长。
Reset重置命令表示在这个维度上走到尽头时,需要在这个维度上从头开始寻址。
NOP空操作命令表示在这个维度上没有发生动作。
为了更好的理解主引擎如何根据上述的Advance前进命令、Reset重置命令、NOP空操作命令,控制寻址引擎进行寻址的逻辑,下面以图5所示的原理图进行说明:
Step1:W cmd:NOP;H cmd:NOP,其中cmd表示命令,此时的状态如图5中的(1)所示;
Step2:W cmd:Advance;H cmd:NOP,此时的状态如图5中的(2)所示;
Step3:W cmd:Advance;H cmd:NOP,此时的状态如图5中的(3)所示;
Step4:W cmd:Reset;H cmd:Advance,此时的状态如图5中的(4)所示;
Step5:W cmd:Advance;H cmd:NOP,此时的状态如图5中的(5)所示;
Step6:W cmd:Advance;H cmd:NOP,此时的状态如图5中的(6)所示;
Step7:W cmd:Reset;H cmd:Advance,此时的状态如图5中的(7)所示;
Step8:W cmd:Advance;H cmd:NOP,此时的状态如图5中的(8)所示;
Step9:W cmd:Advance;H cmd:NOP,此时的状态如图5中的(9)所示。
若张量数据的第一维度(可以是张量数据的任一维度)需要广播,则该张量数据对应的寻址引擎在张量数据的第一维度上进行寻址时,在接收到Advance前进命令时,保持寻址指针不变,这样寻址引擎在从向量寄存器中读取源操作数时,可一直读取当前寻址指针所指向的源操作数,从而实现广播的目的。相应地,若张量数据的第一维度(可以是张量数据的任一维度)需要广播,则主引擎在发送控制命令控制寻址引擎在张量数据的第一维度上进行寻址时,当寻址引擎在张量数据的第一维度上走到尽头时,主引擎并不会发送Reset重置命令,可以一直发Advance前进命令,以便一直读取当前寻址指针所指向的源操作数,直至完成广播后,再发送其他控制命令。
为了更好的理解,下面结合图3A所示的原理图进行说明。假设向量运算单元要完成图3A所示的运算操作,寻址引擎1负责获取“np.arange(3)”这个数组中的操作数,寻址引擎2负责获取操作数5,初始时刻,主引擎向寻址引擎1、寻址引擎2发送Advance前进命令,寻址引擎1获取“np.arange(3)”这个数组中的0操作数,寻址引擎2获取操作数5;下一时刻,主引擎向寻址引擎1、寻址引擎2发送Advance前进命令,寻址引擎1前进一步获取“np.arange(3)”这个数组中的1操作数,寻址引擎2在接收到Advance前进命令时,保持寻址指针不变,此时仍然输出操作数5;在下一时刻,主引擎向寻址引擎1、寻址引擎2发送Advance前进命令,寻址引擎1前进一步获取“np.arange(3)”这个数组中的2操作数,寻址引擎2在接收到Advance前进命令时,保持寻址指针不变,此时仍然输出操作数5。
一种可选实施方式下,本申请的张量寻址模式还可以包括:嵌套的双重张量寻址模式,双重张量寻址模式包括:外迭代寻址模式(outer iterator)和内迭代寻址模式(inner iterator),其中,内迭代寻址模式在外迭代寻址模式得到的张量数据的基础上进行寻址。即,本申请实施例提供的AI芯片不仅可支持以前述的新切片寻址模式进行张量寻址,还可支持以双重张量寻址模式进行张量寻址。
作为一种实施方式,外迭代寻址模式(outer iterator)可以是前述的采用start:stop:step:size:partial这些参数的新切片寻址模式,这种情况下,可以快速选定局部区域(例如基于这些参数限定出的shape)的张量数据,为内迭代寻址模式提供寻址的数据基础。在一些应用场景下,通过外迭代寻址模式选定的局部区域均是在partial=true的情况下得到的完整形状,这样就无需用额外的指令来指示进行模式切换,或者,用额外的指令来处理内迭代寻址模式下可能面临的数据形状改变(从完整到不完整)的情况。
采用嵌套的双重张量寻址模式进行寻址,相比于其他寻址模式来说,寻址效率更高,使得只需要一条指令就可实现2条单层的指令的寻址,并且,内迭代寻址模式是在外迭代寻址模式得到的张量数据的基础上进行寻址的,相比于采用单层的张量寻址模式的寻址,减少了第一层(外迭代寻址模式)的数据读写。
其中,外迭代寻址模式和内迭代寻址模式的表达式可以为:[start:stop:step:size],或者为[start:stop:step:size:partial]。外迭代寻址模式和内迭代寻址模式的表达式中的参数值可以不同。
为了更好的理解,以外迭代寻址模式表达式为[start:stop:step:size]=0:8:2:5为例,其原理图如图7所示,图7中被遍历的这部分可以视为尺寸为8*8的特征图。内迭代寻址模式表达式的参数值以0:5:2:1为例,其寻址原理图如图8所示。按照0:8:2:5的寻址模式进行寻址,可以得到4部分参数,即图7中(1)、(2)、(3)、(4)的shape所包含的参数。内迭代寻址模式在外迭代寻址模式得到的张量数据的基础上进行寻址,即利用0:5:2:1的寻址模式分别对图7中的(1)、(2)、(3)、(4)得到的多个张量元素进行寻址。
通过图7和图8的示例可以看出,外迭代寻址模式用于从张量数据中选定至少一个候选区域,候选区域包含多个张量元素,比如选取图7中的(1)、(2)、(3)、(4)等候选区域;内迭代寻址模式用于从至少一个候选区域中获取向量运算指令所需的源操作数。内迭代寻址模式是在图7中的(1)、(2)、(3)、(4)的数据基础上进行寻址,以获取向量运算指令所需的源操作数。
需要说明的是,内迭代寻址模式并不一定是等到外迭代寻址模式全部寻址完后,才进行寻址,示例性的,当外迭代寻址模式寻址到图7中(1)所包含的5*5个元素时,内迭代寻址模式便可在此基础上进行寻址,内迭代寻址模式完成对图7中(1)所包含的这部分数据的寻址后,又可继续以外迭代寻址模式进行遍历寻址,当外迭代寻址模式寻址到图7中(2)所包含的5*5个元素时,内迭代寻址模式便在此基础上进行寻址,内迭代寻址模式完成对图7中(2)所包含的这部分数据的寻址后,又继续外迭代寻址模式,以此类推,直至完成该8*8特征图中所有的寻址。这样,外迭代寻址模式寻址到的数据仅是一个中间结果,并不需要读写,相比于采用单层的张量寻址模式的寻址,减少了第一层(外迭代寻址模式)的数据读写。
可以理解的是,关于双重张量寻址,外迭代寻址模式和内迭代寻址模式除了可以采用本申请所示的寻址模式(新切片寻址模式)外,还可以进行扩展,比如采用已有的寻址模式(切片寻址模式、索引寻址模式)的原理进行寻址,从而可以有多种组合方式,示例性的一些组合方式参见下表1所示。
表1
外迭代寻址模式 | 新切片寻址模式 | 新切片寻址模式 | 切片寻址模式 | 切片寻址 模式 | 索引 寻址 模式 | 切片寻址模式 | 索引 寻址 模式 | 索引 寻址 模式 | 新切片寻址模式 |
内 迭代寻址模式 | 新切片寻址模式 | 切片寻址模式 | 新切片寻址模式 | 切片寻址 模式 | 索引 寻址 模式 | 索引 寻址 模式 | 切片寻址模式 | 新切片寻址模式 | 索引 寻址 模式 |
需要说明的是,当外迭代寻址模式采用新切片寻址模式进行寻址时,每移动一个step便可得到图7中的(1)、(2)、(3)、(4)所示的shape所包含的5*5个元素。当外迭代寻址模式采用现有的切片寻址模式或索引寻址模式进行寻址时,由于每滑动一个step仅能得到一个元素点,若要得到图7中的(1)、(2)、(3)、(4)所示的shape所包含的这些元素参数,则需要进行多次寻址,以保证无论外迭代寻址模式采用何种寻址模式,都可以得到采用新切片寻址模式寻址所得的这些数据,以此为内迭代寻址模式提供依据。即,无论外迭代寻址模式采用何种寻址模式所得到的数据是一致的,例如,都是得到图7中的(1)、(2)、(3)、(4)所示的shape所包含的多个张量元素参数,只是采用新切片寻址模式时每滑动一个step便可得到一个shape所包含的参数,若是采用其他的现有寻址模式,则需要滑动多个step,进行多次寻址才能得到新切片寻址模式每滑动一个step所得到的shape所包含的这些参数。
基于同样的发明构思,本申请实施例还提供了一种电子设备,如图9所示,该电子设备包括:存储器和如上述所示的AI芯片。AI芯片与存储器连接,AI芯片,用于将存储器中存储的张量数据写入AI芯片中的向量寄存器。
其中,该存储器用于存储运算所需的张量数据,其可以是常见的各种存储器,比如可以是随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(ElectricErasable Programmable Read-Only Memory,EEPROM)。其中,随机存取存储器又可以是静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)。此外,存储器可以是单倍数据速率(Single DataRate,SDR)存储器,也可以是双倍数据速率(Double Data Rate,DDR)存储器。
为了更好的理解AI芯片与存储器的交互流程,下面以向量运算指令为三操作数的向量运算指令,如D=A*B+C为例,首先,将操作数A所在的原始张量数据(如H*W=4*4)写入存储器,将操作数B所在的原始张量数据(如H*W=4*4)写入存储器,将操作数C所在的原始张量数据(如H*W=4*4)写入存储器,把存储器中操作数A所在的原始张量数据写入向量寄存器1,把存储器中操作数B所在的原始张量数据写入向量寄存器2,把存储器中操作数C所在的原始张量数据写入向量寄存器3。在需要进行张量运算的时候,需要通过引擎单元根据张量寻址模式从向量寄存器存储的张量数据中获取向量运算指令所需的源操作数。假设张量寻址模式[start:stop:step:size] =0:4:1:3,则对于每个4*4的原始张量数据,引擎单元都会产生3*3*4的地址,之后会读取这些地址所在的数据,得到3*3*4的数据,并发送给向量运算单元进行运算。其中,引擎单元按照0:4:1:3的寻址模式进行寻址的原理如图10所示。
可以理解的是,在存储器的存储空间够用的情况下,上述过程中,可以是将上述3个操作数所在原始张量数据全部写入存储器中后,再依次将各个操作数所在原始张量数据写入向量寄存器中;也可以是先将其中某个操作数所在原始张量数据写入存储器中后,再将该操作数所在原始张量数据写入向量寄存器中,之后,再将其中某个操作数所在原始张量数据写入存储器中后,之后再将该操作数所在原始张量数据写入向量寄存器中。本申请中,不对各个操作数所在原始张量数据写入存储器的先后顺序,以及从存储器中写入向量寄存器的先后顺序进行限定。
其中,上述的电子设备可以是但不限于手机、平板、电脑、服务器、车载设备、可穿戴设备、边缘盒子等电子设备。
基于同样的发明构思,本申请实施例还提供了一种张量处理方法,如图11所示。下面结合图11对该张量处理方法的原理进行说明。该方法可应用于前述的AI芯片,可应用于前述的电子设备。
S1:根据张量寻址模式从张量数据中获取向量运算指令所需的源操作数,所述张量寻址模式一次寻址获取的源操作数个数大于或等于1。
本申请实施例中的张量寻址模式通过对现有的切片寻址模式进行了改进与扩展,使其包含更多的参数,比如该张量寻址模式的参数包括:表征寻址起点的起始地址(如用start表示)、表征寻址终点的终点地址(如用stop表示)、表征寻址指针偏移幅度的步长(如用step表示)、表征寻址所得数据形状的尺寸(如用size表示)。则张量寻址模式的表达式可以为[start:stop:step:size]。其中,size用来描述寻址所得数据形状(shape)的尺寸,即在每一个step的时候会提取一个shape包含的所有元素点,而不只提取一个点。从而使得一个step确定的张量元素可以有一个或多个,一次寻址便可确定至少一个源操作数对应的张量元素的地址,能极大提高计算源操作数对应的张量元素的地址的效率,使得只需要较少的指令便可寻找到所需的源操作数,极大的减少了冗余指令、提高了有效指令密度、提高了性能、简化了编程。
一种实施方式下,可以是上述AI芯片中的引擎单元根据张量寻址模式从向量寄存器存储的张量数据中获取向量运算指令所需的源操作数。
S2:根据所述向量运算指令,对获取的源操作数进行运算,得到运算结果。
在获取到向量运算指令所需的源操作数后,便可根据向量运算指令,对获取的源操作数进行运算,得到运算结果。一种可选实施方式下,可以是上述AI芯片中的向量运算单元根据向量运算指令,对获取的源操作数进行运算,得到运算结果。
本申请实施例所提供的张量处理方法,其实现原理及产生的技术效果和前述AI芯片实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述AI芯片实施例中相应内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
可以理解的是,根据本申请实施例揭露的关于张量寻址模式的内容,可以在对张量进行处理的各个环节进行高效寻址,例如对于张量之间的计算过程,除了计算出最终结果的这一步有效运算步骤外,不论是要读取待计算的张量,还是要写入计算完毕的张量结果,都会涉及到张量元素的地址计算,这是因为在读取待计算的张量时需要根据张量元素的地址去读取数据,而在从相应的地址读取到待计算的张量并进行张量之间的运算后,如果到了输出结果的环节,在一些场景下可能需要将张量的运算结果写入用于存储张量结果的地址,这个写入运算结果的过程也有可能需要进行张量元素的地址计算。基于本申请揭露的关于张量寻址模式的原理,可以在能够高效寻址的情况下对张量进行快速读写。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (9)
1.一种AI芯片,其特征在于,包括:
向量寄存器,用于存储运算所需的张量数据;
引擎单元,与所述向量寄存器连接,所述引擎单元用于根据张量寻址模式,从所述向量寄存器存储的张量数据中获取向量运算指令所需的源操作数,其中,所述引擎单元根据所述张量寻址模式一次寻址获取的源操作数个数大于或等于1,所述张量寻址模式包括嵌套的双重张量寻址模式,所述双重张量寻址模式包括:外迭代寻址模式和内迭代寻址模式,其中,所述内迭代寻址模式在所述外迭代寻址模式寻址得到的张量数据上进行寻址;其中,所述外迭代寻址模式、内迭代寻址模式均为新切片寻址模式、切片寻址模式、索引寻址模式中的一种,所述新切片寻址模式相比于所述切片寻址模式包含更多寻址参数,所述更多寻址参数包括:表征寻址所得数据形状的尺寸;所述外迭代寻址模式,用于从所述张量数据中选定至少一个候选区域,所述候选区域包含多个张量元素;所述内迭代寻址模式,用于从所述至少一个候选区域中获取向量运算指令所需的源操作数;
向量运算单元,与所述引擎单元连接,所述向量运算单元用于根据所述向量运算指令对所述引擎单元获取的源操作数进行运算,得到运算结果。
2.根据权利要求1所述的AI芯片,其特征在于,所述引擎单元包括:
多个寻址引擎,一个所述寻址引擎对应一个所述向量寄存器,每个所述寻址引擎,用于根据各自的张量寻址模式从对应的向量寄存器中获取向量运算指令所需的源操作数。
3.根据权利要求2所述的AI芯片,其特征在于,所述引擎单元还包括:
主引擎,用于向每个所述寻址引擎发送控制命令,控制每个所述寻址引擎根据各自的张量寻址模式进行寻址,从对应的向量寄存器中获取向量运算指令所需的源操作数。
4.根据权利要求3所述的AI芯片,其特征在于,若所述张量数据的第一维度需要广播,所述寻址引擎用于根据所述主引擎发送的Advance前进命令在所述张量数据的第一维度上进行寻址时,保持寻址指针不变,以持续获取当前寻址指针所指向的源操作数。
5.根据权利要求1所述的AI芯片,其特征在于,所述外迭代寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸、表征寻址所得数据形状为非完整形状的保留情况的特征参数。
6.根据权利要求1所述的AI芯片,其特征在于,所述内迭代寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸。
7.一种电子设备,其特征在于,包括:
存储器,用于存储运算所需的张量数据;以及
如权利要求1-6任一项所述的AI芯片,所述AI芯片与所述存储器连接,所述AI芯片,用于将所述存储器中存储的张量数据写入所述AI芯片中的向量寄存器。
8.一种张量处理方法,其特征在于,包括:
根据张量寻址模式从张量数据中获取向量运算指令所需的源操作数,其中,根据所述张量寻址模式一次寻址获取的源操作数个数大于或等于1;
根据所述向量运算指令,对获取的源操作数进行运算,得到运算结果;
其中,所述张量寻址模式包括嵌套的双重张量寻址模式,所述双重张量寻址模式包括外迭代寻址模式和内迭代寻址模式,其中,所述内迭代寻址模式在所述外迭代寻址模式寻址得到的张量数据上进行寻址,所述外迭代寻址模式、内迭代寻址模式均为新切片寻址模式、切片寻址模式、索引寻址模式中的一种,所述新切片寻址模式相比于所述切片寻址模式包含更多寻址参数,所述更多寻址参数包括:表征寻址所得数据形状的尺寸;根据张量寻址模式从张量数据中获取向量运算指令所需的源操作数,包括:
利用所述外迭代寻址模式从所述张量数据中选定至少一个候选区域,所述候选区域包含多个张量元素;
利用所述内迭代寻址模式从所述至少一个候选区域中获取向量运算指令所需的源操作数。
9.根据权利要求8所述的方法,其特征在于,所述外迭代寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸、表征寻址所得数据形状为非完整形状的保留情况的特征参数;和/或,
所述内迭代寻址模式的参数包括:表征寻址起点的起始地址、表征寻址终点的终点地址、表征寻址指针偏移幅度的步长、表征寻址所得数据形状的尺寸。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211597988.5A CN115599442B (zh) | 2022-12-14 | 2022-12-14 | 一种ai芯片、电子设备及张量处理方法 |
PCT/CN2023/096078 WO2024124807A1 (zh) | 2022-12-14 | 2023-05-24 | 一种ai芯片、张量处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211597988.5A CN115599442B (zh) | 2022-12-14 | 2022-12-14 | 一种ai芯片、电子设备及张量处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115599442A CN115599442A (zh) | 2023-01-13 |
CN115599442B true CN115599442B (zh) | 2023-03-10 |
Family
ID=84854060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211597988.5A Active CN115599442B (zh) | 2022-12-14 | 2022-12-14 | 一种ai芯片、电子设备及张量处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599442B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024124807A1 (zh) * | 2022-12-14 | 2024-06-20 | 成都登临科技有限公司 | 一种ai芯片、张量处理方法及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018217360A1 (en) * | 2017-05-24 | 2018-11-29 | Microsoft Technology Licensing, Llc | Tensor register files |
CN110659068A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 用于张量置换引擎的装置和方法 |
CN110941789A (zh) * | 2018-09-21 | 2020-03-31 | 北京地平线机器人技术研发有限公司 | 张量运算方法和装置 |
CN111915003A (zh) * | 2019-05-09 | 2020-11-10 | 深圳大普微电子科技有限公司 | 一种神经网络硬件加速器 |
WO2021228483A1 (de) * | 2020-05-14 | 2021-11-18 | Robert Bosch Gmbh | Vorrichtung und verfahren zum erzeugen von instruktionen für eine recheneinrichtung zur ausführung einer rechenvorschrift |
WO2022001500A1 (zh) * | 2020-06-30 | 2022-01-06 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
WO2022046051A1 (en) * | 2020-08-26 | 2022-03-03 | Micron Technology, Inc. | Deep neural networks compiler for a trace-based accelerator |
CN114489798A (zh) * | 2022-01-25 | 2022-05-13 | 海飞科(南京)信息技术有限公司 | 用于确定张量元素的越界状态的方法和电子装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10248908B2 (en) * | 2017-06-19 | 2019-04-02 | Google Llc | Alternative loop limits for accessing data in multi-dimensional tensors |
GB2567038B (en) * | 2017-07-31 | 2019-09-25 | Google Llc | Accessing prologue and epilogue data |
WO2021026225A1 (en) * | 2019-08-08 | 2021-02-11 | Neuralmagic Inc. | System and method of accelerating execution of a neural network |
CN114270319A (zh) * | 2019-10-07 | 2022-04-01 | 谷歌有限责任公司 | 在机器学习计算单元之间重新分配张量元素 |
CN113867799A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN112381220B (zh) * | 2020-12-08 | 2024-05-24 | 厦门壹普智慧科技有限公司 | 一种神经网络张量处理器 |
CN114064123A (zh) * | 2021-11-12 | 2022-02-18 | 龙芯中科技术股份有限公司 | 指令处理方法、装置、设备及存储介质 |
CN114781632B (zh) * | 2022-05-20 | 2024-08-27 | 重庆科技大学 | 基于动态可重构脉动张量运算引擎的深度神经网络加速器 |
-
2022
- 2022-12-14 CN CN202211597988.5A patent/CN115599442B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018217360A1 (en) * | 2017-05-24 | 2018-11-29 | Microsoft Technology Licensing, Llc | Tensor register files |
CN110659068A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 用于张量置换引擎的装置和方法 |
CN110941789A (zh) * | 2018-09-21 | 2020-03-31 | 北京地平线机器人技术研发有限公司 | 张量运算方法和装置 |
CN111915003A (zh) * | 2019-05-09 | 2020-11-10 | 深圳大普微电子科技有限公司 | 一种神经网络硬件加速器 |
WO2021228483A1 (de) * | 2020-05-14 | 2021-11-18 | Robert Bosch Gmbh | Vorrichtung und verfahren zum erzeugen von instruktionen für eine recheneinrichtung zur ausführung einer rechenvorschrift |
WO2022001500A1 (zh) * | 2020-06-30 | 2022-01-06 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
WO2022046051A1 (en) * | 2020-08-26 | 2022-03-03 | Micron Technology, Inc. | Deep neural networks compiler for a trace-based accelerator |
CN114489798A (zh) * | 2022-01-25 | 2022-05-13 | 海飞科(南京)信息技术有限公司 | 用于确定张量元素的越界状态的方法和电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115599442A (zh) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115658146B (zh) | 一种ai芯片、张量处理方法及电子设备 | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
US9940026B2 (en) | Multidimensional contiguous memory allocation | |
US20120054468A1 (en) | Processor, apparatus, and method for memory management | |
US20200228137A1 (en) | Methods, systems, articles of manufacture, and apparatus to decode zero-value-compression data vectors | |
US20060143428A1 (en) | Semiconductor signal processing device | |
CN107766079B (zh) | 处理器以及用于在处理器上执行指令的方法 | |
CN115599442B (zh) | 一种ai芯片、电子设备及张量处理方法 | |
CN103927270A (zh) | 一种面向多个粗粒度动态可重构阵列的共享数据缓存装置及控制方法 | |
CN113032007B (zh) | 一种数据处理方法及装置 | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20220391320A1 (en) | Operation device of convolutional neural network, operation method of convolutional neural network and computer program stored in a recording medium to execute the method thereof | |
US11705207B2 (en) | Processor in non-volatile storage memory | |
US20170017400A1 (en) | Memory device, memory system including the same and operation method of memory device | |
CN114118348A (zh) | 加速器、操作加速器的方法以及包括加速器的电子装置 | |
CN113469336A (zh) | 优化神经网络模型的编译方法、执行方法及相关产品 | |
CN112396072B (zh) | 基于asic与vgg16的图像分类加速方法及装置 | |
CN114115507B (zh) | 存储器及写数据的方法 | |
US10275230B2 (en) | Cache aware self-referential structure peeling | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
US20200226203A1 (en) | Methods, apparatus, articles of manufacture to perform accelerated matrix multiplication | |
US20230273729A1 (en) | Core group memory processing with group b-float encoding | |
CN116051345A (zh) | 图像数据处理方法、装置、计算机设备及可读存储介质 | |
WO2024124807A1 (zh) | 一种ai芯片、张量处理方法及电子设备 | |
JP2023554311A (ja) | レジスタのニアメモリ決定 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |