张量维度变换的方法以及装置

文档序号:1477146 发布日期:2020-02-25 浏览:5次 >En<

阅读说明:本技术 张量维度变换的方法以及装置 (Tensor dimension transformation method and device ) 是由 陈永胜 于 2019-09-30 设计创作,主要内容包括:本发明提供了一种张量维度变换的方法,包括如下步骤:1)构建DMA读取原始张量数据的维度排布;2)用DMA按照步骤1)构建的维度排布将张量数据读入片内缓存中;3)在片内缓存中,通过硬件矢量处理单元实现维度交换,同时会形成新的张量维度排布;4)用DMA按照步骤3)中维度交换后的维度排布将数据读取片内缓存中的数据写到目标张量的相应位置。(The invention provides a tensor dimension transformation method, which comprises the following steps: 1) constructing dimension arrangement of DMA read original tensor data; 2) reading tensor data into an on-chip cache by using DMA according to the dimensionality arrangement constructed in the step 1); 3) in the on-chip cache, dimension exchange is realized through a hardware vector processing unit, and meanwhile, new tensor dimension arrangement is formed; 4) and D) writing the data in the cache in the data reading chip to the corresponding position of the target tensor by using the DMA according to the dimension arrangement after the dimension exchange in the step 3).)

张量维度变换的方法以及装置

技术领域

本发明涉及芯片设计领域,尤其涉及一种张量维度变换的方法以及装置。

背景技术

人工智能算法中大部分都存在大量张量维度变换。现有技术中的SOC内部硬件模块内部没有张量维度变换的处理单元,张量维度变换都是使用CPU来实现的。使用CPU实现张量变换的流程:

1逐个计算出张量中的各个元素的目标位置;

2将元素逐个复制到目标位置。

CPU实现张量变换需要大量的运算去计算出元素的目标位置,然后读写数据,运行效率很低。

发明内容

本发明所要解决的技术问题是,提供一种张量维度变换方法,能够提高计算速度,节约系统资源。

为了解决上述问题,本发明提供了一种张量维度变换的方法,包括如下步骤:1)构建DMA读取原始张量数据的维度排布;2)用DMA按照步骤1)构建的维度排布将张量数据读入片内缓存中;3)在片内缓存中,通过硬件矢量处理单元实现维度交换,同时会形成新的张量维度排布;4)用DMA按照步骤3)中维度交换后的维度排布读取片内缓存中的数据写到目标张量的相应位置。

本发明还提供了一种用于张量维度变换的装置,包括执行器和片内缓存,所述执行器操作所述片内缓存,执行如下步骤:1)构建DMA读取原始张量数据的维度排布;2)用DMA按照步骤1)构建的维度排布将张量数据读入片内缓存中;3)在片内缓存中,通过硬件矢量处理单元实现维度交换,同时会形成新的张量维度排布;4)用DMA按照步骤3)中维度交换后的维度排布读取片内缓存中的数据写到目标张量的相应位置。

本发明将原本由CPU直接计算进行张量变换和展开的过程,变为借助于专用的硬件矢量处理单元和片内缓存实施,节省了系统资源,提高了计算效率。

附图说明

附图1A与附图1B所示是本发明一

具体实施方式

的实施步骤示意图。

附图2A-2D所示是本发明一具体实施方式所采用的原始张量以及变换后张量的结构示意图。

附图3所示是本发明附图1的具体实施方式的中内外层循环的张量示意图。

附图4所示是本发明又一具体实施方式的实施步骤示意图。

具体实施方式

下面结合附图对本发明提供的张量维度变换的方法以及装置的具体实施方式做详细说明。

附图1A所示是本发明一具体实施方式的实施步骤示意图,包括:1)构建DMA(Direct Memory Access,直接内存存取单元)读取原始张量数据的维度排布;2)用DMA按照步骤1)构建的维度排布将张量数据读入片内缓存中;3)在片内缓存中,通过硬件矢量处理单元实现维度交换,同时会形成新的张量维度排布;4)用DMA按照步骤3)中维度交换后的维度排布读取片内缓存中的数据写到目标张量的相应位置。附图1B所示是上述步骤展开后的实施步骤示意图。

参考步骤1),构建DMA读取原始张量数据的维度排布。

本步骤又可以包括如下详细步骤:

A.根据片内缓存的宽度和张量维度变换的顺序确定维度拆分规则和对原始张量实行维度拆分。附图2A所示是本具体实施方式所采用的原始张量的结构示意图,为一个N+1维张量,各个维度的维度数分别为Di(i的取值从0到N)。在本具体实施方式的叙述中,以右侧为内,以左侧为外。

B.根据拆分后的维度排布确定片内缓存每行能写入的原始张量的维度组作为第一维度组,根据拆分后的维度排布确定片内缓存每行能写入的目标张量的维度组作为第二维度组。在本具体实施方式中,第一维度组是第K维至第N维,第二维度组是第M维至第L维。

C.构建读取原始张量数据的维度排布:第一维度组排在最内侧,第二维度组排在第一维度组的外侧,将剩下的维度按照原来的顺序依次排在第二维度组的外侧。在本具体实施方式中,以第一维度组和第二维度组都是在原始张量中的连续维度作为实施,在其他的具体实施方式中,无论是第一维度组还是第二维度组都可以是在原始张量中不连续的几个维度。这些需要变换的维度组是由外部的命令在本方法实施之前预先确定的,本具体实施方式的实施目的是为了对其进行快速有效的变换,而不涉及如何确定需要变换的维度组。

参考步骤2),用DMA按照步骤1)构建的维度排布将张量数据读入片内缓存中。

本步骤又可以包括如下详细步骤:

A.根据步骤1)中的维度排布,确定DMA每批可以直接读入数据元素的个数;根据片内缓存的大小,确定DMA读入数据的次数。附图2B所示是本步骤对原始张量进行操作的示意图。上方为原始张量,下方为重排后的张量。以右侧为内,以左侧为外。第一维度组和第二维度组无论是连续维度还是不连续维度,张量元素在第一维度组以及第二维度组的组内排列顺序不变。

B.根据步骤1)中的维度排布,DMA读取数据到片内缓存时依赖于两个循环,内层循环是从DMA可以直接读取的最高维度到片内缓存能放下的最高维度,外层循环包含比内层循环更高的所有维度。根据这两层循环中各个维度上对应的值,计算出DMA从原始张量中读取数据的位置。

C.DMA从B中计算出来的原始张量的位置处读取数据到片内缓存中。DMA每读取一次数据,内层循环的最低维加一,当这个维度上的值达到该维的维度值后向高一维进位并将循环中对应的这个维度上的值清零,DMA读满片内缓存区后,向外层循环进位。

附图2C所示是本步骤对原始张量进行操作的示意图。写入维度的顺序保持与原始张量中维度的排布顺序相同。如果第一维度组和第二维度组是连续维度且中间不夹其他维度,则将第二维度组外侧的维度接续写入即可;如果第一维度组和第二维度组之间夹有其他维度,则优先写入两者之间的维度至第二维度组的外侧;如果第一或第二维度组是不连续维度,则对于组内夹有的维度,按照在原始张量中的顺序进行排入或写入。总之,本步骤的写入宗旨,是保证其余维度在变换后张量中的内外相对位置,与原始张量中的内外相对位置保持不变。

参考步骤3),在片内缓存中,通过硬件矢量处理单元实现维度交换,同时会形成新的张量维度排布。附图2D所示是本步骤对重排后张量进行变换的示意图。由于本步骤中两个维度组的位置都是确定的,因此只需要进行数据对调就可以,无需复杂算法。

本步骤又可以包括如下详细步骤:

A.根据目标张量的维度排布顺序,确定是否需要在第一维度组内进行维度交换,如果需要则利用硬件矢量处理单元进行维度交换。

B.利用硬件矢量处理单元,将第一维度组和第二维度组各作为一个整体按照二维矩阵转置的方式,对片内缓存中的数据做转置,这样实现了第一维度组和第二维度组进行交换。

C.根据目标张量的维度排布顺序,确定是否需要在第二维度组内进行维度交换,如果需要则利用硬件矢量处理单元进行维度交换,这样就形成了一个新的维度排布。

参考步骤4),用DMA按照步骤3)中维度交换后的维度排布将数据读取片内缓存中的数据写到目标张量的相应位置。多维张量的展开成张量元素的算法是从内层到外层,根据维度数Di分别依次进位读取每个维度数上的数值,是二维矩阵展开算法在高维度情况下的进一步应用,展开后将每一次读取的张量元素结果复制到指定的目标位置。

A.DMA在从片内缓存中读取数据写到目标张量中指定的位置时依赖于一个循环,这个循环包括比DMA每次可以直接读取数据的最高维度更高的所有维度,根据这个循环中的值,可以计算出DMA当前从片内缓存中读取的这批数据要写到目标张量的位置;

B.DMA从片内缓存中读取数据写到目标张量中的指定位置,DMA每读取一次数据,这个循环的最低维上加一,当最低维度上的值达到该维度的维度值后向高一维进位并将该维度上的值清零。

附图3所示是上述步骤对后续维度分成内层维度和外层维度进行操作的示意图。两层循环用来计算这一批的数据的起始地址和可以读入的批次数量,内层循环中以读取单元为单位,DMA按照读取数据的维度排布将数据读入片内缓存,外层循环首先计算出可以读的批次数量,如果发现还有数据没有处理完,就触发内层循环,读取数据过程中内层循环向外侧循环进位,直到当前可以读的批次全部读完后触发外层循环。两个循环相互触发,直到所有数据被处理完。

本步骤中DMA从片内缓存读取数据写到目标张量的位置时参照的维度排布,与步骤2)中DMA从原始张量中读取数据到片内缓存时参照的维度排布不同,原因在于步骤3)中做过维度交换,在这个维度交换的过程中改变了数据在片内缓存中的排布。这个维度交换是由硬件矢量处理单元批量化处理而非CPU完成的,因此节省了系统资源,提高了计算效率。

附图4所示是本发明又一具体实施方式的装置结构示意图,包括执行器和片内缓存,所述执行器操作所述片内缓存,执行如下步骤:1)构建DMA读取原始张量数据的维度排布;2)用DMA按照步骤1)构建的维度排布将张量数据读入片内缓存中;3)在片内缓存中,通过硬件矢量处理单元实现维度交换,同时会形成新的张量维度排布;4)用DMA按照步骤3)中维度交换后的维度排布读取片内缓存中的数据写到目标张量的相应位置。

以上步骤的具体解释参见前述具体实施方式。具体操作请参阅前一具体实施方式的步骤1-4以及具体解释。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:SSD主控中的RAID多路处理装置及数据恢复方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!