张量数据分块存取的方法及装置制造方法及图纸

技术编号:23985600 阅读:31 留言:0更新日期:2020-04-29 13:22
公开了一种张量数据分块存取的方法及装置。包括:依次读取张量数据的多个数据块;对所述数据块进行压缩,以获得压缩数据块;以及,将所述压缩数据块存储到存储器中与所述压缩数据块对应的预定存储空间中。通过该方法能够显著减少张量数据计算时对数据传输带宽的需求,从而在较低的硬件成本下高效的执行张量数据的存取。

Method and device of block access for tensor data

【技术实现步骤摘要】
张量数据分块存取的方法及装置
本申请涉及一种张量数据分块存取的方法及装置。
技术介绍
对张量数据执行计算时,需要从较大容量的存储器(比如,作为内存的DDR)中读取该张量数据并存入高速存储器(比如,SRAM),但因张量数据较大以及高速存储器存储空间的限制,需要对张量数据执行分批计算。为节省存储空间同时降低对数据传输带宽的需求,在对张量数据执行计算之前需要先将张量数据压缩再存储至存储器中(比如,作为内存的DDR)。对张量数据执行计算时,每次计算都需要按照该张量数据压缩时的粒度从存储器中读取数据。但由于张量数据压缩时的粒度过大,远超过每次计算时需读取数据的数量,导致每次计算时无法按照计算所需数据的粒度来进行读取,而是每次计算都需要读取远超过计算所需的数据,这样,对张量数据的压缩不仅未能节省对数据传输带宽的需求,反而给有限的数据传输带宽带来了更大的负担,对存储器、高速存储器等硬件资源的性能需求更高,消耗也更大,同时还会降低整个张量数据的存取效率。因此,需要一种张量数据的分块压缩存取方案,以减少张量数据计算时对数据传输带宽的需求,从而在较低的硬件成本下高效的执行张量数据的存取。
技术实现思路
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种张量数据分块存取的方法及装置。根据本申请的一个方面,提供了一种张量数据分块存取方法,包括:依次读取张量数据的多个数据块;对所述数据块进行压缩,以获得压缩数据块;以及将所述压缩数据块存储到存储器中与所述压缩数据块对应的预定存储空间中。根据本申请的另一个方面,还提供了一种张量数据分块存取方法,包括:基于要读取的张量数据的至少一部分的维度坐标,确定存储器中与所述张量数据的至少一部分对应的预定存储空间;从所述预定存储空间读取对应的压缩数据块;对所述压缩数据块进行解压缩以获得对应的数据块;以及基于所述数据块获得所述张量数据的所述至少一部分。根据本申请的另一方面,还提供一种电子设备,包括:一个或多个处理器;以及,存储器,存储有计算机指令,所述计算机指令在被所述处理器运行时使所述处理器执行上述张量数据分块存取的方法。根据本申请的另一方面,还提供一种张量数据分块存取装置,包括:第一读取单元,被配置为依次读取张量数据的多个数据块;压缩单元,被配置为对所述数据块进行压缩,以获得压缩数据块;以及存储单元,被配置为将所述压缩数据块存储到存储器中对应的预定存储空间中。根据本申请的另一方面,还提供一种张量数据分块存取装置,包括:存储空间确定单元,被配置为基于要读取的张量数据的至少一部分的维度坐标,确定存储器中与所述张量数据的至少一部分对应的预定存储空间;第二读取单元,被配置为从所述预定存储空间读取对应的压缩数据块;解压缩单元,被配置为对所述压缩数据块进行解压缩以获得对应的数据块:以及数据获取单元,被配置为基于所述数据块获得所述张量数据的所述至少一部分。另外,本申请还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如上述张量数据分块存取的方法。通过根据本申请的示例的方法和装置,将张量数据以数据块的形式压缩获得数据数量明显小于数据块本身的压缩数据块,并以压缩数据块的形式存储到存储器中对应的预定存储空间,在计算过程中可以直接按照每次计算所需数据的数量来向该存储器读取压缩数据块,这样,不仅每次计算时从存储器中读取数据的数量在满足计算需求的前提下有明显减少,而且以压缩数据块的形式进行读取,该压缩数据块的数据数量相较于数据块本身来说也有明显减少,从而显著减少张量数据计算过程中对数据传输带宽的需求,在较低的硬件成本下实现了高效的张量数据存取。附图说明在下文中将结合附图来描述根据本申请的示例,附图中:图1是本申请一示例性实施例提供的张量数据分块存取方法的流程示意图。图2是本申请另一示例性实施例提供的张量数据分块存取方法的流程示意图。图3是本申请一示例性实施例提供的数据块示例的示意图。图4是本申请一示例性实施例提供的卷积神经网络中数据块示例的示意图。图5是本申请一示例性实施例提供的预定存储空间的分区示例的示意图。图6是本申请一示例性实施例提供的预定存储空间排布示例的示意图。图7是本申请另一示例性实施例提供的预定存储空间排布示例的示意图。图8是本申请又一示例性实施例提供的预定存储空间排布示例的示意图。图9是本申请一示例性实施例的高速存储器中张量数据的存储示意图。图10是本申请一示例性实施例提供的张量数据分块存取装置的结构图。图11是本申请另一示例性实施例提供的张量数据分块存取装置的结构图。图12是本申请一示例性实施例提供的电子设备的结构图。具体实施方式下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。申请概述如上文所述,对张量数据执行计算的过程,由于张量数据压缩时的粒度过大,远大于每次计算时需读取数据的数量,导致每次计算时无法按照计算所需数据的数量来进行读取,而是每次都要读取远超过每次计算所需的数据量,这样,对张量数据的压缩不仅未能节省数据传输带宽,反而给有限的数据传输带宽带来了更大的负担,对存储器、高速存储器等硬件资源的性能需求更高,消耗也更大,同时还会降低整个张量数据的存取效率。因此,需要一种张量数据的分块压缩存取方案,以减少张量数据读写时对数据传输带宽的需求,从而在较低的硬件成本下高效的执行张量数据的存取。下面以卷积神经网络为例进行说明。卷积神经网络可以包括一个或多个卷积层。在每个卷积层中,使用该层的卷积核对该层的输入特征图(也可以称为输入的特征数据)执行该层的卷积运算,以获得该层的输出特征图。在卷积神经网络的各层中,输入的特征图和输出的特征图均为张量数据,可以具有一定的宽度、高度和深度(也可称为通道数)。在卷积神经网络运算过程中,因高速存储空间有限,只能完成部分特征图的计算,因而多数情况下在每层执行卷积运算时都需要将其输入特征图(即张量数据)进行不同程度的拆分,然后分批进行卷积运算,即需要对张量数据执行分批计算。卷积神经网络中每层的分批运算中,每次运算都需要从大容量的存储器(比如,作为内存的DDR)读取输入特征图(即一张量数据)的一部分放入高速存储器(比如,SRAM)中,以便从高速存储器中取数据进行卷积运算。同样,每次运算的运算结果(即另一张量数据的一部分)也需要先写入高速存储器,待该次运算结束后再从高速存储器中读出运算结果并存至存储器中。如此,在一层的分批运算结束后,该分批运算中各次的运算结果(即另一张量数据的一部分)在存储器(比如,内存)中拼接为该层的输出特征图(即另一张量数据),该输出特征图可作为本文档来自技高网...

【技术保护点】
1.一种张量数据分块存取方法,包括:/n依次读取张量数据的多个数据块;/n对所述数据块进行压缩,以获得压缩数据块;以及/n将所述压缩数据块存储到存储器中与所述压缩数据块对应的预定存储空间中。/n

【技术特征摘要】
1.一种张量数据分块存取方法,包括:
依次读取张量数据的多个数据块;
对所述数据块进行压缩,以获得压缩数据块;以及
将所述压缩数据块存储到存储器中与所述压缩数据块对应的预定存储空间中。


2.根据权利要求1所述的方法,其中,所述多个数据块是在至少一个维度上对所述张量数据进行划分而获得的。


3.根据权利要求1所述的方法,其中,对所述数据块进行压缩包括:
生成所述数据块的索引,所述索引用于指示所述数据块中的各个数据是否为预定值;以及
删除所述数据块中取值为所述预定值的数据,以获得压缩数据;
其中,所述压缩数据块包括所述索引和所述压缩数据。


4.根据权利要求2所述的方法,还包括:
在所述存储器中为所述压缩数据块分配所述预定存储空间;
其中,与所述张量数据的多个压缩数据块对应的多个预定存储空间是彼此连续的。


5.根据权利要求4所述的方法,其中,为各个压缩数据块分配的所述预定容量是彼此相等的。


6.根据权利要求1所述的方法,其中,相邻数据块的边缘部分彼此重叠,并且在一维度上相邻的两个数据块的重叠区域的大小由用于对该数据块执行卷积运算的卷积核在该维度上的大小确定。


7.根据权利要求6所述的方法,其中,每个数据块在所述至少一个维度上的粒度等于基础值加上所述重叠区域的大小的一半,所述基础值由以所述张量数据作为输出的神经网络的层在该维度上的输出粒度与以所述张量数据作为输入的神经网络的层在该维度上的输入粒度确定。


8.根据权利要求1所述的方法,其中,每个数据块在所述至少一个维度上的粒度由以所述张量数据作为输出的神经网络的层在该维度上的输出粒度与以所述张量数据作为输入的神经网络的层在该维度上的输入粒度确定。


9.一种张量数据分块存取方法,包括:
基于要读取的张量数据的至少一部分的维度坐标,确定存储...

【专利技术属性】
技术研发人员:孙晨王振江
申请(专利权)人:北京地平线机器人技术研发有限公司
类型:发明
国别省市:北京;11

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

1