CN115756384A - 张量计算单元及使用方法、数据处理装置及操作方法 - Google Patents
张量计算单元及使用方法、数据处理装置及操作方法 Download PDFInfo
- Publication number
- CN115756384A CN115756384A CN202211469483.0A CN202211469483A CN115756384A CN 115756384 A CN115756384 A CN 115756384A CN 202211469483 A CN202211469483 A CN 202211469483A CN 115756384 A CN115756384 A CN 115756384A
- Authority
- CN
- China
- Prior art keywords
- matrix
- multiply
- input port
- column
- data elements
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 191
- 238000012545 processing Methods 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000011017 operating method Methods 0.000 title claims description 5
- 239000011159 matrix material Substances 0.000 claims description 267
- 238000009825 accumulation Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Abstract
一种张量计算单元及使用方法、数据处理装置及操作方法。该张量计算单元包括级联的第一乘加运算器和第二乘加运算器,第一乘加运算器包括第一输入端口、第二输入端口、第三输入端口和第一输出端口,第一输入端口、第二输入端口和第三输入端口用于分别接收参数A0、B0和C,第一乘加运算器配置为进行计算D0=A0×B0+C,且在第一输出端口输出计算结果D0;第二乘加运算器包括第四输入端口、第五输入端口、第六输入端口和第二输出端口,第四输入端口和第五输入端口用于分别接收参数A1、B1,第六输入端口与第一输出端口耦接以接收计算结果D0,第二乘加运算器配置为进行计算D1=A1×B1+D0,且在第二输出端口输出计算结果D1。该张量计算单元可以被无限扩展堆叠。
Description
技术领域
本公开的实施例涉及一种张量计算单元及使用方法、包括多个并列的张量计算单元的数据处理装置及操作方法。
背景技术
图形处理器(GPU,Graphics Processing Unit)中包括大量数据处理单元,每个数据处理单元中都有其专用的向量寄存器和大量可并行执行的运算单元,例如乘加运算器。GPU专用于解决可表示为数据并行计算的问题——在许多数据元素上并行执行的程序,具有极高的计算密度(数学运算与存储器运算的比率)。因为GPU具备大规模的并行处理能力,所以现在越来越多的应用将GPU用于大规模的并行计算。
发明内容
本公开至少一实施例提供一种张量计算单元,包括级联的第一乘加运算器和第二乘加运算器,第一乘加运算器包括第一输入端口、第二输入端口、第三输入端口和第一输出端口,第一输入端口、第二输入端口和第三输入端口用于分别接收参数A0、B0和C,第一乘加运算器配置为进行计算D0=A0×B0+C,且在第一输出端口输出计算结果D0;第二乘加运算器包括第四输入端口、第五输入端口、第六输入端口和第二输出端口,第四输入端口和第五输入端口用于分别接收参数A1、B1,第六输入端口与第一输出端口耦接以接收计算结果D0,第二乘加运算器配置为进行计算D1=A1×B1+D0,且在第二输出端口输出计算结果D1。
本公开至少一实施例提供一种本公开至少一实施例提供的张量计算单元的使用方法,包括:在第一时间在第一乘加运算器的第一输入端口、第二输入端口、第三输入端口分别提供参数A0、B0和C;在第二时间在第二乘加运算器的第四输入端口、第五输入端口分别提供参数A1、B1;在第三时间在第一乘加运算器进行计算D0=A0×B0+C得到计算结果D0并提供至第二乘加运算器后,由第二乘加运算器进行计算D1=A1×B1+D0得到计算结果D1。
例如,在本公开至少一实施例提供的使用方法中,第二时间晚于第一时间。
例如,在本公开至少一实施例提供的使用方法中,第二时间与第一乘加运算器将计算结果D0输出到第二乘加运算器的第六输入端口的时间在同一个时钟周期内。
本公开至少一实施例提供一种数据处理装置,包括本公开至少一实施例提供的张量计算单元。
例如,本公开至少一实施例提供的数据处理装置,还包括:第一存储装置、第二存储装置和第三存储装置,第一存储装置和第二存储装置用于分别存储输入到多个张量计算单元的输入参数,第三存储装置用于分别存储多个张量计算单元输出的计算结果。
本公开至少一实施例提供一种本公开至少一实施例提供的数据处理装置的操作方法,应用于矩阵A×矩阵B的乘法运算,矩阵A的尺寸为M×N,矩阵B的尺寸为N×M,M、N均为正整数且小于等于多个张量计算单元的数量,操作方法包括:从矩阵A中获取至少一列中的M个第一数据元素,并将至少一列中每列的M个第一数据元素分别提供至M个张量计算单元;从矩阵B中获取同一列中的至少一个第二数据元素,并将至少一个第二数据元素中的每个提供至M个张量计算单元;由M个张量计算单元分别使用至少一列中每列的M个第一数据元素和该至少一个第二数据元素进行乘加运算,输出M个计算结果,M大于等于2。
例如,在本公开至少一实施例提供的操作方法中,从矩阵A中获取至少一列中的M个第一数据元素,包括:从矩阵A中获取连续两列中每列的M个第一数据元素Ai(n)和M个第一数据元素Ai(n+1);从矩阵B中获取同一列中的至少一个第二数据元素,包括:从矩阵B中获取同一列中连续两个第二数据元素B(n)j和第二数据元素B(n+1)j;该操作方法还包括获取用于累加的参数Ci;由M个张量计算单元分别使用至少一列中每列的M个第一数据元素和至少一个第二数据元素进行乘加运算,输出M个计算结果,包括:由M个张量计算单元使用M个第一数据元素Ai(n)和M个第一数据元素Ai(n+1),第二数据元素B(n)j和B(n+1)j以及参数Ci,进行二阶乘加运算Di=Ai(n)×B(n)j+Ai(n+1)×B(n+1)j+Ci,由此输出M个计算结果,其中,0<=i,j<=M-1,0<=n<=N-2且n为偶数。
例如,本公开至少一实施例提供的操作方法,还包括:将矩阵乘法运算划分为多个运算批次,在至少一个运算批次中,保持从矩阵A中所获取的连续的第n列和第n+1列的第一数据元素,依次从矩阵B中获取连续的不同的S列中的第n个和第n+1个第二数据元素,依次进行S次二阶乘加运算,S为大于等于2的正整数。
例如,在本公开至少一实施例提供的操作方法中,矩阵A和矩阵B相乘得到的输出矩阵包括多个沿行方向划分的并列的子矩阵,每个子矩阵包括M行,多个子矩阵包括相邻的第一子矩阵和第二子矩阵,第一子矩阵和第二子矩阵都包括S列,操作方法还包括:对于第一子矩阵和第二子矩阵的矩阵乘法运算以交织的方式进行。
例如,在本公开至少一实施例提供的操作方法中,对于第一子矩阵和第二子矩阵的矩阵乘法运算以交织的方式进行,包括:在第一时间段中,对于从矩阵A中所获取的连续的第x列和第x+1列的第一数据元素,依次从矩阵B中获取的对应于第一子矩阵的连续的不同的S列中第x个和第x+1个第二数据元素,依次进行S次二阶乘加运算以得到第一计算结果;在第二时间段中,对于从矩阵A中所获取的连续的第x列和第x+1列的第一数据元素,依次从矩阵B中获取的对应于第二子矩阵的连续的不同的S列中的第x个和第x+1个第二数据元素,依次进行S次二阶乘加运算以得到第二计算结果;在第三时间段中,对于从矩阵A中所获取的连续的第x+2列和第x+3列的第一数据元素,依次从矩阵B中获取的对应于第一子矩阵的连续的不同的S列中第x+2个和第x+3个第二数据元素,依次进行S次二阶乘加运算,并累加对应的第一计算结果;在第四时间段中,对于从矩阵A中所获取的连续的第x+2列和第x+3列的第一数据元素,依次从矩阵B中获取的对应于第二子矩阵的连续的不同的S列中第x+2个和第x+3个第二数据元素,依次进行S次二阶乘加运算,并累加对应的第二计算结果,x为正整数,且0<=x<=N-4。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了GPU内执行矩阵运算的示例的示意图;
图2示出了本公开至少一实施例提供的一种张量计算单元的示意图;
图3示出了本公开至少一实施例提供的数据处理装置的示意性框图;
图4示出了本公开至少一实施例提供的一种本公开至少一实施例提供的数据处理装置的操作方法的示意性流程图;
图5示出了本公开至少一实施例提供的张量计算单元在时间上的执行示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图形处理器(GPU)(例如通用图形处理器(GPGPU))专为并行处理而设计,可用于高性能的并行处理,可以同时计算同一个任务的不同部分,解决单个处理单元无法解决的大型问题。GPU已经广泛用于深度学习模型训练。在GPU中,张量计算单元可以用于为深度学习进行的张量计算,例如用于执行矩阵乘法等。
图1示出了GPU内执行矩阵运算的示例的示意图。
如图1所示,一个尺寸为16×4的矩阵A和尺寸为4×16的矩阵B相乘得到一个尺寸为16×16的矩阵D。硬件根据内部并行计算单元一次能并行计算的程度,将矩阵分块进行计算,分块计算的公式如下:
其中i表示矩阵A的行数,j表示矩阵B的列数,p表示矩阵分块的数目。
例如,如图1所示,根据结果矩阵D,整个矩阵运算被均分成4块对应进行计算,这4块并列且每块包括16行4列。
对于第一块,每次取矩阵A的第一列16×1数据(元素)按顺序分四次分别与矩阵B第一行的第一、第二、第三和第四(即分别在第一、第二、第三和第四列中的)这四个数据(元素)做乘法,就得到了矩阵D的前四列第一次计算的数据。然后,再取矩阵A的第二列16×1数据并按顺序分四次分别与矩阵B第二行的第一、第二、第三和第四这四个数据做乘法,就得到了矩阵D的前四列第二次计算的数据;之后,再取矩阵A的第三列16×1数据并按顺序分四次分别与矩阵B第三行的第一、第二、第三和第四这四个数据做乘法,就得到了矩阵D的前四列第三次计算的数据;之后,再取矩阵A的第四列16×1数据并按顺序分四次分别与矩阵B第四行的第一、第二、第三和第四这四个数据做乘法,就得到了矩阵D的前四列第四次计算的数据。最后,将第一次的计算结果到第四次的结果对应相加得到矩阵四次累加的结果,由此得到矩阵D的第一块的计算结果。按照相同的方式每次都将前一次计算的结果与后一次的结果相加即得到矩阵D里前四列中每个元素的最终值。
接下来,对于第二块,每次取矩阵A的第一列16×1数据并按顺序分四次分别与矩阵B第一行的第五、第六、第七和第八(即分别在第五、第六、第七和第八列中的)这四个数据做乘法,就得到了矩阵D的第二个四列第一次计算的数据。然后,再取矩阵A的第二列16×1数据并按顺序分四次分别与矩阵B第二行的第五、第六、第七和第八这四个数据做乘法,就得到了矩阵D的第二个四列第二次计算的数据;之后,再取矩阵A的第三列16×1数据并按顺序分四次分别与矩阵B第三行的第五、第六、第七和第八这四个数据做乘法,就得到了矩阵D的第二个四列第三次计算的数据;之后,再取矩阵A的第四列16×1数据并按顺序分四次分别与矩阵B第四行的第五、第六、第七和第八这四个数据做乘法,就得到了矩阵D的第二个四列第四次计算的数据。最后,将第一次的计算结果到第四次的结果相加得到矩阵四次累加的结果,由此得到矩阵D的第二块的计算结果。
接下来,对于第三块,按照相同的方式得到对应于矩阵B的第九、第十、第十一和第十二列的矩阵D的第三块的计算结果。
接下来,对于第四块,按照相同的方式得到对应于矩阵B的第十三、第十四、第十五和第十六列的矩阵D的第四块的计算结果。
所以,为了并行执行计算图1的矩阵运算,至少一共需要16个乘加运算器,每次同时进行矩阵A的16个数据与矩阵B的一个数据的运算,输出16个运算结果,例如矩阵是双精度的,那么每个时钟周期输出16个64比特的运算结果,需要一个读写接口为1024比特宽度的随机存取存储器(Random Access Memory,RAM)来保存数据。
上述矩阵乘法用公式D=Ai×Bi+Ci(i=0…3)来表示,其中i=0…3表示需要迭代4次才能完成计算。
例如,在第一次迭代计算时,参数Ci为0,之后每一次迭代计算参数Ci均为前一次迭代计算的结果。
发明人注意到,为了加快矩阵计算的速度,一种方式是在水平方向上再并列堆叠16个乘加运算器,同时执行另一个16×4的矩阵的运算,即同时执行矩阵D的两块不同的16×4的区域。例如,在第一次计算时,第一组16个乘加运算器每次取矩阵A的第一列16×1数据并按顺序分四次分别与矩阵B第一行的第一、第二、第三和第四这四个数据做乘法,得到矩阵D的前四列第一次计算的数据,第二组16个乘加运算器每次取矩阵A的第一列16×1数据并按顺序分四次分别与矩阵B第一行的第五、第六、第七和第八这四个数据做乘法,得到矩阵D的第二个四列第一次计算的数据,所以在第一次计算时同时得到了矩阵D的两块16×4的区域的第一次计算的数据。然后,在第二次计算时,第一组16个乘加运算器每次取矩阵A的第二列16×1数据按顺序分四次分别与矩阵B第一行的第一、第二、第三和第四这四个数据做乘法,得到矩阵D的前四列第二次计算的数据,第二组16个乘加运算器每次取矩阵A的第二列16×1数据并按顺序分四次分别与矩阵B第一行的第五、第六、第七和第八这四个数据做乘法,得到矩阵D的第二个四列第二次计算的数据,所以在第二次计算时同时得到了矩阵D的两块16×4的区域的第二次计算的数据,并与第一次计算的数据进行累加。当这两块16×4的区域的4次累加运算完成后,两组16个乘加运算器开始以相同的方式计算另外两块16×4的区域。这种方式使得两组并行的乘加运算器可以复用矩阵A的数据,并且可以使得相同矩阵的计算速度得到翻倍。这种方式会导致输出的结果从原来16个64比特翻倍到32个64比特,即翻倍了RAM的写带宽。
另一种解决方式是将两组并列的乘加运算器在时间上错开一个时钟,这样它们的输出结果不在同一个时钟,从而可以利用相同接口宽度的RAM实现计算翻倍的目的。但是,这样写RAM需要连续两个时钟周期,这样会抢占GPU内其它部件的写RAM的端口。
本公开至少一实施例提供一种张量计算单元以及包括该张量计算单元的数据处理装置。该张量计算单元包括级联的第一乘加运算器和第二乘加运算器,第一乘加运算器包括第一输入端口、第二输入端口、第三输入端口和第一输出端口,第一输入端口、第二输入端口和第三输入端口用于分别接收参数A0、B0和C,第一乘加运算器配置为进行计算D0=A0×B0+C,且在第一输出端口输出计算结果D0;第二乘加运算器包括第四输入端口、第五输入端口、第六输入端口和第二输出端口,第四输入端口和第五输入端口用于分别接收参数A1、B1,第六输入端口与第一输出端口耦接以接收计算结果D0,第二乘加运算器配置为进行计算D1=A1×B1+D0,且在第二输出端口输出计算结果D1。
本公开上述实施例提供的张量计算单元以及数据处理装置能够利用级联的方式,在提供相同RAM带宽的条件下,实现对于矩阵运算的计算能力翻倍,甚至可以无限地堆叠更多的乘加运算单元。
本公开至少一实施例还提供上述张量计算单元的使用方法以及上述数据处理装置的操作方法。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图2示出了本公开至少一实施例提供的一种张量计算单元200的示意图。
如图2所示,张量计算单元200包括级联的第一乘加运算器201和第二乘加运算器202,第一乘加运算器201包括第一输入端口、第二输入端口、第三输入端口和第一输出端口,第二乘加运算器202包括第四输入端口、第五输入端口、第六输入端口和第二输出端口,第六输入端口与第一乘加运算器201的第一输出端口耦接。
第一乘加运算器201的第一输入端口用于接收参数A0,第二输入端口用于接收参数B0,第三输入端口用于接收参数C。
第一乘加运算器201配置为进行计算D0=A0×B0+C,且在第一输出端口输出计算结果D0。
第二乘加运算器202的第四输入端口用于接收参数A1,第五输入端口用于接收参数B1,第六输入端口与第一输出端口耦接以接收计算结果D0。
第二乘加运算器202配置为进行计算D1=A1×B1+D0,且在第二输出端口输出计算结果D1。
张量计算单元200将两个乘加运算器首尾级联起来,第一乘加运算器计算的是D0=A0×B0+C,第二乘加运算器计算的是D1=A1×B1+D0,整体上实现了D1=A1×B1+A0×B0+C;并且,在张量计算单元200内部,中间计算结果D0在硬件上由第一乘加运算器的第一输出端口直接送给第二乘加运算器的第六输入端口上,这样就避免了两个乘加运算器同时写RAM的情况。利用级联的方式,可以在提供相同RAM带宽的条件下,实现计算能力翻倍。
在上述操作中,如果第二乘加运算器的第四输入端口和第五输入端口没有输入(此时处理为输入为0),则该张量计算单元在第二乘加运算器的第二输出端口输出的是D0,整体上实现的运算是D0=A0×B0+C,则这一模式可以称为“局部模式”。
如果在张量计算单元200中级联更多的乘加运算器,则理论上可以实现无限的乘加运算器的扩展堆叠。例如,在张量计算单元200除了上述级联的第一乘加运算器201和第二乘加运算器202之外,还可以进一步包括第三乘加运算器的情形,该第三乘加运算器包括三个输入端口,其中用于接收累加的参数的输入端口可以直接与第二乘加运算器202的第二输出端口耦接,从而直接接收计算结果D1,而另外两个用于接收乘法因数的输入端口则用于分别接收相应的参数。类似地,还可以级联更多的乘加运算器。
例如,在本公开的一些实施例中,在第一时间(例如第一时钟周期)在第一乘加运算器的第一输入端口、第二输入端口、第三输入端口分别提供参数A0、B0和C;在第二时间(例如第二时钟周期)在第二乘加运算器的第四输入端口、第五输入端口分别提供参数A1、B1;在第三时间(例如第三时钟周期)在第一乘加运算器进行计算D0=A0×B0+C得到计算结果D0并提供至第二乘加运算器后,由第二乘加运算器进行计算D1=A1×B1+D0得到计算结果D1。
由于在乘加运算器中乘法和加法是在不同时钟周期进行的,因此参数A0、A1、B0、B1、C不必要同时到达输入端口。例如,在一些实施例中,第二时间晚于第一时间。由于要先进行A0、B0的乘法,因此A0、B0和C先同时到达第一乘加运算器的输入端口,A1、B1的乘法可以在第二乘加运算器里进行,因此A1、B1可以晚几个时钟周期再到达第二乘加运算器的输入端口,例如A1、B1可以在第三时间之前或同时(即第一乘加运算器计算得到D0之前或同时)到达第二乘加运算器的输入端口,对于后者第二时间和第三时间例如为同一时钟周期。
又例如,参数A1、B1也可以与参数A0、B0同时到达各自的乘加运算器的输入端口,即第二时间与第一时间是相同的,例如为同一时钟周期。通过协调第一时间、第二时间以及第三时间,可以获得更平滑的执行流水线,从而提高处理效率。
图3示出了本公开至少一实施例提供的数据处理装置300的示意性框图。数据处理装置300包括多个并列的张量计算单元301,张量计算单元301的结构可以参考图2。
例如,在一些实施例中,数据处理装置300还可以包括第一存储装置302、第二存储装置303和第三存储装置304。
第一存储装置302和第二存储装置303用于分别存储输入到多个张量计算单元的输入参数。
例如,第一存储装置302为向量寄存器,分别用于存储进行矩阵运算的输入矩阵的数据,并且可以将数据并行地输入到上述多个并列的张量计算单元301。第二存储装置303为标量寄存器或向量寄存器,用于存储参数C,并且可以将数据并行地输入到上述多个并列的张量计算单元301。
第三存储装置304用于分别存储多个张量计算单元输出的计算结果。例如,第三存储装置304为向量寄存器,用于存储矩阵运算得到的输出矩阵的数据,可以并行地从上述多个并列的张量计算单元301接收计算结果的数据。
图4示出了本公开至少一实施例提供的一种数据处理装置的操作方法的示意性流程图。该操作方法应用于矩阵A×矩阵B的乘法运算,矩阵A的尺寸为M×N,矩阵B的尺寸为N×M,这里M、N均为正整数且小于等于多个张量计算单元的数量Q。可以理解,当需要被计算的矩阵的维度尺寸大于Q时,可以对该大矩阵拆分为多个维度尺寸小于等于Q的较小矩阵进行计算,之后对该多个较小矩阵的计算结果进行拼合,从而得到较大矩阵的计算结果。
如图4所示,该操作方法包括如下的步骤S401~S403。
步骤S401:从矩阵A中获取至少一列中的M个第一数据元素,并将至少一列中每列的M个第一数据元素分别提供至M个张量计算单元。
步骤S402:从矩阵B中获取同一列中的至少一个第二数据元素,并将至少一个第二数据元素中的每个提供至M个张量计算单元。
步骤S403:由M个张量计算单元分别使用至少一列中每列的M个第一数据元素和至少一个第二数据元素进行乘加运算,输出M个计算结果,M大于等于2。
例如,在本公开的一些实施例中,步骤S401中,从矩阵A中获取一列中的M个第一数据元素(例如第一数据元素a(0)-a(M-1)),然后这M个第一数据元素被分别提供至M个张量计算单元;步骤S402中,从矩阵B中获取一个第二数据元素(例如第二数据元素b(0)),该第二数据元素提供至M个张量计算单元;步骤S403中,该M个张量计算单元分别使用M个第一数据元素和该第二数据元素进行乘加运算,输出M个计算结果。例如,第一个张量计算单元使用第一数据元素a(0)和该第二数据元素b(0)进行计算,第二个张量计算单元使用第一数据元素a(1)和该第二数据元素b(0)进行计算,……,第M个张量计算单元使用第一数据元素a(M-1)和该第二数据元素b(0)进行计算。在这些实施例中,每个张量计算单元都处于“局部模式”。
例如,在本公开的一些实施例中,步骤S401可以包括:从矩阵A中获取连续两列(第n列和第n+1列)中每列的M个第一数据元素Ai(n)和M个第一数据元素Ai(n+1);步骤S402可以包括:从矩阵B中获取同一列中分别位于第n行和第n+1行中的连续两个第二数据元素B(n)j和第二数据元素B(n+1)j,操作方法还可以包括获取用于累加的参数Ci;步骤S403可以包括:由M个张量计算单元分别使用第n列中的M个第一数据元素Ai(n)和第n+1列中的M个第一数据元素Ai(n+1),使用第二数据元素B(n)j和B(n+1)j以及参数Ci,进行二阶乘加运算Di=Ai(n)×B(n)j+Ai(n+1)×B(n+1)j+Ci,由此输出M个计算结果,其中,0<=i,j<=M-1,0<=n<=N-2且n为偶数。由此,可以根据j的取值执行多次计算。
例如,以j=0为例,第一个张量计算单元使用第一数据元素A0(n)和A0(n+1)(即i为0到M-1)和该第二数据元素B(n)0和B(n+1)0(即j=0)以及C0进行计算,第二个张量计算单元使用第一数据元素A1(n)和A1(n+1)和该第二数据元素B(n)0和B(n+1)0以及C1进行计算,……,第M个张量计算单元使用第一数据元素A(M-1)(n)和A(M-1)(n+1)和该第二数据元素B(n)0和B(n+1)0以及C(M-1)进行计算,由此得到M个计算结果。对于j等于其他值进行类似处理。
例如,对于图1所示的矩阵A和矩阵B,M=16,N=4。从矩阵A中获取第一列中的16个第一数据元素Ai0和第二列中的16个第一数据元素Ai1,并将16个第一数据元素Ai0和16个第一数据元素Ai1分别提供至16个张量计算单元。从矩阵B中获取第一列中的第一、第二这两个第二数据元素B00和B10,并将这两个第二数据元素中的每个提供至16个张量计算单元。如果需要,还可以进一步获取用于累加的参数Ci。16个张量计算单元分别使用矩阵A中获取的16个第一数据元素Ai0和16个第一数据元素Ai1、矩阵B中获取的第二数据元素B00和B10以及参数Ci进行乘加运算Di=Ai0×B00+Ai1×B10+Ci,输出16个计算结果D0~D15,i为0到15。
在至少一个示例中,假设一个乘加运算器需要4个时钟周期才能完成计算,那么上述张量计算单元就需要8个时钟周期才能完成计算。通常情况下,GPU的数据输入速度是4个时钟周期输入一笔新数据,例如在第一个时钟周期,A0、B0、A1、B1、C输入到一个张量计算单元的输入端口,在第五个时钟周期,新的A0、B0、A1、B1、C输入到该张量计算单元的输入端口,但是前一轮的计算结果D0(作为新的C)要在第八个时钟周期才能计算出来,即这一轮运算的参数C还没被计算出来,这会导致因级联带来的延迟问题。
针对上述延迟问题,在本公开的至少一个实施例中,将矩阵乘法运算划分为多个运算批次,并利用电路控制运算批次以交织的方式执行。
例如,在本公开的一些实施例中,将矩阵乘法运算划分为多个运算批次,例如,在每个运算批次中,保持从矩阵A中所获取的连续的第n列和第n+1列的第一数据元素,依次从矩阵B中获取连续的不同的S列中的第n个和第n+1个第二数据元素,依次进行S次二阶乘加运算,S为大于等于2的正整数。
例如,对于图1所示的矩阵A和矩阵B的矩阵乘法运算,将该矩阵乘法运算划分为多个运算批次,每个运算批次对应矩阵D的一块16×4的区域。例如,在第一个运算批次中,保持从矩阵A中所获取的第1列和第2列的第一数据元素,然后依次从矩阵B中获取前四列中的第1个和第2个第二数据元素(即前四列中分别位于第1行和第2行中的两个第二数据元素),依次进行4次二阶乘加运算。例如,在第二个运算批次中,保持从矩阵A中所获取的第1列和第2列的第一数据元素,然后依次从矩阵B中获取第五列到第八列中的第1个和第2个第二数据元素(即第五列到第八列中分别位于第1行和第2行中的两个第二数据元素),依次进行4次二阶乘加运算,……。
例如,在本公开的一些实施例中,矩阵A和矩阵B相乘得到的输出矩阵包括多个沿行方向划分的并列的子矩阵,每个子矩阵包括M行,多个子矩阵包括相邻的第一子矩阵和第二子矩阵,第一子矩阵和第二子矩阵都包括S列,操作方法还包括:对于第一子矩阵和第二子矩阵的矩阵乘法运算以交织的方式进行。
例如,在本公开的一些实施例中,对于第一子矩阵和第二子矩阵的矩阵乘法运算以交织的方式进行可以包括:在第一时间段中,对于从矩阵A中所获取的连续的第x列和第x+1列的第一数据元素,依次从矩阵B中获取的对应于第一子矩阵的连续的不同的S列中第x个和第x+1个第二数据元素,依次进行S次二阶乘加运算以得到第一计算结果;在第二时间段中,对于从矩阵A中所获取的连续的第x列和第x+1列的第一数据元素,依次从矩阵B中获取的对应于第二子矩阵的连续的不同的S列中的第x个和第x+1个第二数据元素,依次进行S次二阶乘加运算以得到第二计算结果;在第三时间段中,对于从矩阵A中所获取的连续的第x+2列和第x+3列的第一数据元素,依次从矩阵B中获取的对应于第一子矩阵的连续的不同的S列中第x+2个和第x+3个第二数据元素,依次进行S次二阶乘加运算,并累加对应的第一计算结果;在第四时间段中,对于从矩阵A中所获取的连续的第x+2列和第x+3列的第一数据元素,依次从矩阵B中获取的对应于第二子矩阵的连续的不同的S列中第x+2个和第x+3个第二数据元素,依次进行S次二阶乘加运算,并累加对应的第二计算结果,x为正整数,且0<=x<=N-4。
上面以对于第一子矩阵和第二子矩阵的矩阵乘法运算以交织的方式进行为例进行描述,在其他实施例中,多个子矩阵包括相邻的第一子矩阵、第二子矩阵和第三子矩阵,第一子矩阵、第二子矩阵和第三子矩阵都包括S列,操作方法还包括:对于第一子矩阵、第二子矩阵和第三子矩阵的矩阵乘法运算以交织的方式进行。
在本公开的至少一个实施例中,通过级联的两个乘加运算器的方式实现二阶乘加运算,可以有效地利用现有乘加运算器,在不增加更多逻辑电路的情况下实现与乘加运算器一样的运算精度,每级联一级乘加运算器就需要增加交织的矩阵块,以补偿因级联导致的延迟增加。利用不同矩阵块之间的交织运算方式,可以解决因级联导致的延迟问题。
下面以一个具体的示例来说明如何以交织的方式进行第一子矩阵和第二子矩阵的矩阵乘法运算。
例如,对于图1所示的矩阵A和矩阵B的矩阵乘法运算,矩阵A的尺寸为16×4,矩阵B的尺寸为4×16,矩阵A和矩阵B相乘得到一个尺寸为16×16的矩阵D。矩阵D包括4个沿行方向划分的并列的子矩阵,每个子矩阵包括16行(子矩阵即图1中示出的从左到右的第一块、第二块、第三块、第四块矩阵)。第一块矩阵和第二块矩阵分别为相邻的第一子矩阵和第二子矩阵,第三块矩阵和第四块矩阵分别为相邻的第一子矩阵和第二子矩阵,第一子矩阵和第二子矩阵都包括4列。
在第一轮四个时钟周期中,对于从矩阵A中所获取的第1列和第2列的第一数据元素,依次从矩阵B中获取的前四列中的第1个和第2个第二数据元素,依次进行4次二阶乘加运算以得到第一块矩阵对应的第一计算结果。
在第二轮四个时钟周期中,对于从矩阵A中所获取的第1列和第2列的第一数据元素,依次从矩阵B中获取的第五列至第八列中的第1个和第2个第二数据元素,依次进行4次二阶乘加运算以得到第二块矩阵对应的第二计算结果。
在第三轮四个时钟周期中,对于从矩阵A中所获取的第3列和第4列的第一数据元素,依次从矩阵B中获取的前四列中的第3个和第4个第二数据元素,依次进行4次二阶乘加运算并累加对应的第一计算结果,得到第一块矩阵的计算结果。
在第四轮四个时钟周期中,对于从矩阵A中所获取的第3列和第4列的第一数据元素,依次从矩阵B中获取的第五列至第八列中的第3个和第4个第二数据元素,依次进行4次二阶乘加运算并累加对应的第二计算结果,得到第二块矩阵的计算结果。
在第五轮四个时钟周期中,对于从矩阵A中所获取的第1列和第2列的第一数据元素,依次从矩阵B中获取的第九列至第十二列中的第1个和第2个第二数据元素,依次进行4次二阶乘加运算以得到第三块矩阵对应的第三计算结果。
在第六轮四个时钟周期中,对于从矩阵A中所获取的第1列和第2列的第一数据元素,依次从矩阵B中获取的第十三列至第十六列中的第1个和第2个第二数据元素,依次进行4次二阶乘加运算以得到第四块矩阵对应的第四计算结果。
在第七轮四个时钟周期中,对于从矩阵A中所获取的第3列和第4列的第一数据元素,依次从矩阵B中获取的第九列至第十二列中的第3个和第4个第二数据元素,依次进行4次二阶乘加运算并累加对应的第三计算结果,得到第三块矩阵的计算结果。
在第八轮四个时钟周期中,对于从矩阵A中所获取的第3列和第4列的第一数据元素,依次从矩阵B中获取的第十三列至第十六列中的第3个和第4个第二数据元素,依次进行4次二阶乘加运算并累加对应的第四计算结果,得到第四块矩阵的计算结果。
在此实施例中,将矩阵乘法运算划分为8个运算批次,每个运算批次包括一轮四个时钟周期,下面通过图5示出本公开实施例提供的张量计算单元在前四轮十六个时钟周期中的执行示意图。
例如,从矩阵A的第1列和第2列获取的第一数据元素分别用A0和A1表示,从矩阵A的第3列和第4列获取的第一数据元素分别用A2和A3表示,从矩阵B的第1行和第2行获取的第二数据元素分别用B0和B1表示,从矩阵B的第3行和第4行获取的第二数据元素分别用B2和B3表示。如图5所示,在第一轮四个时钟周期中,执行的是A0、B0、A1、B1的二阶乘加运算以计算第一块16×4的矩阵,在第二轮四个时钟周期中,执行的是A0、B0、A1、B1的二阶乘加运算以计算第二块16×4的矩阵,在第三轮四个时钟周期中,执行的是A2、B2、A3、B3的二阶乘加运算以计算第一块16×4的矩阵,第一轮的计算结果会和本轮进行累加,在第四轮四个时钟周期中,执行的是A2、B2、A3、B3的二阶乘加运算以计算第二块16×4的矩阵,第二轮的计算结果会和本轮进行累加。
根据本公开实施例的数据处理装置包括多个并列的张量计算单元,该数据处理装置例如可以为图像处理器(例如GPGPU),也可以是其他类型的处理器,例如数据处理器、张量处理器、神经网络处理器等。
根据本公开的至少一实施例还提供了一种电子装置,该电子装置包括上述数据处理装置。例如,该电子装置还可以包括例如中央处理器(CPU),该中央处理器与该数据处理装置通过系统总线组合构成异构计算系统,例如,该总线可以是外设部件互连标准(PCI)总线或扩展工业标准结构(EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
该电子装置还可以包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等输入装置;包括诸如液晶显示器、扬声器、振动器等输出装置;包括例如磁带、硬盘(HDD或SDD)等存储装置;例如还可以包括诸如LAN卡、调制解调器等的网络接口卡等通信装置。通信装置可以允许电子装置与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。根据需要驱动器连接至I/O接口。可拆卸存储介质,诸如磁盘、光盘、磁光盘、半导体存储器等,根据需要安装在该驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储装置。
例如,该电子装置还可以进一步包括外设接口等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
该电子装置例如可以是片上系统(SOC)或者包括该SOC的设备,例如,可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪、家用电器、通信基站、工业控制器、服务器等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种张量计算单元,包括级联的第一乘加运算器和第二乘加运算器,
其中,所述第一乘加运算器包括第一输入端口、第二输入端口、第三输入端口和第一输出端口,所述第一输入端口、所述第二输入端口和所述第三输入端口用于分别接收参数A0、B0和C,所述第一乘加运算器配置为进行计算D0=A0×B0+C,且在所述第一输出端口输出计算结果D0;
所述第二乘加运算器包括第四输入端口、第五输入端口、第六输入端口和第二输出端口,所述第四输入端口和所述第五输入端口用于分别接收参数A1、B1,所述第六输入端口与所述第一输出端口耦接以接收所述计算结果D0,所述第二乘加运算器配置为进行计算D1=A1×B1+D0,且在所述第二输出端口输出计算结果D1。
2.一种权利要求1所述的张量计算单元的使用方法,包括:
在第一时间在所述第一乘加运算器的所述第一输入端口、所述第二输入端口、所述第三输入端口分别提供参数A0、B0和C;
在第二时间在所述第二乘加运算器的所述第四输入端口、所述第五输入端口分别提供参数A1、B1;
在第三时间在所述第一乘加运算器进行计算D0=A0×B0+C得到所述计算结果D0并提供至所述第二乘加运算器后,由所述第二乘加运算器进行计算D1=A1×B1+D0得到所述计算结果D1。
3.根据权利要求2所述的使用方法,其中,所述第二时间晚于所述第一时间。
4.根据权利要求3所述的使用方法,其中,所述第二时间与所述第一乘加运算器将所述计算结果D0输出到所述第二乘加运算器的所述第六输入端口的时间在同一个时钟周期内。
5.一种数据处理装置,包括多个并列的如权利要求1所述的张量计算单元。
6.根据权利要求5所述的数据处理装置,还包括第一存储装置、第二存储装置和第三存储装置,
其中,所述第一存储装置和所述第二存储装置用于分别存储输入到所述多个张量计算单元的输入参数,所述第三存储装置用于分别存储所述多个张量计算单元输出的计算结果。
7.一种权利要求5或6所述的数据处理装置的操作方法,应用于矩阵A×矩阵B的乘法运算,其中,所述矩阵A的尺寸为M×N,所述矩阵B的尺寸为N×M,M、N均为正整数且小于等于所述多个张量计算单元的数量,
所述操作方法包括:
从所述矩阵A中获取至少一列中的M个第一数据元素,并将至少一列中每列的M个第一数据元素分别提供至M个张量计算单元;
从所述矩阵B中获取同一列中的至少一个第二数据元素,并将所述至少一个第二数据元素中的每个提供至所述M个张量计算单元;
由所述M个张量计算单元分别使用所述至少一列中每列的M个第一数据元素和所述至少一个第二数据元素进行乘加运算,输出M个计算结果,M大于等于2。
8.根据权利要求7所述的操作方法,其中,
从所述矩阵A中获取至少一列中的M个第一数据元素,包括:
从所述矩阵A中获取连续两列中每列的M个第一数据元素Ai(n)和M个第一数据元素Ai(n+1);
从所述矩阵B中获取同一列中的至少一个第二数据元素,包括:
从所述矩阵B中获取同一列中连续两个第二数据元素B(n)j和第二数据元素B(n+1)j;
所述操作方法还包括获取用于累加的参数Ci;
由所述M个张量计算单元分别使用所述至少一列中每列的M个第一数据元素和所述至少一个第二数据元素进行乘加运算,输出M个计算结果,包括:
由所述M个张量计算单元使用所述M个第一数据元素Ai(n)和所述M个第一数据元素Ai(n+1),所述第二数据元素B(n)j和B(n+1)j以及参数Ci,进行二阶乘加运算Di=Ai(n)×B(n)j+Ai(n+1)×B(n+1)j+Ci,由此输出所述M个计算结果,其中,0<=i,j<=M-1,0<=n<=N-2且n为偶数。
9.根据权利要求8所述的操作方法,还包括:
将矩阵乘法运算划分为多个运算批次,
其中,在至少一个运算批次中,保持从所述矩阵A中所获取的连续的第n列和第n+1列的第一数据元素,依次从所述矩阵B中获取连续的不同的S列中的第n个和第n+1个第二数据元素,依次进行S次所述二阶乘加运算,S为大于等于2的正整数。
10.根据权利要求9所述的操作方法,其中,所述矩阵A和所述矩阵B相乘得到的输出矩阵包括多个沿行方向划分的并列的子矩阵,每个子矩阵包括M行,所述多个子矩阵包括相邻的第一子矩阵和第二子矩阵,所述第一子矩阵和所述第二子矩阵都包括S列,
所述操作方法还包括:
对于所述第一子矩阵和所述第二子矩阵的矩阵乘法运算以交织的方式进行。
11.根据权利要求10所述的操作方法,其中,对于所述第一子矩阵和所述第二子矩阵的矩阵乘法运算以交织的方式进行,包括:
在第一时间段中,对于从所述矩阵A中所获取的连续的第x列和第x+1列的第一数据元素,依次从所述矩阵B中获取的对应于所述第一子矩阵的连续的不同的S列中第x个和第x+1个第二数据元素,依次进行S次所述二阶乘加运算以得到第一计算结果,
在第二时间段中,对于从所述矩阵A中所获取的连续的第x列和第x+1列的第一数据元素,依次从所述矩阵B中获取的对应于所述第二子矩阵的连续的不同的S列中的第x个和第x+1个第二数据元素,依次进行S次所述二阶乘加运算以得到第二计算结果,
在第三时间段中,对于从所述矩阵A中所获取的连续的第x+2列和第x+3列的第一数据元素,依次从所述矩阵B中获取的对应于所述第一子矩阵的连续的不同的S列中第x+2个和第x+3个第二数据元素,依次进行S次所述二阶乘加运算,并累加对应的所述第一计算结果,
在第四时间段中,对于从所述矩阵A中所获取的连续的第x+2列和第x+3列的第一数据元素,依次从所述矩阵B中获取的对应于所述第二子矩阵的连续的不同的S列中第x+2个和第x+3个第二数据元素,依次进行S次所述二阶乘加运算,并累加对应的所述第二计算结果,
x为正整数,且0<=x<=N-4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211469483.0A CN115756384B (zh) | 2022-11-22 | 张量计算单元及使用方法、数据处理装置及操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211469483.0A CN115756384B (zh) | 2022-11-22 | 张量计算单元及使用方法、数据处理装置及操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115756384A true CN115756384A (zh) | 2023-03-07 |
CN115756384B CN115756384B (zh) | 2024-05-17 |
Family
ID=
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317819B1 (en) * | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
US20140188966A1 (en) * | 2012-07-24 | 2014-07-03 | Sameh Galal | Floating-point multiply-add unit using cascade design |
CN109992743A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 矩阵乘法器 |
CN110221808A (zh) * | 2019-06-03 | 2019-09-10 | 深圳芯英科技有限公司 | 向量乘加运算的预处理方法、乘加器及计算机可读介质 |
CN110415157A (zh) * | 2018-04-26 | 2019-11-05 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
CN111581595A (zh) * | 2020-04-24 | 2020-08-25 | 科大讯飞股份有限公司 | 一种矩阵乘法计算方法及计算电路 |
US20210312697A1 (en) * | 2019-03-15 | 2021-10-07 | Intel Corporation | Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format |
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317819B1 (en) * | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
US20140188966A1 (en) * | 2012-07-24 | 2014-07-03 | Sameh Galal | Floating-point multiply-add unit using cascade design |
CN109992743A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 矩阵乘法器 |
CN110415157A (zh) * | 2018-04-26 | 2019-11-05 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
US20210312697A1 (en) * | 2019-03-15 | 2021-10-07 | Intel Corporation | Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format |
CN110221808A (zh) * | 2019-06-03 | 2019-09-10 | 深圳芯英科技有限公司 | 向量乘加运算的预处理方法、乘加器及计算机可读介质 |
CN111581595A (zh) * | 2020-04-24 | 2020-08-25 | 科大讯飞股份有限公司 | 一种矩阵乘法计算方法及计算电路 |
Non-Patent Citations (2)
Title |
---|
LI PING .ETC: "Interleave division multiple-access", 《IEEE TRANSACTION ON WIRELESS COMMUNICATION》, vol. 5, no. 4, 30 April 2006 (2006-04-30), pages 938 - 947, XP055105489, DOI: 10.1109/TWC.2006.1618943 * |
姚运涛: "面向股票的网络舆情信息处理与波动趋势预测", 《中国优秀硕士学位论文全文数据库》, 31 March 2018 (2018-03-31), pages 160 - 219 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9489342B2 (en) | Systems, methods, and computer program products for performing mathematical operations | |
US9275014B2 (en) | Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods | |
JP2962970B2 (ja) | 周波数から時間領域への変換方法及び装置 | |
EP0736205B1 (en) | Method and apparatus for performing a fast hadamard transform | |
JP3228927B2 (ja) | プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法 | |
JPS593790B2 (ja) | Fft エンサンシヨリソウチ | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
US6704760B2 (en) | Optimized discrete fourier transform method and apparatus using prime factor algorithm | |
CN109284475B (zh) | 一种矩阵卷积计算装置及矩阵卷积计算方法 | |
US5034910A (en) | Systolic fast Fourier transform method and apparatus | |
CN115238863A (zh) | 一种卷积神经网络卷积层的硬件加速方法、系统及应用 | |
US7653676B2 (en) | Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine | |
US4298950A (en) | Multipoint pipeline processor for computing the discrete fourier transform | |
CN115756384B (zh) | 张量计算单元及使用方法、数据处理装置及操作方法 | |
CN113032723A (zh) | 一种矩阵乘法器的实现方法及矩阵乘法器装置 | |
CN115756384A (zh) | 张量计算单元及使用方法、数据处理装置及操作方法 | |
US6728742B1 (en) | Data storage patterns for fast fourier transforms | |
CN112765540A (zh) | 数据处理方法、装置及相关产品 | |
CN109753629B (zh) | 多粒度并行fft计算装置 | |
CN111368250A (zh) | 基于傅里叶变换/逆变换的数据处理系统、方法及设备 | |
JP3553376B2 (ja) | 並列画像処理プロセッサ | |
Wang et al. | An FPGA-Based Reconfigurable CNN Training Accelerator Using Decomposable Winograd | |
JP2001160736A (ja) | デジタルフィルタ回路 | |
GB2216693A (en) | Fourier transformation | |
JPH10260958A (ja) | アドレス生成回路 |
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 |