CN114691353A - 一种张量的读取方法、装置以及相关产品 - Google Patents
一种张量的读取方法、装置以及相关产品 Download PDFInfo
- Publication number
- CN114691353A CN114691353A CN202011643171.8A CN202011643171A CN114691353A CN 114691353 A CN114691353 A CN 114691353A CN 202011643171 A CN202011643171 A CN 202011643171A CN 114691353 A CN114691353 A CN 114691353A
- Authority
- CN
- China
- Prior art keywords
- data
- tensor
- storage
- natural
- parameter
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 238000003672 processing method Methods 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 5
- 238000012545 processing Methods 0.000 description 53
- WURBVZBTWMNKQT-UHFFFAOYSA-N 1-(4-chlorophenoxy)-3,3-dimethyl-1-(1,2,4-triazol-1-yl)butan-2-one Chemical compound C1=NC=NN1C(C(=O)C(C)(C)C)OC1=CC=C(Cl)C=C1 WURBVZBTWMNKQT-UHFFFAOYSA-N 0.000 description 30
- 238000013473 artificial intelligence Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 230000009466 transformation Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000011692 calcium ascorbate Substances 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 239000004277 Ferrous carbonate Substances 0.000 description 1
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 239000001099 ammonium carbonate Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- VEXZGXHMUGYJMC-UHFFFAOYSA-N hydrochloric acid Substances Cl VEXZGXHMUGYJMC-UHFFFAOYSA-N 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- BWHMMNNQKKPAPP-UHFFFAOYSA-L potassium carbonate Substances [K+].[K+].[O-]C([O-])=O BWHMMNNQKKPAPP-UHFFFAOYSA-L 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- PPASLZSBLFJQEF-RKJRWTFHSA-M sodium ascorbate Substances [Na+].OC[C@@H](O)[C@H]1OC(=O)C(O)=C1[O-] PPASLZSBLFJQEF-RKJRWTFHSA-M 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种张量的读取方法,该方法在描述张量时加入了取数步幅和偏移值的描述,在接收到需要读取不同自然语义的同一内存空间数据对应的张量时,能通过重新设置新的取数步幅和偏移值的方式,获得不同自然语义描述下的张量。本申请提供的方法无需在转换自然语义时拷贝张量内存空间的数据,节省了运行时间与运行内存,达到了提升运算速度,减少内存开销大的效果。
Description
技术领域
本发明涉及电子技术领域,尤其涉及一种张量的读取方法、装置以及相关产品。
背景技术
目前,为了提高运算效率,通常将数据以向量形式进行存储,而张量就是更高维度的向量,通常应用于深度学习中。张量的描述符用于描述张量各维度的自然语义与数据排布的关系,不同张量的自然语义可能会不同,常见自然语义有NCL、NCHW、NHWC以及NHWCD等,其中,N为数据批次(number),C为每个数据的通道数(channel),L为每个通道的长度(length),H为每个通道的高度(height),W为每个通道的宽度(width),D为每个通道的深度(depth)。在实际操作过程中,为了将多个张量进行计算,需要将多个张量统一自然语义。例如,一个张量的自然语义是NCHW,另一个张量的自然语义是NHWC,为了对这两个张量进行运算,需要将转换张量的自然语义。现有技术通常是将张量对应的内存空间数据拷贝并重新按另一种自然语义对应的描述符进行排布,并生成新的张量,但是拷贝内存空间的数据会带来时间开销,且占用了额外的内存空间。
由此,如何在张量转换自然语义时不占用额外内存,提高转换效率是亟待解决的问题。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本申请的目的在于提供一种张量的读取方法、转换方法、装置以及相关产品。
目标和其他目标将通过独立权利要求中的特征来达成。进一步的实现方式在从属权利要求、说明书和附图中体现。
第一方面,本申请提供一种张量的读取方法,该方法包括:获取内存空间中数据的存储信息,存储信息包括存储数据以及存储顺序;确定第一张量的第一数据自然语义,第一数据自然语义用于标识第一张量的数据排布;在第一张量的数据排布与存储顺序不一致的情况下,根据第一数据自然语义与存储数据的对应关系,从内存空间中读取第一张量。
结合第一方面,在一些实施例中,在第一张量的数据排布与存储顺序一致的情况下,根据存储顺序生成第一参数,其中,第一参数包括第一偏移值,第一取数步幅以及第一描述符;根据第一参数读取第一张量。
结合第一方面,在一些实施例中,第一参数还包括:第一大小、第一内存空间,第一数据类型,第一维度数;第一描述符用于描述第一张量的数据排布与第一自然语义的关系;第一取数步幅是基于第一大小与第一维度数确定的。
结合第一方面,在一些实施例中,在第一张量的数据排布与存储顺序不一致的情况下,根据第一数据自然语义与存储数据的对应关系,从内存空间中读取第一张量,包括:根据存储顺序生成第一参数;根据第一数据自然语义将第一参数转换第二参数,第二参数包括第二偏移值,第二取数步幅以及第二描述符;根据第二参数读取第一张量。
结合第一方面,在一些实施例中,该方法还包括:确定第二数据自然语义,第二数据自然语义用于标识第二张量的数据排布;根据第二数据自然语义与第一数据自然语义的对应关系,将第二参数转换为第三参数;基于第三参数将第一张量转换为第二张量,其中,第三参数包括第三偏移值以及第三取数步幅以及第三描述符。
结合第一方面,在一些实施例中,第二参数还包括:第二大小,第二维度数,第二数据类型;第三参数还包括:第三大小,第三维度数,第三数据类型;其中,第二数据类型与第三数据类型与内存空间中数据的数据类型一致。
结合第一方面,在一些实施例中,第一数据自然语义与第二数据自然语义的维度相同,顺序不同;或者,第一数据自然语义与第二数据自然语义的维度不同。
第二方面,本申请提供一种张量的读取装置,其特征在于,张量的读取装置包括:获取单元、确定单元以及读取单元:获取单元用于获取内存空间中数据的存储信息,存储信息包括存储数据以及存储顺序;确定单元用于确定第一张量的第一数据自然语义,第一数据自然语义用于标识第一张量的数据排布;读取单元用于在第一张量的数据排布与存储顺序不一致的情况下,根据第一数据自然语义与存储数据的对应关系,从内存空间中读取第一张量。
结合第二方面,该张量的读取装置还包括:转换单元;该转换单元用于基于第三参数将第一张量转换为第二张量,其中,第三参数包括第三偏移值以及第三取数步幅以及第三描述符。
第三方面,本方案实施例提供一种电子设备,其特征在于,电子设备包括张量的读取装置,张量的读取装置执行如第一方面中的任一可能的实现方式。
第四方面,本方案实施例提供一种计算机可读存储介质,其特征在于,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如第一方面中的任一可能的实现方式。
可以看到,本申请通过在描述张量时加入取数步幅和偏移值的描述,能够从同一存储空间读取出不同自然语义的张量。解决了转换张量自然语义时需要拷贝内存空间数据的问题,进而减少了时间开销以及额外的内存空间的占用。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的一种电子设备结构示意图;
图2是本发明实施例提供的一种张量含义说明示意图;
图3是本发明实施例提供的一种通用张量转换方法示意图;
图4是本发明实施例提供的一种张量的读取方法流程示意图;
图5是本发明实施例提供的一种张量的读取方法在一种应用场景中的流程示意图;
图6是本发明实施例提供的一种生成张量的步骤示意图;
图7是本发明实施例提供的一种张量的转换装置结构示意图;
图8是本发明实施例提供的一种组合装置结构示意图;
图9是本发明实施例提供的一种板卡结构示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清除、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。需要说明的是,本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
请参阅图1,图1是本申请实施例提供的一种电子设备的结构示意图,如图1所示,该电子设备包括存储器140、输入设备120、输出设备130和处理器110,其中,该电子设备还可以包括通信总线,处理器110、输入设备120、输出设备130和存储器140之间可以通过总线相互连接。可选地,上述电子设备还可以包括指令存储单元,该指令存储单元临近处理器110设置。进一步可选地,指令存储单元与处理器110集成为一体,即该指令存储单元是处理器110的片上存储单元。这样,当处理器110需要执行存储器140中程序时,电子设备首先将存储器140中的程序加载至指令存储单元,之后,处理器110可以访问上述的指令存储单元,以执行指令存储单元中的程序。
其中,上述处理器110,用于执行所述存储器140上所存放的程序时,实现以下步骤:
处理器110获取内存空间中数据的存储信息并确定第一张量的第一数据自然语义;判断第一张量的数据排布与所述存储顺序是否一致;根据所述存储顺序生成第一参数并读取第一张量;根据所述第一数据自然语义与所述存储数据的对应关系生成第二参数并读取第一张量。
进一步地,上述处理器110可以是中央处理器(Central Processing Unit,CPU)、智能处理器(Intelligence Processing Unit,NPU)、图形处理器(Graphics ProcessingUnit,GPU)或图象处理器(Image Processing Unit),本申请对此不做限定。根据处理器110的不同,本申请实施例提出的确定硬件性能的方法可以应用于图像识别处理、深度学习处理、计算机视觉处理、智能机器人处理、自然语言处理等人工智能应用领域,执行人工智能领域中的复杂功能程序。
本申请实施例提供一种张量的读取方法、装置以及相关产品,基于该方法能够完成从同一存储空间中根据不同自然语义读取不同的张量。该方法在描述张量时加入了取数步幅、偏移值的描述,使用取数步幅、偏移值和描述符对具有自然语义的张量进行描述。在转换自然语义时,能根据新的自然语义重新设置取数步幅和偏移值,最终通过新的取数步幅、偏移值以及张量其余基本信息就可以读取到转换自然语义后的张量。而现有技术中,描述符与偏移量是互斥的关系,描述含有自然语义的张量时,不会将张量的取数步幅和偏移值与描述符结合起来进行描述,因此,在转换张量的自然语义时,需要重新拷贝该张量对应内存空间数据,通过新的自然语义得到重新排布的内存空间数据,进而得到转换后的张量。虽然该方法也能实现张量的自然语义转换,但是拷贝张量的内存空间数据会带来时间开销,也增大了运行该操作时占用的内存大小。本方案提供的张量的读取方法在转换张量自然语义时使用的是原有张量的内存空间,也即是说,本方案提供的方法能通过相同内存空间的数据,在不拷贝内存空间的情况下,读取出不同自然语义的张量,省去了数据拷贝时间以及新增的内存占用,达到了提升运算速度,减少内存开销大的效果。
本申请实施例提供的一种张量的读取方法可以应用于包含内存(Memory)的电子设备。首先对内存的相关概念进行介绍。
(1)内存空间(内存空间)
内存空间(内存空间)一般是指计算机中存储器140的空间(物理地址空间)或系统为一个用户程序分配的空间,用于保存进程运行时的程序和数据。内存空间保存的数据可以抽象为一个有序数列。
(2)张量(tensor)
张量(tensor)是基于内存空间抽象出的多维数组,其元素个数小于等于内存空间的元素个数。使用张量的目的是能够创造更高维度的矩阵、向量。
(3)数据类型(data type)
数据类型(data type)是内存空间存储数据的数据类型或张量内元素的数据类型。常见的数据类型有单精度浮点型(float)、半精度浮点型(half)、整数类型(int)、短整型(short)、字符型变量(char)、布尔型变量(bool)等。
(4)维度数(dimension,dim)
维度数(dim)为张量的维度,其中,若张量为矢量,则维度数等于1;若张量为矩阵,则维度数等于2,若张量为矩阵数组,则维度数等于3,以此类推。
(5)大小(size)
大小(size)用于表示张量中每个维度的长度。大小用一维数组表示,其长度与维度数的长度一致,数组元素的值为张量对应维度的长度。举例来说,张量为四维,即维度数等于4时,大小为长度为4的一维数组,其中,第一个元素的数据则代表张量第0维方向上的长度,第二个元素代表第1维方向上的长度,以此类推,数组每一个元素代表对应维度的长度。
(6)偏移值(offset)
偏移值(offset)为张量首元素相对于内存空间首元素的偏移值。
(7)取数步幅(stride)
取数步幅(stride)为维度数长度的一维数组,数组元素的值为张量对应维度的取数步幅,即当前维度某一元素到当前维度下一元素的偏移值,可用于改变张量元素顺序与内存空间元素顺序的映射关系。
(8)描述符(format)
描述符(format)用于描述数据排布与数据自然语义之间关系。常见语义有NCL、NCHW、NHWC和NCHWD等,其中,N为数据批次(number),C为每个数据的通道数(channel),L为每个通道的长度(length),H为每个通道的高度(height),W为每个通道的宽度(width),D为每个通道的深度(depth)。举例来说,图片通常使用三维的张量来表示,因为在神经网络中,图片数据常被多张整合在一起使用,所以此时自然语义中N代表图片的数量;又因为图片像素用(R,G,B)表示,C代表图片中每个像素的R通道,G通道,B通道;H为图片的高度;W为图片的宽度。
(9)顺序映射(contiguous)
顺序映射用于描述张量元素顺序与内存空间元素顺序一致的情况。即将张量中的元素按照维度自低到高、各维度下标由小到大的顺序排列成一个数列,该数列与内存空间抽象出的有序数列相等时,称该张量是顺序映射的。在一维张量中当取数步幅等于1时,该张量是顺序映射;对于维度数大于1的张量,举例来说,若张量的维度数为d(d>1),若将第0维作为最高维,将第d-1维为最低维,则第d-1维的取数步幅等于1,第d-2维的取数步幅为第d-1维的取数步幅与其长度的乘积,以此类推,较高一维度的取数步幅为较低一维度的取数步幅与长度的乘积。顺序映射的张量元素顺序完全由其维度数和大小决定,无法通过取数步幅改变张量元素顺序与内存空间元素顺序的映射关系。
为了便于理解以上概念,下面进行举例说明。
如图2所示,在内存空间A_storage中存储有一个有序数列[0,1,2,3,4,5,6,7,8,9,10,11],基于该有序数列可以抽象出一个多维数组A_tensor[5,6,7,8,9,10],其中,A_tensor存储整数,数据类型为int;A_tensor为一维,维度数等于1;A_tensor一维方向上长度为6,大小为[6];A_tensor的首元素相对于A_storage的首元素偏移5个元素,偏移值等于[5];取数步幅等于1,A_tensor与A_storage是顺序映射的。若根据A_storage,设定张量的数据类型为int,维度数等于1,大小为[3],偏移值等于[4],取数步幅等于2,则基于该内存空间抽象出一个多维数组,得到B_tensor[4,6,8]。
对于需要描述自然语义的张量,因为该张量与其内存空间往往是顺序映射的,这导致了数据类型,维度数和大小是张量的共同属性,而取数步幅和描述符为张量的互斥属性,即设置了取数步幅属性的张量便不会设置描述符属性,设置了描述符属性的张量便不会设置取数步幅属性,此时的描述符本质上是内存空间的数据排布与自然语义关系描述符。在四维C_tensor是需要描述自然语义的张量时,通用的方法是通过如图3所示的方法,将四维C_tensor进行自然语义维度变换得到D_tensor。
S310、处理器110获取C_tensor与其对应内存空间C_storage的数据。
具体地,处理器110获取C_tensor以及其对应内存空间C_storage的数据,举例来说,C_tensor如图3中E301所示,其中,如图3中E302所示,C_tensor的内存空间C_storage的数据为[C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11],C_tensor的数据类型为int型;C_tensor的维度数为4;C_tensor的大小为[1,3,2,2];自然语义为NCHW,即第0维对应N,第1维对应C,第2维对应H,第3维对应W,因此,第0维只有N=0,而第1维可以表示为C=0,C=1,C=2三组,第2维可以表示为H=0以及H=1,第3维可以表示为W=0,W=1;C_tensor与C_storage的数据偏移值为0。因此,C_storage中各数据对应的维度信息可以由下表1表示:
表1
C<sub>0</sub> | C<sub>1</sub> | C<sub>2</sub> | C<sub>3</sub> | C<sub>4</sub> | C<sub>5</sub> | C<sub>6</sub> | C<sub>7</sub> | C<sub>8</sub> | C<sub>9</sub> | C<sub>10</sub> | C<sub>11</sub> | |
N | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
C | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
H | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
W | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
S320、处理器110根据维度变换请求将C_storage的数据进行排布得到D_storage。
具体地,处理器110接收到维度变换请求后,将内存空间C_storage的数据拷贝到内存空间D_storage,并将D_storage的数据按自然语义变换进行数据重新排布。如图3中E302所示,处理器110接收到维度变换请求,需要将C_tensor的自然语义从NCHW变换为NHWC,D_tensor的大小从[1,3,2,2]变为了[1,2,2,3]。因此,内存空间D_storage中各数据对应的维度信息如表2所示。
表2
D<sub>0</sub> | D<sub>1</sub> | D<sub>2</sub> | D<sub>3</sub> | D<sub>4</sub> | D<sub>5</sub> | D<sub>6</sub> | D<sub>7</sub> | D<sub>8</sub> | D<sub>9</sub> | D<sub>10</sub> | D<sub>11</sub> | |
N | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
H | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
W | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
C | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 |
处理器110根据维度信息查找C_tensor对应内存数据C_storage[C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11],举例来说,D0对应的维度信息为N=0、H=0、W=0、C=0,那么是对应表(1)中的C0;D1对应的维度信息为N=0、H=0、W=0、C=1,那么根据表2可以得到D1对应的数据为C4,以此类推,将C_storage根据维度信息进行重新排布能得到D_storage[C0,C4,C8,C1,C5,C9,C2,C6,C10,C3,C7,C11]。
S330、处理器110根据D_storage生成D_tensor。
具体地,处理器110根据D_storage的数据排布生成D_tensor,D_tensor如图3中E303所示,其中,D_tensor的数据类型以及维度数与C_tensor相同;因为自然语义从NCHW变换为NHWC,所以D_tensor的大小从[1,3,2,2]变为了[1,2,2,3];D_tensor的自然语义为NHWC;D_tensor与D_storage的数据偏移值为0。
可以看出,通用张量的读取方法对张量的内存空间、维度数、数据类型、大小、描述符、偏移值进行了描述,根据现有张量的读取方法进行张量自然语义的维度变换,需要重新拷贝张量对应内存空间的数据,在拷贝时根据转换后的自然语义重新排布数据得到转换后的内存空间,进而得到转换后的张量。但是拷贝张量内存空间的数据会带来时间开销,且占用了额外的内存。
下面结合附图来详细描述本发明的具体实施方式。为了提升运算速度,减少内存开销,本申请实施例提供了一种张量的读取方法,该方法在描述张量时加入了取数步幅和偏移值的描述,在转换自然语义时,能根据新的自然语义重新设置取数步幅和偏移值,最终通过新的取数步幅和偏移值以及张量其余基本信息就可以得到新的自然语义的张量。也即是说,本方案提供的张量的读取方法在读取不同自然语义的张量时使用的是原有张量的内存空间,省去了拷贝内存数据的时间以及新增的内存占用。下面结合图4介绍本方法实施步骤。
S401、处理器110获取内存空间中数据的存储信息。
具体地,处理器110获取存储器140的内存空间中数据的存储信息,该存储信息包括存储数据以及存储顺序。其中,存储数据的数据类型可以是float、half、int、short、char、bool等;存储顺序是指数据与物理地址空间的对应关系,示例性地,数据在内存空间中可以是按NCL,NCHW,NHWC或者NCHWD进行存储的。应理解,本申请对存储数据的数据类型与存储顺序的类型不作限定。
S402、处理器110确定第一张量的第一数据自然语义。
具体地,处理器110确定第一张量的第一数据自然语义,其中,第一数据自然语义用于标识第一张量的数据排布。在读取数据时,可以根据需要从内存空间存储的一串有序数列中读取多种不同的张量数据,该多种不同的张量包括维度不同的张量、维度相同,数据排布顺序不同的张量。其中,用于描述张量的数据排布的是自然语义。不同维度的张量对应不同的自然语义,相同维度,不同数据排布顺序的张量也对应不同的自然语义,例如对于三维张量,对应的自然语义可以是N,C.L的任一顺序组合,而对于四维的张量对应的自然语义包括N,C,H,W的任一顺序组合,对于五维的张量对应的自然语义是N,C,W,H,D的任一顺序组合。常见自然语义有NCL,NCHW,NHWC以及NCHWD。在从内存空间读取第一张量时,首先要先确定该第一张量的第一数据自然语义,也就是确定读取的第一张量中数据的排布顺序。
S403、处理器110判断第一张量的数据排布与所述存储顺序是否一致。
具体地,处理器110判断第一张量的数据排布与内存空间中存储数据的存储顺序是否一致,举例来说,存储器140的内存空间中对应的是自然语义NCHW的数据排布,但是第一张量的第一数据自然语义可能要求使用不同于NCHW的自然语义对应的数据排布。根据判断结果,若所述第一张量的数据排布与所述存储顺序一致,则执行下述步骤S4041。
S4041、处理器110根据所述存储顺序生成第一参数并读取第一张量。
具体地,在所述第一张量的数据排布与所述存储顺序一致的情况下,处理器110根据所述存储顺序生成第一参数。其中,第一参数包括第一偏移值,第一取数步幅,第一描述符,第一大小,第一数据类型以及第一维度数,第一描述符是用于描述所述第一张量的数据排布与第一自然语义的关系;所述第一取数步幅是基于所述第一大小与所述第一维度数确定的。
处理器110生成第一参数后,将根据第一参数从存储器140读取第一张量,读取第一张量包括以下步骤:读取内存空间中数据的存储数据;读取第一张量的第一数据类型与第一维度数;读取第一张量的第一大小与第一描述符;读取第一张量的第一偏移值与第一取数步幅。根据第一偏移量和第一取数步幅获取待读取数据的地址,根据第一描述符顺序的从该数据地址中读取第一大小和第一维度的张量数据。
回到步骤S403,若所述第一张量的数据排布与所述存储顺序不一致,则执行下述步骤S4032。
S4042、处理器110根据所述第一数据自然语义与所述存储数据的对应关系读取第一张量。
具体地,在所述第一张量的数据排布与所述存储顺序不一致的情况下,处理器110根据存储空间中存储数据的存储顺序生成第一参数,关于第一参数的生成参见上述步骤S4041,此处不再赘述。
处理器110根据第一数据自然语义与所述存储数据的对应关系将所述第一参数转换为第二参数,其中,对应关系是指根据第一数据自然语义与存储顺序的维度或顺序关系,也即是说,第一数据自然语义与存储顺序可以是维度不同,或者,维度相同,顺序不同;第二参数包括第二偏移值,第二取数步幅,第二描述符,第二大小,第二数据类型以及第二维度数;其中,第二数据类型与第一数据类型相同;第二维度数与第一维度数相同;第二大小、第二偏移值与第二取数步幅根据第一自然语义经第一大小、第一偏移值与第一取数步幅变换得到。
举例来说,若第一数据自然语义与存储顺序的区别在于交换了第1维与第2维的自然语义,则将第一大小的第1维与第2维数据交换即可得到第二大小;第一偏移值的第1维与第2维数据交换即可得到第二偏移值;第一取数步幅第1维与第2维数据交换即可得到第二取数步幅。
处理器110生成第二参数后,将根据第二参数从存储器140读取第一张量,读取第一张量包括以下步骤:读取第一张量的内存空间;读取第一张量的第二数据类型与第二维度数;读取第一张量的第二大小与第二描述符;读取第一张量的第二偏移值与第二取数步幅。根据第二偏移量和第二取数步幅获取待读取数据的地址,根据第二描述符按照取数步幅从内存空间中该数据地址中读取第二大小和第二维度的张量数据。
可选地,在一些实施例中,从内存空间中可以根据不同的自然语义读取出不同的张量数据,在读取不同张量时,可以根据已知的张量数据读取方式,获得未知张量的读取方式。具体为读取第一张量后,输入设备120接收到需要使用第二数据自然语义读取第二张量。
具体地,输入设备120接收到需要使用第二数据自然语义读取第二张量,该第二数据自然语义用于标识所述第二张量的数据排布。第一数据自然语义与第二数据自然语义可以是维度相同,顺序不同;或者,第一数据自然语义与第二数据自然语义的维度不同。
处理器110将根据所述第二数据自然语义与所述第一数据自然语义的对应关系,将第二参数转换为第三参数,其中,对应关系是指根据第一数据自然语义与第二数据自然语义的维度或顺序关系。
处理器110生成第三参数后,基于所述第三参数将第一张量转换为第二张量,其中,所述第三参数包括第三偏移值,第三取数步幅,第三描述符,第三大小,第三数据类型以及第三维度数。其中,第三数据类型与第二数据类型相同;第三维度数与第二维度数相同;第三大小、第三偏移值与第三取数步幅根据第二数据自然语义经第二大小、第二偏移值与第二取数步幅变换得到。根据第三偏移量和第三取数步幅获取待读取数据的地址,根据第三描述符按照取数步幅从内存空间中该数据地址中读取第三大小和第三维度的张量数据。
综上可知,本申请提供了一种张量的读取方法,在读取张量时加入了取数步幅和偏移值的描述,本发明开创性地使用取数步幅、偏移量和描述符对具有自然语义的张量进行描述,使得在描述自然语义时,取数步幅和描述符不再是张量的互斥属性。基于该方法能通过重新设置新的取数步幅和偏移值的方式,获得不同自然语义的张量。本申请提供的方法无需在转换自然语义前拷贝张量内存空间的数据,节省了运行时间与运行内存,达到了提升运算速度,减少内存开销大的效果。
下面结合图5,对本申请的张量的读取方法进行举例说明。如图5所示,假设将需读取的张量命名为X_tensor,其中,X_tensor用于表示一张图片,上述张量X_tensor按自然语义NCHW的方式进行存储,为了便于神经网络后续进行数据处理,现需要将X_tensor的自然语义按NHWC读取。在这一应用场景下,如图5所示,本申请提供的一种张量的读取方法以及基于该方法的自然语义维度变换包括以下步骤:
步骤1、处理器110获取内存空间中数据存储信息并确定X_tensor的第一数据自然语义。
具体地,处理器110获取存储器140的内存空间中数据的存储信息,该存储信息包括存储数据以及存储顺序。如图5中示,处理器从E501的内存空间中获取到数据对的存储信息,存储信息用X_storage表示,X_storage中的数据为[X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11],且上述数据在内存空间中是按NCHW的顺序存储的。
步骤2、处理器110确定X_tensor的第一数据自然语义
具体地,处理器110确定X_tensor的第一数据自然语义,其中,如图5中E503所示,第一数据自然语义为NCHW,从内存空间使用X_tensor。
步骤3、处理器110判断第一张量的数据排布与所述存储顺序是否一致。
具体地,处理器110判断出X_tensor的数据排布与所述存储顺序都为NCHW,即X_tensor的数据排布与所述存储顺序一致,即处理器110将执行如前述步骤S4031。
步骤4、处理器110根据所述存储顺序生成第一参数并读取X_tensor。
具体地,处理器110根据第一数据自然语义生成对应的第一参数,如图5中E505所示,第一参数包括:X_tensor内存空间X_storage中的数据为[X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11];X_tensor的维度数X_dim为4,设置X_tensor的数据类型X_datatype为int32型,设置X_tensor的大小X_size为[1,3,2,2],描述符X_format为自然语义NCHW与数据排布的关系,即X_tensor的第0维对应N,第1维对应C,第2维对应H,第3维对应W;偏移值为X_offset=0;X_tensor与X_storage元素为顺序映射,即X[0][0][0][0]=0,X[0][2][1][1]=11,故取数步幅X_Stride=[12,4,2,1],且X_tensor中元素X[i][j][k][l]与X_storage中对应元素的对应关系为:
X[i][j][k][l]=X_storage[(12*i)+(4*j)+(2*k)+(1*l)] (1)
X_tensor各维度信息如表3所示:
表3
第0维 | 第1维 | 第2维 | 第3维 | |
描述符 | N | C | H | W |
大小 | 1 | 3 | 2 | 2 |
取数步幅 | 12 | 4 | 2 | 1 |
处理器110生成第一参数后,将根据第一参数从存储器140读取X_tensor,结合图6对读取X_tensor的步骤进行详细说明:
步骤4A、设置X_tensor的内存空间X_storage。
具体地,如图6中E601所示,处理器110根据获取到的内存空间X_storage信息,设置X_tensor中各元素对应数据所在内存空间。如图6中E602所示,X_tensor中元素对应内存空间中X_storage部分。
步骤4B、设置X_tensor的数据类型以及维度数。
具体地,处理器110设置X_tensor的维度数为4维,每个元素数据类型为内存空间X_storage中的元素数据类型,内存空间X_storage中的元素为32位整型,即int32。如图6中E603所示,可以用一个立方体表示三维张量,多个立方体就可表示一个四维张量。
步骤4C、设置X_tensor的大小和描述符。
具体地,处理器110设置X_tensor各维度大小为[1,3,2,2],以及X_tensor的描述符,即各维度对应自然语义为N,C,H,W。如图6中E604所示,因为第0维对应N,而第0维的大小为1,因此只有第0维只有N=0,而第1维可以表示为C=0,C=1,C=2三组数据,第2维可以表示为H=0以及H=1,第3维可以表示为W=0,W=1,为了便于说明,将X_tensor展开成C=0,C=1,C=2三组数据。
步骤4D、设置X_tensor的偏移值以及取数步幅。
具体地,如图6中E605所示,处理器110设置X_tensor的偏移值X_offset=0以及取数步幅X_Stride=[12,4,2,1],即在第0维上第1个元素与第2个元素对应于内存空间X_storage数据相隔12个元素,在第1维上第1个元素与第2个元素对应于内存空间X_storage数据相隔4个元素,以此类推。确定X_tensor中每个元素后即完成了X_tensor的读取。
回到图5中,步骤5、接收到需要使用第二数据自然语义读取Y_tensor。
具体地,如图6中E506所示,处理器110接收用户提供的第二数据自然语义,其中,该第二数据自然语义指采用自然语义为NHWC的描述符的方式将X_tensor转换为Y_tensor。
处理器110接收到用户提供的第二数据自然语义后,根据第二数据使用请求生成第三参数。其中,第三参数包括,根据数据类型Y_datatype、维度数Y_dim、大小Y_size、描述符Y_format、偏移值为Y_offset与取数步幅Y_Stride。其中,Y_datatype与X_datatype相同;Y_dim与X_dim相同。
因为X_tensor的偏移值X_offset=0,所以Y_offset=0;由于自然语义是由NCHW转换为NHWC,即第1维与第3维发生交换后再交换第1维与第2维得到的,所以由X_size为[1,3,2,2]交换第1维与第3维后再交换第1维与第2维得到Y_tensor的维度由高到低的长度为1、2、2、3,即Y_size=[1,2,2,3];通过对应维度的取数步幅交换,由X_Stride=[12,4,2,1]交换第1维与第3维后再交换第1维与第2维得到第二取数步幅[12,2,1,4],且Y_tensor中元素Y[i][j][k][l]与Y_storage中对应元素的对应关系为:
Y[i][j][k][l]=X_storage[(12*i)+(2*j)+(1*k)+(4*l)] (2)
Y_tensor各维度信息如表4所示:
表4
第0维 | 第1维 | 第2维 | 第3维 | |
描述符 | N | H | W | C |
大小 | 1 | 2 | 2 | 3 |
取数步幅 | 12 | 2 | 1 | 4 |
步骤6、按照第三参数将X_tensor转换为Y_tensor。
具体地,处理器110根据步骤5获取到数据类型Y_datatype、维度数Y_dim、大小Y_size、描述符Y_format、偏移值Y_offset与取数步幅Y_Stride读从X_tensor的存储区域读取Y_tensor。读取Y_tensor包括以下步骤:读取Y_tensor的内存空间X_storage;读取数据类型Y_datatype与维度数Y_dim;读取X_tensor的大小Y_size与描述符Y_format;读取X_tensor的偏移值Y_offset与取数步幅Y_Stride。如图6中E507所示,为根据第三参数得到的Y_tensor,具体实现过程可参见步骤4读取X_tensor的过程,此处不再赘述。
为了说明第二数据自然语义与第一数据自然语义维度不同的情况,下面以第二数据自然语义为NCL进行补充说明。
步骤7、接收到需要使用第二数据自然语义读取Y_tensor。
具体地,处理器110接收用户提供的第二数据自然语义,其中,该第二数据自然语义指采用自然语义为NCL的描述符的方式将X_tensor转换为Z_tensor。
处理器110接收到用户提供的第二数据自然语义后,根据第二数据使用请求生成第三参数。其中,第三参数包括,根据数据类型Z_datatype、维度数Z_dim、大小Z_size、描述符Z_format、偏移值为Z_offset与取数步幅Z_Stride。其中,Y_datatype与X_datatype相同;Y_dim与X_dim相同。
因为X_tensor的偏移值X_offset=0,所以Z_offset=0;由于自然语义是由NCHW转换为NCL,即合并第2维与第3维后由L表示,所以由X_size为[1,3,2,2]合并第2维与第3维后得到Z_tensor的维度由高到低的长度为1、3、4,即Z_size为[1,3,4];通过对应维度的取数步幅交换,由X_Stride[12,4,2,1]合并第2维与第3维后得到Z_Stride[12,4,1]。
Z_tensor各维度信息如表5所示:
表5
第0维 | 第1维 | 第2维 | |
描述符 | N | C | L |
大小 | 1 | 3 | 4 |
取数步幅 | 12 | 4 | 1 |
步骤8、按照第三参数将X_tensor转换为Z_tensor。
具体地,处理器110根据步骤7获取到的数据类型Z_datatype、维度数Z_dim、大小Z_size、描述符Z_format、偏移值Z_offset与取数步幅Z_Stride从X_tensor的存储区域读取Z_tensor。读取X_tensor包括以下步骤:读取Z_tensor的内存空间X_storage;读取数据类型Z_datatype与维度数Z_dim;读取Z_tensor的大小Z_size与描述符Z_format;读取Z_tensor的偏移值Z_offset与取数步幅Z_Stride。具体实现过程可参见步骤4读取X_tensor的过程,此处不再赘述。
综上可知,本申请提供了一种张量的读取方法,在读取张量时加入了取数步幅和偏移值的描述,基于该方法能通过重新设置新的取数步幅和偏移值的方式,获得不同自然语义的张量。本申请提供的方法无需在转换自然语义前拷贝张量内存空间的数据,节省了运行时间与运行内存,达到了提升运算速度,减少内存开销大的效果。
上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
本申请还提供如图7所示的一种张量的读取装置700,该张量的读取装置700用于执行前述张量的读取方法。本申请对该张量的读取装置700中的功能单元的划分不做限定,可以根据需要对该张量的读取装置中的各个单元进行增加、减少或合并。图7示例性地提供了一种功能单元的划分:张量的读取装置700包括获取单元710、确定单元720以及读取单元730,其中,
获取单元710用于获取内存空间中数据的存储信息,所述存储信息包括存储数据以及存储顺序;
确定单元720用于确定第一张量的第一数据自然语义,所述第一数据自然语义用于标识所述第一张量的数据排布;
读取单元730用于在所述第一张量的数据排布与所述存储顺序不一致的情况下,根据所述第一数据自然语义与所述存储数据的对应关系,从所述内存空间中读取所述第一张量。
在一些实施例中,张量的读取装置还可以包括转换单元740:
转换单元740用于基于所述第三参数将第一张量转换为第二张量,其中,所述第三参数包括第三偏移值以及第三取数步幅以及第三描述符。
综上可知,本申请提供了一种张量的读取装置,在读取张量时加入了取数步幅和偏移值的描述,基于该方法能通过重新设置新的取数步幅和偏移值的方式,获得不同自然语义的张量。本申请提供的方法无需在转换自然语义前拷贝张量内存空间的数据,节省了运行时间与运行内存,达到了提升运算速度,减少内存开销大的效果。
可以理解的是,本申请实施例的确定硬件性能的装置的各程序模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
图8是示出根据本披露实施例的一种组合处理装置800的结构图。如图8中所示,该组合处理装置800包括计算处理装置802、接口装置804、其他处理装置806和存储装置808。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置810,该计算装置可以配置用于执行本文结合附图4所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器110。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器140)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种神经网络芯片(例如图9中示出的芯片902)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图8中所示的组合处理装置。该芯片可以通过对外接口装置(如图9中示出的对外接口装置906)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图9对该板卡进行详细地描述。
图9是示出根据本披露实施例的一种板卡900的结构示意图。该板卡900用于执行上述读取张量的方法步骤。如图9中所示,该板卡包括用于存储数据的存储器件904,其包括一个或多个存储单元910。该存储器件可以通过例如总线等方式与控制器件908和上文所述的芯片902进行连接和数据传输。进一步,该板卡还包括对外接口装置906,其配置用于芯片(或芯片封装结构中的芯片)与外部设备912(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图8和图9的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器140中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器140中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器140可以包括但不限于U盘、闪存盘、只读存储器140(Read OnlyMemory,ROM)、随机存取存储器140(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器110来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器140(Resistive Random Access Memory,RRAM)、动态随机存取存储器140(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器140(Static Random Access Memory,SRAM)、增强动态随机存取存储器140(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器140(High Bandwidth Memory,HBM)、混合存储器140立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1.一种张量的读取方法,包括:
获取内存空间中数据的存储信息,所述存储信息包括存储数据以及存储顺序;
确定第一张量的第一数据自然语义,所述第一数据自然语义用于标识所述第一张量的数据排布;
在所述第一张量的数据排布与所述存储顺序不一致的情况下,根据所述第一数据自然语义与所述存储数据的对应关系,从所述内存空间中读取所述第一张量。
条款A2.根据条款A1所述的方法,在所述第一张量的数据排布与所述存储顺序一致的情况下,根据所述存储顺序生成第一参数,其中,所述第一参数包括第一偏移值,第一取数步幅以及第一描述符;
根据所述第一参数读取所述第一张量。
条款A3.根据条款A2所述的方法,
所述第一参数还包括:第一大小,第一数据类型,第一维度数,其中,第一数据类型与所述内存空间中数据的数据类型一致;
所述第一描述符用于描述所述第一张量的数据排布与第一自然语义的关系;
所述第一取数步幅是基于所述第一大小与所述第一维度数确定的。
条款A4.根据条款A3所述的方法,所述在所述第一张量的数据排布与所述存储顺序不一致的情况下,根据所述第一数据自然语义与所述存储数据的对应关系,从所述内存空间中读取所述第一张量,包括:
根据所述存储顺序生成第一参数;
根据所述第一数据自然语义将所述第一参数转换第二参数,所述第二参数包括第二偏移值,第二取数步幅以及第二描述符;
根据所述第二参数读取所述第一张量。
条款A5.根据条款A4所述的方法,确定第二数据自然语义,所述第二数据自然语义用于标识所述第二张量的数据排布;
根据所述第二数据自然语义与所述第一数据自然语义的对应关系,将第二参数转换为第三参数;
基于所述第三参数将第一张量转换为第二张量,其中,所述第三参数包括第三偏移值以及第三取数步幅以及第三描述符。
条款A6.根据条款A5所述方法,所述第二参数还包括:第二大小,第二维度数,第二数据类型;
所述第三参数还包括:第三大小,第三维度数,第三数据类型;
其中,所述第二数据类型与第三数据类型与所述内存空间中数据的数据类型一致。
条款A7.根据条款A6所述的方法,
所述第一数据自然语义与所述第二数据自然语义的维度相同,顺序不同;或者,
所述第一数据自然语义与所述第二数据自然语义的维度不同。
条款A8.一种张量的读取装置,包括:获取单元、确定单元以及读取单元:
所述获取单元用于获取内存空间中数据的存储信息,所述存储信息包括存储数据以及存储顺序;
所述确定单元用于确定第一张量的第一数据自然语义,所述第一数据自然语义用于标识所述第一张量的数据排布;
所述读取单元用于在所述第一张量的数据排布与所述存储顺序不一致的情况下,根据所述第一数据自然语义与所述存储数据的对应关系,从所述内存空间中读取所述第一张量。
条款A9.根据条款A8所述方法,所述张量的读取装置还包括:转换单元:
所述转换单元用于基于所述第三参数将第一张量转换为第二张量,其中,所述第三参数包括第三偏移值以及第三取数步幅以及第三描述符。
条款A10.一种电子设备,其特征在于,所述电子设备包括张量的读取装置,所述张量的读取装置执行如条款A1-条款A7任一项所述的方法。
条款A11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如条款A1-A7任一项所述的方法。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,以上实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
Claims (11)
1.一种张量的读取方法,其特征在于,应用于电子设备,所述方法包括:
获取内存空间中数据的存储信息,所述存储信息包括存储数据以及存储顺序;
确定第一张量的第一数据自然语义,所述第一数据自然语义用于标识所述第一张量的数据排布;
在所述第一张量的数据排布与所述存储顺序不一致的情况下,根据所述第一数据自然语义与所述存储数据的对应关系,从所述内存空间中读取所述第一张量。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一张量的数据排布与所述存储顺序一致的情况下,根据所述存储顺序生成第一参数,其中,所述第一参数包括第一偏移值,第一取数步幅以及第一描述符;
根据所述第一参数读取所述第一张量。
3.根据权利要求2所述方法,其特征在于,
所述第一参数还包括:第一大小,第一数据类型,第一维度数,其中,第一数据类型与所述内存空间中数据的数据类型一致;
所述第一描述符用于描述所述第一张量的数据排布与第一自然语义的关系;
所述第一取数步幅是基于所述第一大小与所述第一维度数确定的。
4.根据权利要求3所述的方法,其特征在于,所述在所述第一张量的数据排布与所述存储顺序不一致的情况下,根据所述第一数据自然语义与所述存储数据的对应关系,从所述内存空间中读取所述第一张量,包括:
根据所述存储顺序生成第一参数;
根据所述第一数据自然语义将所述第一参数转换为第二参数,所述第二参数包括第二偏移值,第二取数步幅以及第二描述符;
根据所述第二参数读取所述第一张量。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
确定第二数据自然语义,所述第二数据自然语义用于标识所述第二张量的数据排布;
根据所述第二数据自然语义与所述第一数据自然语义的对应关系,将第二参数转换为第三参数;
基于所述第三参数将第一张量转换为第二张量,其中,所述第三参数包括第三偏移值以及第三取数步幅以及第三描述符。
6.根据权利要求5所述的方法,其特征在于,
所述第二参数还包括:第二大小,第二维度数,第二数据类型;
所述第三参数还包括:第三大小,第三维度数,第三数据类型;
其中,所述第二数据类型与第三数据类型与所述内存空间中数据的数据类型一致。
7.根据权利要求6所述的方法,其特征在于,
所述第一数据自然语义与所述第二数据自然语义的维度相同,顺序不同;或者,
所述第一数据自然语义与所述第二数据自然语义的维度不同。
8.一种张量的读取装置,其特征在于,所述张量的读取装置包括:获取单元、确定单元以及读取单元:
所述获取单元用于获取内存空间中数据的存储信息,所述存储信息包括存储数据以及存储顺序;
所述确定单元用于确定第一张量的第一数据自然语义,所述第一数据自然语义用于标识所述第一张量的数据排布;
所述读取单元用于在所述第一张量的数据排布与所述存储顺序不一致的情况下,根据所述第一数据自然语义与所述存储数据的对应关系,从所述内存空间中读取所述第一张量。
9.根据权利要求8所述的装置,其特征在于,所述张量的读取装置还包括:转换单元:
所述转换单元用于基于所述第三参数将第一张量转换为第二张量,其中,所述第三参数包括第三偏移值以及第三取数步幅以及第三描述符。
10.一种电子设备,其特征在于,所述电子设备包括张量的读取装置,所述张量的读取装置执行如权利要求1-7任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011643171.8A CN114691353A (zh) | 2020-12-30 | 2020-12-30 | 一种张量的读取方法、装置以及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011643171.8A CN114691353A (zh) | 2020-12-30 | 2020-12-30 | 一种张量的读取方法、装置以及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691353A true CN114691353A (zh) | 2022-07-01 |
Family
ID=82135550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011643171.8A Pending CN114691353A (zh) | 2020-12-30 | 2020-12-30 | 一种张量的读取方法、装置以及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691353A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116821019A (zh) * | 2023-08-30 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 数据处理方法、计算机设备及芯片 |
-
2020
- 2020-12-30 CN CN202011643171.8A patent/CN114691353A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116821019A (zh) * | 2023-08-30 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 数据处理方法、计算机设备及芯片 |
CN116821019B (zh) * | 2023-08-30 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 数据处理方法、计算机设备及芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023045445A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN112416433B (zh) | 一种数据处理装置、数据处理方法及相关产品 | |
US20210150325A1 (en) | Data processing method and apparatus, and related product | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN114692823A (zh) | 一种算子融合的方法、装置、存储介质及电子设备 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
CN112463160A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN112463159A (zh) | 编译方法、装置、电子设备和存储介质 | |
WO2022134873A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN111124995A (zh) | 通过人工智能处理器处理一维复数数组的方法和设备 | |
CN114691353A (zh) | 一种张量的读取方法、装置以及相关产品 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
WO2022001500A1 (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN114692844A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113469333A (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
CN116797464A (zh) | 计算方法、装置、计算机设备和存储介质 | |
CN115454923A (zh) | 数据计算的装置、板卡、方法以及存储介质 | |
CN114489803A (zh) | 处理装置、处理方法及相关产品 | |
CN114281558A (zh) | 多核处理器、用于多核处理器的方法及相应产品 | |
CN112232498B (zh) | 一种数据处理装置、集成电路芯片、电子设备、板卡和方法 | |
WO2022134872A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114281560A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN114282159A (zh) | 数据处理装置、集成电路芯片、设备及其实现的方法 | |
WO2022100286A1 (zh) | 数据处理装置、数据处理方法及相关产品 |
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 |