CN110941789A - 张量运算方法和装置 - Google Patents
张量运算方法和装置 Download PDFInfo
- Publication number
- CN110941789A CN110941789A CN201811109603.XA CN201811109603A CN110941789A CN 110941789 A CN110941789 A CN 110941789A CN 201811109603 A CN201811109603 A CN 201811109603A CN 110941789 A CN110941789 A CN 110941789A
- Authority
- CN
- China
- Prior art keywords
- source data
- tensor
- data
- field
- target 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 11
- 238000011176 pooling Methods 0.000 claims description 11
- 238000013500 data storage Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000011022 operating instruction Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 8
- 238000007792 addition Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了一种张量运算方法、张量运算装置和计算机。该方法包括:接收张量运算指令,其包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段;解析张量运算指令;根据源数据结构描述字段和源数据寻址字段,从存储空间取得要执行运算的源数据;以及,对所取得的源数据执行指令类型字段定义的运算。这样,可以通过在张量运算指令中描述运算类型以及张量的数据结构和存储地址而直接快速地获取张量并执行运算,从而提高运算效率。
Description
技术领域
本申请总体上涉及计算机领域,且更具体地,涉及一种张量运算方法和装置以及实施该张量运算方法的计算设备。
背景技术
在人工智能领域,大量的相关计算,例如神经网络计算涉及到张量运算,例如矩阵运算,并且,现有的用于执行张量运算的装置主要是通用中央处理单元(CPU)和通用图形处理单元(GPU)。
具体地,通用CPU在进行张量运算时,通过寄存器堆和通用功能部件来执行通用指令。但是,由于单个通用CPU多用于标量计算,在进行多维张量的运算时运算性能较低。而如果使用多个通用CPU并行执行运算,其间的相互通信又可能成为性能瓶颈。
通用GPU在进行张量运算时,使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行张量运算。但是,GPU的片上缓存太小,在进行大规模张量运算时需要不断进行片外数据搬运,片外带宽成为主要性能瓶颈。
因此,期望改进的张量运算方案。
发明内容
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种张量运算方法、张量运算装置和计算机,其通过在张量运算指令中描述运算类型以及张量的数据结构和存储地址而直接快速地获取张量并执行运算,从而提高运算效率。
根据本申请的一个方面,提供了一种张量运算方法,包括:接收张量运算指令,所述张量运算指令包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段;解析所述张量运算指令;根据所述源数据结构描述字段和所述源数据寻址字段,从存储空间取得要执行运算的源数据;以及对所取得的源数据执行所述指令类型字段定义的运算。
在一些实施例中,所述张量运算指令还包括用于描述目标数据的结构的目标数据结构描述字段,以及用于描述目标数据在存储空间内的存储地址的目标数据寻址字段,且其中,所述方法还包括将所述源数据的运算结果作为目标数据,按照所述目标数据结构描述字段定义的数据结构存储到所述目标数据寻址字段定义的存储地址中。
在一些实施例中,所述运算类型包括:数据搬移,所述数据搬运包括数据加载、数据存储和数据移动;以及数据运算,所述数据运算包括加法、乘法、重排序、缩放、卷积和池化。
在一些实施例中,所述张量运算指令包括一个或多个源数据结构描述字段、与所述一个或多个源数据结构描述字段对应的一个或多个源数据寻址字段、一个或多个目标数据结构描述字段、以及与所述一个或多个目标数据结构描述字段对应的一个或多个目标数据寻址字段。
在一些实施例中,所述源数据寻址字段和所述目标数据寻址字段中的每个包括表示存储地址的立即数或指示存储有存储地址的寄存器的寄存器号。
在一些实施例中,所述源数据结构描述字段包括源数据维度、源数据在每个维度上的尺寸、以及源数据类型长度,其中,所述目标数据结构描述字段包括目标数据维度、目标数据在每个维度上的尺寸、以及目标数据类型长度,且其中,所述存储地址包括起始地址、维度存储顺序、以及每个维度的存储间隔。
在一些实施例中,在解析所述张量运算指令之后并且在取得要执行运算的源数据之前,所述张量运算方法还包括:将解析完成的所述张量运算指令存储在缓存队列中。
根据本申请的另一个方面,提供了一种张量运算装置,包括:撷取单元,用于取得张量运算指令;解析单元,用于解析所取得的张量运算指令,所述张量运算指令包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段;数据存取单元,用于根据所述源数据结构描述字段和所述源数据寻址字段,从存储空间取得要执行运算的源数据;以及计算执行单元,用于对所取得的源数据执行所述指令类型字段定义的运算。
在一些实施例中,所述张量运算指令还包括用于描述目标数据的结构的目标数据结构描述字段,以及用于描述目标数据在存储空间内的存储地址的目标数据寻址字段。
在一些实施例中,所述数据存取单元还用于将所述源数据的运算结果作为目标数据,按照所述目标数据结构描述字段定义的数据结构存储到所述目标数据寻址字段定义的存储地址中。
在一些实施例中,所述张量运算装置进一步包括:缓存单元,用于将解析后的张量运算指令存储在缓存队列中。
根据本申请的另一个方面,提供了一种计算机,包括:处理器;以及存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行上述张量运算方法。
根据本申请的另一个方面,提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行上述张量运算方法。
与现有技术相比,本申请提供的张量运算方法、张量运算装置和计算机可以接收张量运算指令,所述张量运算指令包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段;解析所述张量运算指令;根据所述源数据结构描述字段和所述源数据寻址字段,从存储空间取得要执行运算的源数据;以及,对所取得的源数据执行所述指令类型字段定义的运算。这样,可以通过在张量运算指令中描述运算类型以及张量的数据结构和存储地址而直接快速地获取张量并执行运算,从而提高运算效率。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1图示了根据本申请实施例的张量运算指令的结构的示意图。
图2图示了根据本申请实施例的张量运算方法的流程图。
图3图示了根据本申请实施例的目标数据存储示例的示意图。
图4图示了根据本申请实施例的数据结构描述字段的示意图。
图5图示了根据本申请实施例的数据寻址字段的示意图。
图6图示了根据本申请实施例的张量运算装置的框图。
图7图示了根据本申请实施例的计算机的框图。
具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
申请概述
如上所述,由于通用CPU和GPU在人工智能相关的张量运算,例如神经网络运算方面存在效率不高问题,需要提高张量运算的效率。例如,谷歌开发了专门用于执行张量运算的处理器TPU来提高效率,不过目前并不对外公开和销售TPU。
针对上述技术问题,本申请的基本构思是通过直接在张量运算指令中描述运算类型以及张量的数据结构和存储地址,来使得处理器可以直接快速地获取张量并且执行运算。
具体地,本申请提供了一种张量运算方法、张量运算装置和计算机,其首先接收张量运算指令,所述张量运算指令包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段,然后解析所述张量运算指令,并根据所述源数据结构描述字段和所述源数据寻址字段,从存储空间取得要执行运算的源数据,最后对所取得的源数据执行所述指令类型字段定义的运算。这样,可以直接快速地获取张量并执行运算,从而提高运算效率。
这里,本领域技术人员可以理解,本申请提供的张量运算方法可以通过专门开发的用于执行上述张量运算指令的新硬件架构来实现,也可以通过对现有的CPU、GPU或者FPGA等的改进来使用上述张量运算指令。
在介绍了本申请的基本原理之后,下面将参考附图来具体介绍本申请的各种非限制性实施例。
示例性指令结构
图1图示了根据本申请实施例的张量运算指令的结构的示意图。
如图1所示,根据本申请实施例的张量运算指令100包括指令类型字段110,源数据结构描述字段120以及源数据寻址字段130。
具体地,指令类型字段110用于描述所述张量运算指令100所涉及的张量运算的类型,或者说张量运算指令100所执行的功能,比如数据搬移、数据运算等。
源数据结构描述字段120用于描述源数据的结构,比如多维数据在每个维度上的大小、数据长度等。
源数据寻址字段130用于描述源数据在存储空间内的存储地址,其与所述源数据结构描述字段120一起用于从存储空间获得所述源数据,以执行所述指令类型字段110定义的运算。
可以理解,源数据寻址字段130可以包括表示存储地址的立即数,或者也可以包括指示存储有存储地址的寄存器的寄存器号,从而可以通过访问寄存器来取得存储地址。
另外,取决于张量运算所涉及的源数据的数目,所述源数据结构描述字段120和源数据寻址字段130的数目与所述源数据的数目相对应。
各个字段的具体结构和应用将在下面结合附图对根据本申请实施例的张量运算方法的描述中变得更显而易见。
示例性方法
图2图示了根据本申请实施例的张量运算方法的流程图。
如图2所示,根据本申请实施例的张量运算方法包括:
步骤S210,接收张量运算指令,如上所述,张量运算指令可包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段;
步骤S220,解析所述张量运算指令,从而可以确定指令中包括的字段以及其具体内容;
步骤S230,根据通过解析确定的源数据结构描述字段和源数据寻址字段,从存储空间取得要执行运算的源数据;以及
步骤S240,对所取得的源数据执行指令类型字段定义的运算。
在步骤S210中,接收张量运算指令。其中,张量运算指令可以预先存储在存储器或者指令高速缓存之中,下面描述的撷取单元可以从这些存储器或者指令高速缓存中取得张量运算指令。这里,所述张量运算指令的结构已经在上面参考图1进行了描述,并且,本领域技术人员可以理解,本申请实施例中的张量可包括具有各种维度的张量,例如可以是一维张量,即向量,也可以是二维张量,即矩阵,并且也可以是三维、四维等更高维的张量等。以人工智能领域的计算为例,卷积运算中常用的张量为三维张量。
相应地,运算类型涉及对张量的各种操作和运算,典型地包括数据搬移和数据运算。数据搬移操作的示例包括但不限于数据加载、数据存储和数据移动等。例如,数据加载可以指的是将张量数据从外部存储器空间例如硬盘或固态存储器SSD移动到内部存储空间例如DDR内存或SRAM高速缓存,数据存储可以是指将张量数据从内部存储空间例如DDR内存或SRAM高速缓存存储到外部存储空间,数据移动可以是张量数据在内部存储空间或缓存等内的移动。数据运算的示例包括但不限于加法、乘法、重排序、缩放、卷积和池化等等,比如向量相加、向量相乘、矩阵乘法等。这里,例如,重排序指的是将张量数据的存储顺序改变并重新进行存储,卷积指的是对两个张量数据,例如两个矩阵进行卷积操作,并获得另一张量数据,例如另一矩阵并进行存储,而池化指的是对于一个张量数据进行池化操作以获得另一张量数据并进行存储。这里描述的对张量的各种操作和运算不限于任何特定的操作和运算,例如卷积可包括深度方向(depthwise)卷积、逐像素(pointwise)卷积、分组卷积、稀疏卷积等各种卷积运算,池化可包括最大池化、最小池化、平均池化、全局池化等。本领域技术人员可以理解的是,数据运算还可以包括对于张量的更复杂的运算,比如高维数据的降维运算等。对于相关领域的技术人员而言,各种数据操作包括搬运和运算等都是已知的,这里不再一一例举。
关于源数据结构描述字段和源数据寻址字段的具体内容和如何基于这些字段来获取源数据,将在下文进行进一步说明。
在步骤S220中,解析所述张量运算指令。也就是说,通过解析所述张量运算指令,确定指令中包括的字段,例如有多少个源数据结构描述字段和源数据寻址字段,其表明计算需要使用多少个源数据,以及各个字段的内容。例如,通过解析步骤S220可以确定张量运算指令所涉及的运算类型、运算所涉及的源数据的结构及在存储空间内的存储地址等。
可选地,在步骤S220之后,进一步包括将解析完的张量运算指令存储在缓存队列中,这尤其适用于多条张量运算指令的情况。也就是说,在将多条张量运算指令解析完成之后,可以将解析完的这多条张量运算指令存储在缓存队列中,并在前一条张量运算指令所对应的数据存取和运算操作完成之后,从所述缓存队列中取出下一条解析完的张量运算指令,获取相应的数据并执行运算。
接下在步骤S230中,可以根据解析步骤确定的源数据结构描述字段和源数据寻址字段,从存储空间取得要执行运算的各个源数据。应理解,如前所述,源数据寻址字段可以包括表示存储地址的立即数,或者也可以包括指示存储有存储地址的寄存器的寄存器号,从而可以通过访问寄存器来取得存储地址。源数据可存储在例如处理器的高速缓存例如SRAM存储器中,此时源数据寻址字段指示源数据在高速缓存中的地址。在另一些实施例中,源数据也可存储在例如处理器外部的内存例如DDR存储器中,此时源数据寻址字段指示源数据在内存中的地址。
具体地,源数据结构描述字段用于描述源数据的结构。例如,对于三维数据来说,需要描述三个维度的尺寸,即,x方向的尺寸Size_x,y方向尺寸Size_y,z方向尺寸Size_z,以及数据类型长度,如8位,16位等。在一些实施例中,源数据结构描述字段还可以包括符号标记,其指示源数据是有符号数还是无符号数。
并且,源数据寻址字段描述源数据在存储空间内的存储结构。例如,对于三维数据,包括数据的起始地址Addr_st,xyz方向的存储顺序,x方向存储间隔stride_x,y方向存储间隔stride_y,z方向存储间隔stride_z。并且,存储顺序可以采用默认的固定存储顺序,例如对于三维数据的xyz方向的存储顺序。这样,可以获得张量数据的任何部分在存储空间中的存储地址。例如,以三维数据的存储顺序为xyz为例,其中任何一点(x,y,z)在存储空间中的地址计算公式是,Addr_st+x*stride_x+y*stride_y+z*stride_z。
这里,本领域技术人员可以理解,针对固定的存储空间大小,存储间隔与数据尺寸之间需要满足预定条件,即,同样以三维数据为例,假设存储空间内存储n个数据点,那么需要满足stride_x≥Size_x/n,stride_y≥Size_y/n,且stride_z≥Size_z/n。
因此,在根据本申请实施例的张量运算方法中,所述源数据结构描述字段包括源数据维度、源数据在每个维度上的尺寸、以及源数据类型长度,且,所述源数据寻址字段包括起始地址、维度存储顺序、以及每个维度的存储间隔。
并且,如上所述,在根据本申请实施例的张量运算方法中,取决于源数据的数目,所述张量运算指令可以包括一个或多个源数据结构描述字段以及分别与所述一个或多个源数据结构描述字段对应的一个或多个源数据寻址字段。例如,对于卷积操作,一个源数据可以是特征数据张量,另一个源数据可以是卷积核张量。这里,每个源数据结构描述字段和每个源数据寻址字段的内容与上面所述的相同,这里就不再赘述。
在步骤S240中,对所取得的源数据执行所述指令类型字段定义的运算。也就是,通过解析所述张量运算指令,可以直接根据上述步骤S130中说明的方式快速地获得源数据,并基于所确定的张量运算类型执行相应的运算,提高了张量运算的计算效率。
此外,在根据本申请实施例的张量运算方法中,所述张量运算指令还可以描述目标数据的数据结构以及存储地址。也就是说,所述张量运算指令可以进一步包括用于描述目标数据的结构的目标数据结构描述字段,以及用于描述目标数据在存储空间内的存储地址的目标数据寻址字段。目标数据也就是步骤S240的计算所产生的结果数据。可以理解,目标数据结构描述字段和目标数据寻址字段可以分别与源数据结构描述字段和源数据寻址字段类似,区别仅在于后者描述运算源数据,前者描述运算结果(目标)数据。例如,与源数据寻址字段类似,目标数据寻址字段也可以包括表示目标数据存储地址的立即数,或者也可以包括指示存储有存储地址的寄存器的寄存器号,从而可以通过访问寄存器来取得存储地址。因此,这里不再对目标数据结构描述字段和目标数据寻址字段进行重复的详细描述。应理解,目标数据的数据结构可以与源数据的数据结构不同。
这样,可以进一步按照目标数据结构描述字段定义的数据结构将作为运算结果的目标数据存储到目标数据寻址字段定义的存储地址中,从而实现目标数据按所需方式的存储,这在张量相关的运算中是特别有利的。以卷积运算为例,其计算过程涉及用卷积核对多通道图像数据的各个部分依次进行卷积运算,其每次卷积运算的结果又作为一幅图像的一部分。通过将每次卷积运算得到的一部分图像按照预定的规则存储,可以最终实现整幅图像按照预定顺序连续存储。这样,便于内部地址管理,也便于对该幅图像数据的后续操作例如加载、移动、运算等,从而进一步提高运算效率。
图3图示了根据本申请实施例的目标数据的示例,通过其来说明上述存储的原理。如图3所示,如果每次卷积之后得到的数据是3*3*3的数据,最终形成9*9*3的整幅图像数据,则包括243个像素点。存储时,期望图3所示的整幅图像数据按预定顺序存储在存储器中,其一般按xyz的顺序存储,如果起始存储位置设置为0,则这243个像素点按照xyz的顺序存储在0-242这些存储地址中。对于每个像素点xyz,其存储位置为(x-1)+(y-1)*9+(z-1)*81。如果某次计算后得到的目标数据为x=4至6,y=4至6,z=1至3,如图中的虚线框所示,则这27个数据的期望存储位置为30-32、39-41、48-50、111-113、120-122、129-131、192-194、201-203、210-212。因此,可以将该目标数据的存储起始位置Addr_st设置为30,存储顺序是xyz,每个维度方向的尺寸Size_x、Size_y和Size_z均为3,x方向的存储间隔stride_x为1,y方向的存储间隔stride_y为9,z方向的存储间隔stride_z为81。这样,就可以将虚线框所示的3*3*3的目标数据存储在预定位置,最终使得整幅图像按照xyz的顺序存储在0-242的连续存储位置中,以便于对该幅图像的后续操作。可以理解,计算获得的目标数据又可以用作例如神经网络中的下一层计算的源数据,因此源数据和目标数据的数据结构描述字段和地址字段可以彼此类似,但是其值,即所定义的具体数据结构和存储位置,可以彼此不同。
如上所述,通过为目标数据指定数据结构和存储地址,可以将多个运算产生的多个目标数据分别存储到预定位置,从而使得这多个目标数据作为一个整体,按照期望的顺序存储,而不同于将各个目标数据按顺序存储所产生的存储阵列。这样,可以有利于后面对这多个目标数据构成的整体数据的地址管理以及运算操作等,从而进一步提高与之相关的计算效率。
图4图示了根据本申请实施例的数据结构描述字段的示意图。如图4所示,所述数据结构描述字段300包括数据维度310,第一维度尺寸320-1、第二维度尺寸320-2、…、第n维度尺寸320-n,以及数据类型长度330,其具体说明与上述的相同,在此不再赘述。
图5图示了根据本申请实施例的数据寻址字段的示意图。如图5所示,所述数据寻址字段400包括起始地址410,维度存储顺序420,第一维度间隔430-1、第二维度间隔430-2、…、第n维度间隔430-n。同样,其具体说明与上述的相同,在此不再赘述。如上所述,源数据和目标数据的数据结构描述字段和数据寻址字段可以是彼此类似的。
如前所述,所述源数据寻址字段和所述目标数据寻址字段可以包括表示数据存储地址的立即数,或者也可以包括指示存储有存储地址的寄存器的寄存器号,从而可以通过访问寄存器来取得存储地址。与立即数相比,可以用更少的比特数来表示寄存器号,从而可以使指令更短,从而提高运行效率。
示例性装置
图6图示了根据本申请实施例的张量运算装置的框图。
如图6所示,根据本申请实施例的张量运算装置500包括:解析单元510,有时候也称为指令译码器,用于解析所接收到的张量运算指令,所述张量运算指令包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段;数据存取单元520,用于根据所述源数据结构描述字段和所述源数据寻址字段,从存储空间例如高速缓存或内存取得要执行运算的源数据;以及,计算执行单元530,用于对所取得的源数据执行所述指令类型字段定义的运算。
在一个示例中,在上述张量运算装置500中,所述张量运算指令还包括用于描述目标数据的结构的目标数据结构描述字段,以及用于描述目标数据在存储空间内的存储地址的目标数据寻址字段。
在一个示例中,在上述张量运算装置500中,所述数据存取单元520还用于将所述源数据的运算结果作为目标数据,按照所述目标数据结构描述字段定义的数据结构存储到所述目标数据寻址字段定义的存储地址中。
在一个示例中,在上述张量运算装置500中,所述运算类型包括:数据搬移,所述数据搬运包括数据加载、数据存储和数据移动;以及,数据运算,所述数据运算包括加法、乘法、重排序、缩放、卷积和池化。
在一个示例中,在上述张量运算装置500中,所述张量运算指令包括一个或多个源数据结构描述字段、与所述一个或多个源数据结构描述字段对应的一个或多个源数据寻址字段、一个或多个目标数据结构描述字段、以及与所述一个或多个目标数据结构描述字段对应的一个或多个目标数据寻址字段。
在一个示例中,在上述张量运算装置500中,所述源数据结构描述字段包括源数据维度、源数据在每个维度上的尺寸、以及源数据类型长度,其中,所述源数据寻址字段包括起始地址、维度存储顺序、以及每个维度的存储间隔,其中,所述目标数据结构描述字段包括目标数据维度、目标数据在每个维度上的尺寸、以及目标数据类型长度,且其中,所述目标数据寻址字段包括起始地址、维度存储顺序、以及每个维度的存储间隔。
在一个示例中,在上述张量运算装置500中,进一步包括:撷取单元540,用于从用于存储所述张量运算指令的存储器取出所述张量运算指令。
在一个示例中,在上述张量运算装置500中,进一步包括:缓存单元550,用于将解析后的张量运算指令存储在缓存队列中。
这里,本领域技术人员可以理解,上述张量运算装置500中的各个单元和模块的具体功能和操作已经在上面参考图1到图5的描述中得到了详细介绍,并因此,将省略其重复描述。
如上所述,根据本申请实施例的张量运算装置500可以实现在各种终端设备中,例如用于进行张量运算的计算机等。在一个示例中,根据本申请实施例的张量运算装置500可以作为一个软件模块和/或硬件模块而集成到终端设备中。例如,该张量运算装置500可以是该终端设备的操作系统中的一个软件模块,或者可以是针对于该终端证设备所开发的一个应用程序;当然,该张量运算装置500同样可以是该终端设备的众多硬件模块之一。
替换地,在另一示例中,该张量运算装置500与该终端设备也可以是分立的设备,并且该张量运算装置500可以通过有线和/或无线网络连接到该终端设备,并且按照约定的数据格式来传输交互信息。
示例性计算机
图7图示了根据本申请实施例的计算机的框图。
如图7所示,计算机10包括处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,比如图形处理单元(GPU),或者也可以是其他类型的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的张量运算方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如源数据、目标数据等各种内容。
在一个示例中,计算机10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,该输入装置13可以包括例如键盘、鼠标等。
该输出装置14可以向外部输出各种信息,包括张量运算的运算结果等。该输出设备14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图7中仅示出了该计算机10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,计算机10还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的张量运算方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的张量运算方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (13)
1.一种张量运算方法,包括:
接收张量运算指令,所述张量运算指令包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段;
解析所述张量运算指令;
根据所述源数据结构描述字段和所述源数据寻址字段,从存储空间取得要执行运算的源数据;以及
对所取得的源数据执行所述指令类型字段定义的运算。
2.如权利要求1所述的张量运算方法,其中,所述张量运算指令还包括用于描述目标数据的结构的目标数据结构描述字段,以及用于描述目标数据在存储空间内的存储地址的目标数据寻址字段,且
其中,所述方法还包括将所述源数据的运算结果作为目标数据,按照所述目标数据结构描述字段定义的数据结构存储到所述目标数据寻址字段定义的存储地址中。
3.如权利要求1所述的张量运算方法,其中,所述运算类型包括:
数据搬移,所述数据搬运包括数据加载、数据存储和数据移动;以及
数据运算,所述数据运算包括加法、乘法、重排序、缩放、卷积和池化。
4.如权利要求2所述的张量运算方法,其中,所述张量运算指令包括一个或多个源数据结构描述字段、与所述一个或多个源数据结构描述字段对应的一个或多个源数据寻址字段、一个或多个目标数据结构描述字段、以及与所述一个或多个目标数据结构描述字段对应的一个或多个目标数据寻址字段。
5.如权利要求4所述的张量运算方法,其中,所述源数据寻址字段和所述目标数据寻址字段中的每个包括表示存储地址的立即数或指示存储有存储地址的寄存器的寄存器号。
6.如权利要求5所述的张量运算方法,其中,所述源数据结构描述字段包括源数据维度、源数据在每个维度上的尺寸、以及源数据类型长度,
其中,所述目标数据结构描述字段包括目标数据维度、目标数据在每个维度上的尺寸、以及目标数据类型长度,且
其中,所述存储地址包括起始地址、维度存储顺序、以及每个维度的存储间隔。
7.如权利要求1所述的张量运算方法,其中,在解析所述张量运算指令之后并且在取得要执行运算的源数据之前,所述张量运算方法还包括:
将解析完成的所述张量运算指令存储在缓存队列中。
8.一种张量运算装置,包括:
撷取单元,用于取得张量运算指令;
解析单元,用于解析所取得的张量运算指令,所述张量运算指令包括用于描述运算类型的指令类型字段,用于描述源数据的结构的源数据结构描述字段,以及用于描述源数据在存储空间内的存储地址的源数据寻址字段;
数据存取单元,用于根据所述源数据结构描述字段和所述源数据寻址字段,从存储空间取得要执行运算的源数据;以及
计算执行单元,用于对所取得的源数据执行所述指令类型字段定义的运算。
9.如权利要求8所述的张量运算装置,其中,所述张量运算指令还包括用于描述目标数据的结构的目标数据结构描述字段,以及用于描述目标数据在存储空间内的存储地址的目标数据寻址字段。
10.如权利要求9所述的张量运算装置,其中,所述数据存取单元还用于将所述源数据的运算结果作为目标数据,按照所述目标数据结构描述字段定义的数据结构存储到所述目标数据寻址字段定义的存储地址中。
11.如权利要求8所述的张量运算装置,进一步包括:
缓存单元,用于将解析后的张量运算指令存储在缓存队列中。
12.一种计算机,包括:
处理器;以及
存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如权利要求1-7中的任一项所述的张量运算方法。
13.一种计算机可读介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如权利要求1-7中的任一项所述的张量运算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811109603.XA CN110941789B (zh) | 2018-09-21 | 2018-09-21 | 张量运算方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811109603.XA CN110941789B (zh) | 2018-09-21 | 2018-09-21 | 张量运算方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110941789A true CN110941789A (zh) | 2020-03-31 |
CN110941789B CN110941789B (zh) | 2023-12-15 |
Family
ID=69904576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811109603.XA Active CN110941789B (zh) | 2018-09-21 | 2018-09-21 | 张量运算方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110941789B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022022279A1 (en) * | 2020-07-27 | 2022-02-03 | Huawei Technologies Co., Ltd. | Systems, methods and media for dynamically shaped tensors using liquid types |
CN114218152A (zh) * | 2021-12-06 | 2022-03-22 | 海飞科(南京)信息技术有限公司 | 流处理方法、处理电路和电子设备 |
CN114489806A (zh) * | 2021-01-26 | 2022-05-13 | 沐曦集成电路(上海)有限公司 | 处理器装置及多维数据读写方法、计算设备 |
WO2022100286A1 (zh) * | 2020-11-13 | 2022-05-19 | 中科寒武纪科技股份有限公司 | 数据处理装置、数据处理方法及相关产品 |
CN115599442A (zh) * | 2022-12-14 | 2023-01-13 | 成都登临科技有限公司(Cn) | 一种ai芯片、电子设备及张量处理方法 |
CN115658146A (zh) * | 2022-12-14 | 2023-01-31 | 成都登临科技有限公司 | 一种ai芯片、张量处理方法及电子设备 |
CN116202760A (zh) * | 2023-05-05 | 2023-06-02 | 赛腾机电科技(常州)有限公司 | 用于机械故障诊断的三阶张量的奇异值分解方法及系统 |
CN116861149A (zh) * | 2023-09-05 | 2023-10-10 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
WO2024124807A1 (zh) * | 2022-12-14 | 2024-06-20 | 成都登临科技有限公司 | 一种ai芯片、张量处理方法及电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4633389A (en) * | 1982-02-03 | 1986-12-30 | Hitachi, Ltd. | Vector processor system comprised of plural vector processors |
JPH09198374A (ja) * | 1996-01-23 | 1997-07-31 | Hitachi Ltd | ベクトル処理装置 |
US6212622B1 (en) * | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
CN106991077A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种矩阵计算装置 |
CN106990940A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种向量计算装置 |
CN107111489A (zh) * | 2014-11-14 | 2017-08-29 | 英特尔公司 | 莫顿坐标调整处理器、方法、系统和指令 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
US20180004510A1 (en) * | 2016-07-02 | 2018-01-04 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
CN107608715A (zh) * | 2017-07-20 | 2018-01-19 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置及方法 |
CN107766079A (zh) * | 2016-08-19 | 2018-03-06 | 北京百度网讯科技有限公司 | 处理器以及用于在处理器上执行指令的方法 |
CN107977231A (zh) * | 2017-12-15 | 2018-05-01 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
-
2018
- 2018-09-21 CN CN201811109603.XA patent/CN110941789B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4633389A (en) * | 1982-02-03 | 1986-12-30 | Hitachi, Ltd. | Vector processor system comprised of plural vector processors |
JPH09198374A (ja) * | 1996-01-23 | 1997-07-31 | Hitachi Ltd | ベクトル処理装置 |
US6212622B1 (en) * | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
CN107111489A (zh) * | 2014-11-14 | 2017-08-29 | 英特尔公司 | 莫顿坐标调整处理器、方法、系统和指令 |
CN106991077A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种矩阵计算装置 |
CN106990940A (zh) * | 2016-01-20 | 2017-07-28 | 南京艾溪信息科技有限公司 | 一种向量计算装置 |
CN107315574A (zh) * | 2016-04-26 | 2017-11-03 | 北京中科寒武纪科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
US20180004510A1 (en) * | 2016-07-02 | 2018-01-04 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
CN107766079A (zh) * | 2016-08-19 | 2018-03-06 | 北京百度网讯科技有限公司 | 处理器以及用于在处理器上执行指令的方法 |
CN107608715A (zh) * | 2017-07-20 | 2018-01-19 | 上海寒武纪信息科技有限公司 | 用于执行人工神经网络正向运算的装置及方法 |
CN107977231A (zh) * | 2017-12-15 | 2018-05-01 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
Non-Patent Citations (1)
Title |
---|
尹孟嘉: "GPU矩阵乘法的性能定量分析模型", 《计算机科学》, pages 13 - 17 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022022279A1 (en) * | 2020-07-27 | 2022-02-03 | Huawei Technologies Co., Ltd. | Systems, methods and media for dynamically shaped tensors using liquid types |
US11275671B2 (en) | 2020-07-27 | 2022-03-15 | Huawei Technologies Co., Ltd. | Systems, methods and media for dynamically shaped tensors using liquid types |
WO2022100286A1 (zh) * | 2020-11-13 | 2022-05-19 | 中科寒武纪科技股份有限公司 | 数据处理装置、数据处理方法及相关产品 |
CN114489806A (zh) * | 2021-01-26 | 2022-05-13 | 沐曦集成电路(上海)有限公司 | 处理器装置及多维数据读写方法、计算设备 |
CN114489806B (zh) * | 2021-01-26 | 2024-08-09 | 沐曦集成电路(上海)有限公司 | 处理器装置及多维数据读写方法、计算设备 |
CN114218152A (zh) * | 2021-12-06 | 2022-03-22 | 海飞科(南京)信息技术有限公司 | 流处理方法、处理电路和电子设备 |
CN114218152B (zh) * | 2021-12-06 | 2023-08-15 | 海飞科(南京)信息技术有限公司 | 流处理方法、处理电路和电子设备 |
CN115658146B (zh) * | 2022-12-14 | 2023-03-31 | 成都登临科技有限公司 | 一种ai芯片、张量处理方法及电子设备 |
CN115599442B (zh) * | 2022-12-14 | 2023-03-10 | 成都登临科技有限公司 | 一种ai芯片、电子设备及张量处理方法 |
CN115658146A (zh) * | 2022-12-14 | 2023-01-31 | 成都登临科技有限公司 | 一种ai芯片、张量处理方法及电子设备 |
WO2024124807A1 (zh) * | 2022-12-14 | 2024-06-20 | 成都登临科技有限公司 | 一种ai芯片、张量处理方法及电子设备 |
CN115599442A (zh) * | 2022-12-14 | 2023-01-13 | 成都登临科技有限公司(Cn) | 一种ai芯片、电子设备及张量处理方法 |
CN116202760A (zh) * | 2023-05-05 | 2023-06-02 | 赛腾机电科技(常州)有限公司 | 用于机械故障诊断的三阶张量的奇异值分解方法及系统 |
CN116202760B (zh) * | 2023-05-05 | 2023-08-18 | 赛腾机电科技(常州)有限公司 | 用于机械故障诊断的三阶张量的奇异值分解方法及系统 |
CN116861149A (zh) * | 2023-09-05 | 2023-10-10 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
CN116861149B (zh) * | 2023-09-05 | 2024-01-09 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN110941789B (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110941789B (zh) | 张量运算方法和装置 | |
EP3832499B1 (en) | Matrix computing device | |
CN110582785B (zh) | 配置用于执行层描述符列表的具有功率效率的深度神经网络模块 | |
EP3407182B1 (en) | Vector computing device | |
US10540574B2 (en) | Image compression method and related device | |
Cavigelli et al. | Accelerating real-time embedded scene labeling with convolutional networks | |
US9235769B2 (en) | Parallel object detection method for heterogeneous multithreaded microarchitectures | |
EP3451162A1 (en) | Device and method for use in executing matrix multiplication operations | |
EP3910503A1 (en) | Device and method for executing matrix addition/subtraction operation | |
KR20200143685A (ko) | 연산을 가속하기 위한 방법 및 가속기 장치 | |
JP2021521516A (ja) | 演算を加速するための加速器及びシステム | |
US20190179635A1 (en) | Method and apparatus for tensor and convolution operations | |
US20120221788A1 (en) | Multi-dimensional array manipulation | |
US20180121388A1 (en) | Symmetric block sparse matrix-vector multiplication | |
EP3832500B1 (en) | Device and method for performing vector four-fundamental-rule operation | |
KR102371844B1 (ko) | 인공 지능 칩에 적용되는 산출 방법 및 인공 지능 칩 | |
EP3451160B1 (en) | Apparatus and method for performing vector outer product arithmetic | |
US11550586B2 (en) | Method and tensor traversal engine for strided memory access during execution of neural networks | |
US20220012578A1 (en) | Methods, apparatus, and articles of manufacture to increase utilization of neural network (nn) accelerator circuitry for shallow layers of an nn by reformatting one or more tensors | |
US20190278574A1 (en) | Techniques for transforming serial program code into kernels for execution on a parallel processor | |
CN107408293B (zh) | 支持计算装置处的图形命令流中对命令缓冲器的多级嵌套 | |
EP3447690A1 (en) | Maxout layer operation apparatus and method | |
US20220100813A1 (en) | Dynamically adaptable arrays for vector and matrix operations | |
CN113688982A (zh) | 处理单元、相关装置和方法 | |
EP4268176A1 (en) | Condensed command packet for high throughput and low overhead kernel launch |
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 |