CN112418413A - 存储数据的装置和方法以及执行分组卷积运算的装置 - Google Patents
存储数据的装置和方法以及执行分组卷积运算的装置 Download PDFInfo
- Publication number
- CN112418413A CN112418413A CN201910777752.1A CN201910777752A CN112418413A CN 112418413 A CN112418413 A CN 112418413A CN 201910777752 A CN201910777752 A CN 201910777752A CN 112418413 A CN112418413 A CN 112418413A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- address
- channel
- tensors
- 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 40
- 230000008707 rearrangement Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 9
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 8
- 239000004576 sand Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000007983 Tris buffer Substances 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
公开了存储数据的装置和方法以及用于执行分组卷积运算的装置。存储数据的装置可以包括:控制单元,被配置为确定至少两个张量中的指定张量在第一存储器中的第一地址;读取单元,被配置为根据第一地址从第一存储器中至少读取指定张量在指定通道上的至少一部分数据;寻址单元,被配置为根据由控制单元指示的指定通道在前述至少两个张量的所有通道的集合中的索引,确定前述至少一部分数据在第二存储器中的第二地址;以及写入单元,被配置为将前述至少一部分数据写入到第二存储器的第二地址处。通过根据本公开的实施例的装置和方法,能够高效率地实现混洗网络。
Description
技术领域
本公开总体上涉及人工智能的技术领域,并且具体地涉及一种存储数据的装置和方法以及用于执行分组卷积运算的装置。
背景技术
混洗网络(Shuffle Net)是一种用于计算能力受限且对功耗要求严格的终端(例如,移动终端)的高效的卷积神经网络模型,其在诸如分组卷积(Group Convolution)这样的稀疏连接的设计理念的基础上,通过通道混洗(Channel Shuffle)来促进通道间的信息流通。
发明内容
根据本公开的一个方面,提供了一种存储数据的装置。该装置可以包括:控制单元,被配置为确定至少两个张量中的指定张量在第一存储器中的第一地址;读取单元,被配置为根据前述第一地址从前述第一存储器中至少读取前述指定张量在指定通道上的至少一部分数据;寻址单元,被配置为根据由前述控制单元指示的前述指定通道在前述至少两个张量的所有通道的集合中的索引,确定前述至少一部分数据在第二存储器中的第二地址;以及写入单元,被配置为将前述至少一部分数据写入到前述第二存储器的前述第二地址处。
根据本公开的另一方面,还提供了一种用于执行分组卷积运算的装置。该装置可以包括卷积运算电路和上述存储数据的装置。
根据本公开的另一方面,还提供了一种存储数据的方法。该方法可以包括:确定至少两个张量中的指定张量在第一存储器中的第一地址;根据前述第一地址从前述第一存储器中至少读取前述指定张量在指定通道上的至少一部分数据;根据前述指定通道在前述至少两个张量的所有通道的集合中的索引,确定前述至少一部分数据在第二存储器中的第二地址;以及将前述至少一部分数据写入到前述第二存储器的前述第二地址处。
根据本公开的另一方面,还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,并且计算机程序可以用于执行上述方法。
根据本公开的另一方面,还提供了一种电子设备。该电子设备可以包括处理器和用于存储处理器可执行指令的存储器,其中,处理器可以用于从存储器中读取可执行指令,并执行可执行指令以实现上述方法。
根据本公开的实施例的存储数据的装置允许直接通过硬件实现数据的通道混洗和存储,而无需另外的诸如中央处理器(Central Processing Unit,CPU)、脑处理器(BrainProcessing Unit,BPU)等处理器或控制器的干预和另外的软件干预,由此能够提高数据的通道混洗和存储的操作效率,而且还能够简化软件指令序列、减轻CPU/BPU等处理器或控制器的负担。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1示出张量数据的示例以及张量数据的连续存储的示例。
图2示出根据本公开的实施例的存储数据的装置的示例。
图3示出根据本公开的实施例的存储装置的装置中的控制单元的示例。
图4示出根据本公开的实施例的存储数据的装置的示例。
图5示出根据本公开的实施例的用于执行分组卷积运算的装置的示例。
图6示出根据本公开的实施例的存储数据的方法的示例。
图7示出根据本公开的实施例的存储数据的方法的示例。
图8示出根据本公开的电子设备的示例。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
概述
在通常的处理混洗网络数据的方案中,往往采用CPU或BPU来处理通道混洗操作。例如,CPU或BPU执行预定的程序指令,以便使CPU或BPU能够从存储器中读取数据、对所读取的数据进行通道重排/通道混洗以及将经过通道重排/通道混洗的数据再次写入到存储器中。也就是说,在通常的处理方案中,需要CPU/BPU和/或软件干预,才能够实现通道混洗,因此处理效率不高。
另外,通常的神经网络加速器往往被设计为对传统的卷积运算进行加速,而作为卷积运算的处理对象,张量数据(也被称为特征数据或特征图)通常可以对应于具有高度、宽度、深度(即,通道数量)和数量等一个或多个维度的线性数据、平面数据、数据立方体或多维数据等,按照连续存储方式存储在存储器中。
例如,如图1中的箭头的上方所示,一个示例性的张量数据可以用一个高度为3、宽度为3、深度(通道数量)为3的数据立方体来形象地表示,其中,每个小立体块(例如,P1,1,1、P1,2,1等)表示该数据立方体中的一个数据点。如图1所示,每个数据点可以根据其对应的高度值、宽度值和深度值(即,所在的通道的编号)而具有对应的索引或坐标。例如,如果规定H方向(即,高度方向)从原点O开始按照对应的箭头沿图面垂直向下,W方向(即,宽度方向)从原点O开始按照对应的箭头沿图面水平向右,C方向(即,通道方向)从原点O开始按照对应的箭头垂直于图面向后,则该数据立体方中的每个数据点的索引或坐标的一个示例可以如图1所示。
如图1的箭头下方所示,在具有相同高度值和宽度值的三个通道上的数据点P1,1,1、P1,1,2和P1,1,3被连续地存储在存储器中,而紧接在P1,1,3之后连续存储的是具有相同的高度值和宽度值的三个通道上的数据点P1,2,1、P1,2,2、P1,2,3;以此类推,直至P3,3,1、P3,3,2和P3,3,3被连续地存储到存储器中。
按照这样的连续存储方式,在通道混洗时,数据的读写将是不连续的,并因此导致数据读写效率的显著降低,并且影响整个卷积运算加速器的操作效率。
本公开的技术方案旨在解决或缓解上述技术问题的至少一部分。
示例性装置
图2示出根据本公开的实施例的存储数据的装置的示例。如图2所示,装置DEV包括控制单元CU、读取单元RU、寻址单元AU和写入单元WU。
控制单元CU可以被配置为确定至少两个张量T1至Tn(n为大于或等于2的自然数)中的指定张量Tr(r是小于或等于n的任意自然数)在第一存储器M1中的第一地址Ar。如图1所示,从第一存储器M1中的第一地址Ar开始,连续地存储有指定张量Tr在各个通道Cr,0至Cr,m(m为任意自然数)上的部分数据Dr,0至Dr,m。
读取单元RU可以被配置为根据第一地址Ar,从第一存储器M1中,至少读取指定张量T1在指定通道Cr,s(s是小于或等于m的任意自然数)上的数据Dr,s的至少一部分{Dr,s}。根据不同的实施例,读取单元RU可以每次读取张量Tr的完整数据,包括张量Tr在通道Cr,0上的数据Dr,0、……、在指定通道Cr,s上的数据Dr,s、……、在通道Cr,m上的数据Dr,m;读取单元RU也可以每次读取张量Tr中的包括数据Dr,s在内的一部分数据,例如读取Dr,s和Dr,s+1(未示出);读取单元RU也可以每次读取数据Dr,s的一部分数据,然后通过多次读取来获得完整的数据Dr,s。
寻址单元AU可以被配置为根据由控制单元CU指示的指定通道Cr,s在前述至少两个张量T1至Tn的所有通道的集合{Ci,j|i为小于或等于n的自然数,j为小于或等于m的自然数}中的索引IDr,s,确定前述的至少一部分数据Dr,s在第二存储器M2中的第二地址A’r’。
写入单元WU被配置为将前述的至少一部分数据Dr,s写入到第二存储器M2的第二地址A’r’处。
在装置DEV的每次的读写操作中,读取单元RU根据由控制单元CU确定的第一地址Ar,从第一存储器M1中至少读取指定张量Tr在指定通道Cr,s上的至少一部分数据,然后由写入单元WU将由读取单元RU读取的至少一部分数据写入到第二存储器M2的第二地址A’r’处,其中,第二地址A’r’是由装置DEV中的寻址单元AU确定的。
例如,对于已经存储在第一存储器M1中的张量数据T1至Tn,控制单元CU可以按照从1至n的次序确定每个指定张量,然后按照数据对齐的方式指示读取单元RU读取当前的指定张量的数据。对于由读取单元RU读取的当前的指定张量,可以按照从1至m的次序确定指定通道,然后可以经由写入单元WU将指定通道的数据例如按照数据对齐的方式写入到第二存储器M2中的特定位置处。由此,通过多次的数据读写,装置DEV将存储在第一存储器M1中的张量T1至Tn的各个通道打乱重排,并重新存储到第二存储器M2中,其中,第一存储器M1中的张量Tr的部分数据Dr,s最终被存储于第二存储器M2中的第二地址A’r’处。
在该过程中,装置DEV通过其自身的硬件完成通道数据的读取、混洗和写入,而不需要另外的CPU/BPU和/或软件的干预。而且,在该过程中,可以按照数据对齐的方式进行数据的读取和写入,因此能够获得较高的存取效率,进而确保装置DEV能够具有较高的处理效率。
应当理解,装置DEV的实际的操作过程可以不局限于上面参考图1描述的示例。取决于所期望的混洗策略,装置DEV可以按照其他的任何适当的控制方式实现张量数据的通道混洗。
根据不同的实施例,控制单元CU可以是基于例如现场可编程门阵列等或者其他任何适当的电路/元件/模块而开发出来的任何适当的处理器或控制器。例如,如图3所示,控制单元CU可以包括第一计数器CNT1、第二计数器CNT2和第三计数器CNT3和计算器CAL。
例如,第一计数器CNT1可以响应于预定的使能信号CUEN而开始计数,将新的计数值提供给第二计数器CNT2,并等待来自第二计数器CNT2的反馈以便继续计数。
第二计数器CNT2可以响应于来自第一计数器CNT1的新的计数值而重新开始计数,并且在达到预定的最大计数值(例如,前文提到的每个张量数据的最大通道数m)时向第一计数器CNT1提供反馈。
另一方面,第一计数器CNT1还将其计数值提供给计算器CAL,然后计算器CAL可以根据来自第一计数器CNT1的计数值计算第一地址Ar。例如,计算器CAL可以包括乘法器,并且被配置为将来自第一计数器CNT1的计数值乘以每个张量数据在第一存储器M1中占用的存储空间的大小。
第三计数器CNT3可以响应于预定的使能信号CUEN而开始计数,并且可以具有与第二计数器CNT2相同的计数频率,使得第三计数器CNT3的计数值可以对应于指定张量(根据第一计数器CNT1的计数值确定)的指定通道(根据第二计数器CNT2的计数值确定)在所有通道的集合中的索引IDr,s。
如图3所示,第一计数器CNT1和第三计数器CNT3还可以响应于禁止信号CUDIS而停止计数。在另一个实施例中,也可以根据在第一存储器M1中存储的张量数据的数量以及每个张量数据的通道数量确定第一至第三计数器CNT1、CNT2和CNT3中的至少一个计数器的最大计数值,使得至少第一计数器CNT1和第三计数器CNT3能够根据相应的最大计数值而自动地停止计数,从而可以省略禁止信号CUDIS。
应当理解,图3仅是控制单元CU的一个示例。装置DEV中的控制单元CU可以不局限于上述示例。例如,替代设置第三计数器CNT3,还可以设置另外的计算器,或者使用CAL,根据第一计数器CNT1和第二计数器CNT2的计数值计算出索引IDr,s。
根据不同的实施例,读取单元RU可以是第一存储器M1的存取控制器的一部分,也可以是独立于第一存储器M1并且能够用于控制从第一存储器M1中读取数据的任何适当的电路。
类似地,写入单元WU可以是第二存储器M2的存取控制器的一部分,也可以是独立于第二存储器M2并且能够用于控制向第二存储器M2中写入数据的任何适当的电路。
根据不同的实施例,寻址单元AU可以是基于例如现场可编程门阵列等或者其他任何适当的电路/元件/模块而开发出来的、能够用于根据来自控制单元的索引IDr,s来确定第二存储器M2中的第二地址A’r’的任何适当的处理器或控制器,从而满足不同的通道混洗策略的要求。
在一个实施例中,第二地址A’r’可以取决于与指定通道Cr,s的索引IDr,s的二进制数值相对应的比特序列的逆序列。相应地,在该实施例中,寻址单元AU可以被配置为确定与指定通道Cr,s的索引IDr,s的二进制数值相对应的比特序列的逆序列,并根据所确定的逆序列来确定第二地址A’r’。
例如,假设前述的张量T1至Tn共有16个通道,指定张量Tr的指定通道Cr,s的索引IDr,s为13,对应的二进制数值为1101,则与其相对应的比特序列的逆序列为1011。于是,寻址单元AU可以根据二进制数据1011来确定第二地址A’r’,例如,可以直接将其作为第二地址A’r’,也可以将其与某个预定的基数(例如,每个张量数据的大小)进行预定的计算(例如,乘法),并根据所得到的计算结果来确定第二地址A’r’,还可以基于各种可能的二进制数据与第二存储器M2中的地址之间的预定的映射关系,根据二进制数据1011来确定第二地址A’r’,等等。例如,在各个逆序列对应的二进制数据非常分散的情况下,可以根据预定的映射关系或换算关系(例如,根据逆序列确定的次序关系),来确定各个第二地址,以使各通道的数据能够集中地存储在第二存储器M2中。
在该实施例中,寻址单元AU可以是基于例如现场可编程门阵列等或者其他任何适当的电路/元件/模块而开发出来的处理器或控制器。在另一个实施例中,寻址单元AU也可以包括一个多个逻辑门元件和移位寄存器,以便获得指定二进制数值的比特序列的逆序列。在另一个实施例中,寻址单元AU可以包括用于存储索引IDr,s的寄存器,并且可以按照逆序读取寄存器中的各个比特位,从而获得指定二进制数值的比特序列的逆序列。另外,寻址单元AU还可以包括诸如计算器(例如,乘法器)等器件。
利用与指定通道Cr,s的索引IDr,s的二进制数值相对应的比特序列的逆序列,使得寻址单元AU能够通过简单的控制逻辑和/或电路结构高效快速地确定第二地址A’r’,并且能够确保获得良好的通道混洗效果。例如,假设一共有16个通道,则仅就张量T1中的通道C1,1、C1,2、C1,3、C1,3以及张量T2中的通道C2,1、C2,2、C2,3、C2,3而言,其索引ID1,1、ID1,2、ID1,3、ID1,4以及ID2,1、ID2,2、ID2,3、ID2,4可以分别为0、1、2、3、4、5、6、7(在其他示例中,索引值也可以是其他适当的值,例如分别为1、2、3、4、5、6、、7、8,等等),并且对应的逆序列分别为0000、1000、0100、1100、0010、1010、0110、1110。于是,张量T1中的通道C1,1、C1,2、C1,3、C1,3上的数据D1,1、D1,2、D1,3、D1,3以及张量T2中的通道C2,1、C2,2、C2,3、C2,3上的数据D2,1、D2,2、D2,3、D2,3在第二存储器M2中存储顺序将成为D1,1、D2,2、D1,3、D2,3、D1,2、D2,2、D1,3、D2,3,从而获得良好的通道混洗效果。
在一个实施例中,上述比特序列中的比特数量可以取决于张量T1至Tn的所有通道的总数。例如,假设共有5个张量数据,即n=4,并且每个张量数据具有4个通道,即m=4,则所有通道的总数量为n*m=20。根据这样的通道总数量。例如,上述比特序列的比特数量可以大于或等于5(25=32>20),例如5、8、16、32、64等。例如,可以根据的结果来确定上述比特序列的比特数量。还可以使用其他方式确定上述比特序列的比特数量,只要确保使用该数量的比特能够足以表示所有的通道的索引即可。
一般地,对于通用或某种特定目的的卷积神经网络而言,通道总数的最大值通常是可以事先预知或确定的,因此根据张量的所有通道的总数来确定比特数量,可以为硬件设计提供参考,以便能够选择具有适当位数或精度的硬件部件(例如,寄存器),使得硬件能够以简便、一致的方式进行处理各种情况,从而确保装置DEV具有较高的处理性能。
如图4所示,在一个实施例中,装置DEV还可以包括信号发生单元SU。信号发生单元SU可以被配置为在确定处理完张量T1至Tn中的所有张量的情况下产生指示通道重排结束的信号。
在图4的示例中,信号发生单元SU可以响应于来自控制单元CU的信号(例如,前文示例中的禁止信号CUDIS)而发出指示重排结束的信号。例如,在前文的包括第三计数器CNT3的控制单元CU的情况下,控制单元CU可以在第三计数器CNT3停止计数的情况下向信号发生单元SU发出信号,信号发生单元SU可以响应于来自控制单元CU的信号,例如在检测到读取单元RU和写入单元WU均无操作的情况下,或者进步响应于接收到来自读取单元RU和/或写入单元WU和/或寻址单元AU的操作结束信号等,发出指示重排结束的信号。
由此,与装置DEV相连的其他装置或部件(例如,用于卷积运算的乘加单元阵列等)能够响应于指示通道重排结束的信号而开始操作或继续操作,使得装置DEV能够与其他装置或部件(例如,用于卷积运算的乘加单元阵列等)协同操作,从而完成诸如卷积运算等任何期望的功能。
例如,图4示出根据本公开的实施例的用于执行分组卷积运算的装置DEV’,该装置可以包括卷积运算电路CC和上述示例中的装置DEV。卷积运算电路CC可以包括乘加单元阵列,并且可以执行卷积运算(例如,分组卷积运算)。卷积运算电路CC可以将运算得到的各个张量数据提供给装置DEV,以便存储到装置DEV中的第一存储器M1中,也可以将运算得到的各个张量数据存储到第一存储器M1中,并将运算结果的相关信息(例如,运算结束、数据地址等)提供给装置DEV。然后,装置DEV可以执行通道重排操作,并且在通道重排结束后,指示通道重排结束的信号传送给卷积运算电路CC,以便使卷积运算电路CC能够根据被装置DEV处理且存储于第二存储器M2中的数据执行进一步的操作/运算。
在图1的示例中,第一存储器M1和第二存储器M2被示为独立于装置DEV。在另外的实施例中,第一存储器M1和第二存储器M2中的至少一个也可以包括在装置DEV中,例如将第一存储器M1与读取单元RU一体地形成,或者将第二存储器M2与写入单元WU一体地形成。根据不同的实施例,第一存储器M1和第二存储器M2可以是在物理上分离的两块或两组存储器,也可以是由同一物理存储器或同一组物理存储器定义的存储空间中两个不同存储区域。根据不同的实施例,第一存储器M1和/或第二存储器M2可以是具有任何适当容量的任何适当类型的存储器,例如静态随机存取存储器、动态随机存取存储器、闪速存储器等。
如上所述,在装置DEV的每次的读写操作中,读取单元RU根据由控制单元CU确定的第一地址Ar,从第一存储器M1中至少读取指定张量Tr在指定通道Cr,s上的至少一部分数据,然后由写入单元WU将由读取单元RU读取的至少一部分数据写入到第二存储器M2的第二地址A’r’处,其中,第二地址A’r’是由装置DEV中的寻址单元AU确定的。在该过程中,装置DEV通过其自身的硬件完成通道数据的读取、混洗和写入,而不需要另外的CPU/BPU和/或软件的干预。而且,在该过程中,可以按照数据对齐的方式进行数据的读取和写入,因此能够获得较高的存取效率,进而确保装置DEV能够具有较高的处理效率。
示例性方法
图6示出根据本公开的实施例的存储数据的方法的示例。在一个实施例中,该方法可以由上述的装置DEV执行,或者可以对应于上述装置DEV的操作过程的示例。
如图6所示,该方法可以包括:
S110,确定至少两个张量T1至Tn中的指定张量Tr在第一存储器M1中的第一地址Ar;
S120,根据第一地址Ar,从第一存储器M1中,至少读取指定张量T1在指定通道Cr,s上的数据Dr,s的至少一部分{Dr,s};
S130,指定通道Cr,s在前述至少两个张量T1至Tn的所有通道的集合{Ci,j|i为小于或等于n的自然数,j为小于或等于m的自然数}中的索引IDr,s,确定前述的至少一部分数据Dr,s在第二存储器M2中的第二地址A’r;以及
S140,将前述的至少一部分数据Dr,s写入到第二存储器M2的第二地址A’r’处。
在一个实施例中,第二地址A’r可以取决于与指定通道Cr,s的索引IDr,s的二进制数值相对应的比特序列的逆序列。在一个实施例中,比特序列中的比特数量取决于张量T1至Tn的所有通道的总数。
如图7所示,在一个实施例中,该方法还可以包括:步骤S150,控制由信号发生单元在确定处理完张量T1至Tn中的所有张量的情况下产生指示通道重排结束的信号。
按照根据本公开的实施例的方法,在每次的读写操作中,根据由控制单元CU确定的第一地址Ar,从第一存储器M1中至少读取指定张量Tr在指定通道Cr,s上的至少一部分数据,然后将由读取单元RU读取的至少一部分数据写入到第二存储器M2的第二地址A’r’处。在该过程中,不需要另外的CPU/BPU和/或软件的干预,而且可以按照数据对齐的方式进行数据的读取和写入,因此能够获得较高的存取效率和处理效率。
示例性电子设备
图8示出根据本公开的实施例的电子设备的示例。
如图8所示,该电子设备ED包括前文所述的根据本公开的实施例的装置DEV。
另外,电子设备ED还可以包括一个或多个另外的处理器(未示出),这些另外的处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备ED中的其他组件以执行期望的功能和/或与装置DEV相配合以实现期望的功能。
如图8所示,电子设备ED还可以包括存储器STR。存储器STR可以存储一个或多个计算机程序产品,并且可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪速存储器等。
装置DEV或者前述的另外的一个或多个处理器可以读取例如在STR中存储的一个或多个计算机程序指令并运行,以实现上文所述的本公开的各个实施例的方法以及/或者其他期望的功能。
如图8所示,在一些实施例中,电子设备ED还可以包括输入装置INP和输出装置OUTP,其中,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。根据不同的实施例,输入设备INP可以包括例如键盘、鼠标等,并且输出装置OUTP可以并且可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等以便向外部输出各种信息。
为了简化,图8中仅示出了该电子设备ED中的一些示例性部件,而省略了诸如总线、输入/输出接口等的其他组件。除此之外,根据具体应用情况,电子设备ED还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,该计算机程序指令在被处理器运行时使得处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的方法中的步骤。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,程序设计语言可以包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,例如计算机可读取的非临时性存储介质,其上存储有程序指令,程序指令在被处理器运行时使得处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的方法中的步骤。
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪速存储器)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
在本文中,诸如“第一”、“第二”等不带有量词的修饰词旨在用于区分不同的元件/部件/电路/模块/装置/步骤,而不用于强调次序、位置关系、重要程度、优先级别等。与此不同,诸如“第一个”、“第二个”等带有量词的修饰词可以用于强调不同的元件/部件/电路/模块/装置/步骤的次序、位置关系、重要程度、优先级别等。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (11)
1.一种存储数据的装置,包括:
控制单元,被配置为确定至少两个张量中的指定张量在第一存储器中的第一地址;
读取单元,被配置为根据所述第一地址从所述第一存储器中至少读取所述指定张量在指定通道上的至少一部分数据;
寻址单元,被配置为根据由所述控制单元指示的所述指定通道在所述至少两个张量的所有通道的集合中的索引,确定所述至少一部分数据在第二存储器中的第二地址;以及
写入单元,被配置为将所述至少一部分数据写入到所述第二存储器的所述第二地址处。
2.根据权利要求1所述的装置,其中,所述第二地址取决于与所述指定通道的索引的二进制数值相对应的比特序列的逆序列。
3.根据权利要求2所述的装置,其中,所述比特序列中的比特数量取决于所述至少两个张量的所有通道的总数。
4.根据权利要求1至3中的任一项所述的装置,还包括:
信号发生单元,被配置为在确定处理完所述至少两个张量中的所有张量的情况下产生指示通道重排结束的信号。
5.一种用于执行分组卷积运算的装置,包括:
卷积运算电路;以及
根据权利要求1至4中的任一项所述的装置。
6.一种存储数据的方法,包括:
确定至少两个张量中的指定张量在第一存储器中的第一地址;
根据所述第一地址从所述第一存储器中至少读取所述指定张量在指定通道上的至少一部分数据;
根据所述指定通道在所述至少两个张量的所有通道的集合中的索引,确定所述至少一部分数据在第二存储器中的第二地址;以及
将所述至少一部分数据写入到所述第二存储器的所述第二地址处。
7.根据权利要求6所述的方法,其中,所述第二地址取决于与所述指定通道的索引的二进制数值相对应的比特序列的逆序列。
8.根据权利要求7所述的方法,其中,所述比特序列中的比特数量取决于所述至少两个张量的所有通道的总数。
9.根据权利要求6至8中的任一项所述的方法,还包括:
控制由信号发生单元在确定处理完所述至少两个张量中的所有张量的情况下产生指示通道重排结束的信号。
10.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行根据权利要求6至9中的任一项所述的方法。
11.一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实现根据权利要求6至9中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910777752.1A CN112418413A (zh) | 2019-08-21 | 2019-08-21 | 存储数据的装置和方法以及执行分组卷积运算的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910777752.1A CN112418413A (zh) | 2019-08-21 | 2019-08-21 | 存储数据的装置和方法以及执行分组卷积运算的装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112418413A true CN112418413A (zh) | 2021-02-26 |
Family
ID=74779880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910777752.1A Pending CN112418413A (zh) | 2019-08-21 | 2019-08-21 | 存储数据的装置和方法以及执行分组卷积运算的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112418413A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688069A (zh) * | 2021-09-10 | 2021-11-23 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及介质 |
CN115577760A (zh) * | 2021-07-14 | 2023-01-06 | 华为技术有限公司 | 一种数据处理方法、系统及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4161036A (en) * | 1977-11-08 | 1979-07-10 | United States Of America, Director National Security Agency | Method and apparatus for random and sequential accessing in dynamic memories |
US6009544A (en) * | 1997-04-23 | 1999-12-28 | Matsushita Electric Industrial Co., Ltd. | Deinterleaver |
US20050088539A1 (en) * | 2003-08-25 | 2005-04-28 | Keisuke Nakazono | Image processing apparatus and image processing method |
CN103959258A (zh) * | 2011-12-05 | 2014-07-30 | 英特尔公司 | 背景重排序——具有有限开销的预防性的磨损控制机制 |
CN109886399A (zh) * | 2019-02-13 | 2019-06-14 | 上海燧原智能科技有限公司 | 一种张量处理装置及方法 |
-
2019
- 2019-08-21 CN CN201910777752.1A patent/CN112418413A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4161036A (en) * | 1977-11-08 | 1979-07-10 | United States Of America, Director National Security Agency | Method and apparatus for random and sequential accessing in dynamic memories |
US6009544A (en) * | 1997-04-23 | 1999-12-28 | Matsushita Electric Industrial Co., Ltd. | Deinterleaver |
US20050088539A1 (en) * | 2003-08-25 | 2005-04-28 | Keisuke Nakazono | Image processing apparatus and image processing method |
CN103959258A (zh) * | 2011-12-05 | 2014-07-30 | 英特尔公司 | 背景重排序——具有有限开销的预防性的磨损控制机制 |
CN109886399A (zh) * | 2019-02-13 | 2019-06-14 | 上海燧原智能科技有限公司 | 一种张量处理装置及方法 |
Non-Patent Citations (1)
Title |
---|
万江华;刘胜;周锋;王耀华;陈书明;: "具有高效混洗模式存储器的可编程混洗单元", 国防科技大学学报, no. 06, 28 December 2011 (2011-12-28) * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115577760A (zh) * | 2021-07-14 | 2023-01-06 | 华为技术有限公司 | 一种数据处理方法、系统及相关设备 |
CN113688069A (zh) * | 2021-09-10 | 2021-11-23 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及介质 |
CN113688069B (zh) * | 2021-09-10 | 2022-08-02 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
CN110415157B (zh) | 一种矩阵乘法的计算方法及装置 | |
CN111340201A (zh) | 卷积神经网络加速器及其执行卷积运算操作的方法 | |
US20210406649A1 (en) | Computing device and method | |
US10452717B2 (en) | Technologies for node-degree based clustering of data sets | |
CN111915001A (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
US11755683B2 (en) | Flexible accelerator for sparse tensors (FAST) in machine learning | |
CN111079917A (zh) | 张量数据分块存取的方法及装置 | |
CN112418413A (zh) | 存储数据的装置和方法以及执行分组卷积运算的装置 | |
CN110096823B (zh) | 基于二进制编码的数字集成电路布线方法及终端设备 | |
US9965343B2 (en) | System and method for determining concurrency factors for dispatch size of parallel processor kernels | |
KR20190109872A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
TWI758223B (zh) | 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體 | |
CN111158757A (zh) | 并行存取装置和方法以及芯片 | |
CN113055027B (zh) | 可变位宽的ldpc编码方法、编码器、ssd及存储介质 | |
JP2024516514A (ja) | 畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング | |
Jain-Mendon et al. | A case study of streaming storage format for sparse matrices | |
CN117472295B (zh) | 一种存储器、数据处理方法、设备及介质 | |
WO2021057112A1 (zh) | 矩阵运算电路、矩阵运算装置及矩阵运算方法 | |
US10693494B2 (en) | Reducing a size of multiple data sets | |
CN115344506B (zh) | 内存地址的映射方法、内存访问方法和装置、芯片、设备 | |
CN113810219A (zh) | 批量配置网络设备的方法、系统和电子设备 | |
CN118210552A (zh) | 指令生成方法、装置及存储介质 | |
CN117971472A (zh) | 基于ARM处理器的SpMV并行加速处理方法与系统 | |
CN113536221A (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 |