CN109522125B - 一种矩阵乘积转置的加速方法、装置及处理器 - Google Patents
一种矩阵乘积转置的加速方法、装置及处理器 Download PDFInfo
- Publication number
- CN109522125B CN109522125B CN201811376485.9A CN201811376485A CN109522125B CN 109522125 B CN109522125 B CN 109522125B CN 201811376485 A CN201811376485 A CN 201811376485A CN 109522125 B CN109522125 B CN 109522125B
- Authority
- CN
- China
- Prior art keywords
- processor
- matrix
- rows
- columns
- storage unit
- 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.)
- Active
Links
- 229940050561 matrix product Drugs 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000017105 transposition Effects 0.000 title claims abstract description 50
- 230000001133 acceleration Effects 0.000 title claims description 25
- 238000004364 calculation method Methods 0.000 claims abstract description 43
- 239000011159 matrix material Substances 0.000 claims description 111
- 230000008569 process Effects 0.000 abstract description 12
- 230000002411 adverse Effects 0.000 abstract description 9
- 230000000694 effects Effects 0.000 abstract description 9
- 238000012546 transfer Methods 0.000 abstract description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004904 shortening 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种矩阵乘积转置加速方法、装置及处理器,当第一处理器需要计算(A×B)T时,第一处理器仅需将A和B传送给第二处理器,由第二处理器代替第一处理器进行(A×B)T计算并将(A×B)T的计算结果反馈给第一处理器。如此,避免因计算(A×B)T时占用第一处理器的大量计算资源而导致降低第一处理器的计算速度,以使第一处理器正常处理其他任务。而且,在第二处理器中,通过对B进行按行输入并按列存储,使得B可以按列进行读取,实现同时进行B的读取和转置。如此,与先读取B再转置的现有技术相比,该方法省略将读取后的B单独进行转置的过程,加快(A×B)T的计算速度,减少(A×B)T的计算对CPU造成的不良影响。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种矩阵乘积转置的加速方法、装置及处理器。
背景技术
随着大数据技术的发展,矩阵乘积转置的使用频率越来越频繁。其中,矩阵乘积转置的定义是矩阵A和矩阵B相乘并转置,其计算公式为:
(A×B)T=BT×AT。
然而,由于现有的矩阵乘积转置方法进行矩阵乘积转置的计算时,将占用CPU大量的计算资源,导致CPU的计算速度降低,以致于影响CPU处理其他任务。
发明内容
为了解决现有技术中存在的以上技术问题,本申请提供一种矩阵乘积转置加速方法、装置及处理器,能够加快矩阵乘积转置的计算速度,进而减少了矩阵乘积转置计算对CPU造成的不良影响。
为了实现上述目的,本申请提供的技术方案如下:
本申请提供一种矩阵乘积转置的加速方法,包括:
第二处理器按行从第一处理器中获取第一矩阵A;所述第二处理器将所述A按行存储至第一存储单元;其中,所述A为m行且p列的矩阵;
所述第二处理器按行从所述第一处理器中获取第二矩阵B;所述第二处理器将所述B按列存储至第二存储单元;其中,所述B为p行且n列的矩阵;
所述第二处理器从所述第一存储单元中按行读取所述A;
所述第二处理器从所述第二存储单元中按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D;其中,所述D为n行且m列的矩阵;
所述第二处理器将所述D发送给所述第一处理器。
可选的,所述第二处理器将所述B按列存储至第二存储单元,具体包括:
所述第二处理器将所述B进行转置,获得第二矩阵的转置矩阵BT;所述第二处理器将所述BT按行存储至第二存储单元;其中,所述BT为n行且p列的矩阵。
可选的,所述第二处理器将所述B进行转置,获得第二矩阵的转置矩阵BT,具体包括:
所述第二处理器将所述B中第i行第j列元素的原地址(i-1)×n+j转换为新地址(j-1)×p+i,获得第二矩阵的转置矩阵BT;其中,1≤i≤p,且1≤j≤n。
可选的,所述第二处理器从所述第一存储单元按行读取所述A,具体包括:
所述第二处理器从所述第一存储单元中按行读取所述A,并依次保存于第1行向量至第m行向量;
所述第二处理器从所述第二存储单元按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D,具体包括:
所述第二处理器从所述第二存储单元按列读取所述B的第t列,得到第t列向量;其中,1≤t≤n;
根据所述A和所述第t列向量,得到第三矩阵D的第t行数据。
可选的,所述根据所述A和所述第t列向量,得到第三矩阵D的第t行数据,具体包括:
并行将所述A的每行数据分别与所述t列向量进行向量相乘,分别得到第三矩阵D的第t行数据中的第1列至第m列。
可选的,所述第二处理器按行从第一处理器中获取第一矩阵A之前,还包括:
第二处理器进行参数配置,并获得第一参数配置信息;其中,所述第一参数配置信息,包括:所述第一处理器中第一预设存储位置的地址信息;
所述第二处理器进行读操作;
所述第二处理器按行接收第一处理器发送的第一矩阵A,具体包括:
根据所述第一参数配置信息,所述第二处理器按行从第一处理器中所述第一预设存储位置读取第一矩阵A。
可选的,所述获得所述A和所述B的乘积转置结果第三矩阵D之后,所述第二处理器将所述D发送给所述第一处理器之前,还包括:
所述第二处理器进行参数配置,并获得第二参数配置信息;其中,所述第二参数配置信息,包括所述第一处理器中第二预设存储位置的地址信息;
所述第二处理器进行写操作;
所述第二处理器将所述D发送给所述第一处理器,具体包括:
根据第二参数配置信息,所述第二处理器将所述D写入到所述第一处理器的第二预设存储位置。
可选的,所述第一处理器和所述第二处理器之间通过高速串行计算机扩展总线标准PCIe进行通信。
本申请还提供一种矩阵乘积转置的加速装置,包括:
第一获取模块,用于按行从第一处理器中获取第一矩阵A;将所述A按行存储至第一存储单元;其中,所述A为m行且p列的矩阵;
第二获取模块,用于按行从所述第一处理器中获取第二矩阵B;将所述B按列存储至第二存储单元;其中,所述B为p行且n列的矩阵;
第一读取模块,用于从所述第一存储单元中按行读取所述A;
计算模块,用于从所述第二存储单元中按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D;其中,所述D为n行且m列的矩阵;
发送模块,用于将所述D发送给所述第一处理器。
可选的,所述第一读取模块,具体包括:
从所述第一存储单元中按行读取所述A,并依次保存于第1行向量至第m行向量;
所述计算模块,具体包括:
第一读取子模块,用于从所述第二存储单元按列读取所述B的第t列,得到第t列向量;其中,1≤t≤n;
计算子模块,用于根据所述A和所述第t列向量,得到第三矩阵D的第t行数据。
本申请还提供一种处理器,包括:上述任一种所述的矩阵乘积转置的加速装置。
与现有技术相比,本申请至少具有以下优点:
本申请提供的矩阵乘积转置的加速方法中,当第一处理器需要计算第一矩阵A和第二矩阵B的乘积转置(A×B)T时,第一处理器仅需将A和B传送给第二处理器,由第二处理器代替第一处理器进行(A×B)T的计算并将(A×B)T的计算结果反馈给第一处理器即可。如此,避免了因计算(A×B)T时占用第一处理器的大量计算资源而导致的降低第一处理器的计算速度,使得第一处理器可以正常的处理其他任务。而且,在第二处理器中,通过对B进行按行输入并按列存储,使得B可以按列进行读取,实现了同时进行B的读取和转置。如此,与先读取B再转置的现有技术相比,该方法省略了将读取后的B再单独进行转置的过程,从而加快了矩阵乘积转置(A×B)T的计算速度,进而进一步减少了矩阵乘积转置(A×B)T的计算对CPU造成的不良影响。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例一提供的矩阵乘积转置的加速方法的流程图;
图2为本申请实施例二提供的矩阵乘积转置的加速方法的流程图;
图3为本申请实施例提供的S204的一种实施方式的流程图;
图4为本申请实施例提供的S206的一种实施方式的流程图;
图5为本申请实施例提供的S206的另一种实施方式的流程图;
图6为本申请实施例提供的矩阵乘积转置的加速装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参见图1,该图为本申请实施例一提供的矩阵乘积转置的加速方法的流程图。
本申请实施例提供的矩阵乘积转置的加速方法,包括:
S101:第二处理器按行从第一处理器中获取第一矩阵A;所述第二处理器将所述A按行存储至第一存储单元;其中,所述A为m行且p列的矩阵。
第一处理器可以用于进行数据计算。例如,第一处理器可以是中央处理器(Central Processing Unit,CPU)。
第二处理器可以用于协助第一处理器进行数据计算。例如,第二处理器可以是现场可编程门阵列(Field-Programmable Gate Array,FPGA)。
第一存储单元可以集成在第二处理器上,也可以是独立于第二处理器。而且,第一存储单元可以为随机存取存储器(random access memory,RAM)。
S102:所述第二处理器按行从所述第一处理器中获取第二矩阵B;所述第二处理器将所述B按列存储至第二存储单元;其中,所述B为p行且n列的矩阵。
由于第一矩阵B是按列存储在第二存储单元的,因而,根据先入先出队列(FirstInput First Output,FIFO),当读取矩阵B时,可以从第二存储单元中按列读取矩阵B。
S103:所述第二处理器从所述第一存储单元中按行读取所述A。
由于第一矩阵A是按行存储在第一存储单元的,因而,根据FIFO,当读取矩阵A时,可以从第一存储单元中按行读取矩阵A。
当第二处理器从第一存储单元中按行读取A时,可以将A的每行数据分开进行保存,例如,将A的每行数据分别存储在第1行向量至第m行向量;也可以将A的所有数据保存在一起,并在不同行数据之间设置不同的分割符号,例如,在A的每行数据之间添加符号“;”,以便于根据符号“;”区分不同行的数据。
S104:所述第二处理器从所述第二存储单元中按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D;其中,所述D为n行且m列的矩阵。
D=(A×B)T=BT×AT,其中,D的第i行第j列的值可以根据的BT第i行和AT的第j列的乘积获得。由于BT第i行是B的第i列,且AT的第j列是A的第j行,因而,D的第i行第j列的值可以根据B的第i列和A的第j行的乘积获得。
另外,由于第二处理器可以从第二存储单元中直接按列读取B,无需通过将B进行转置获得B的每列的数据,因而,本申请可以加快了矩阵乘积转置(A×B)T的计算速度,进而进一步减少了矩阵乘积转置(A×B)T的计算对CPU造成的不良影响。
S105:所述第二处理器将所述D发送给所述第一处理器。
当第二处理器将所述D发送给第一处理器时,第一处理器才能利用所述D进行相应的操作,此时,第二处理器完成了协助第一处理器进行(A×B)T计算的,而且,第一处理器也得到了的(A×B)T计算结果。
本申请实施例提供的矩阵乘积转置的加速方法中,当第一处理器需要计算第一矩阵A和第二矩阵B的乘积转置(A×B)T时,第一处理器仅需将A和B传送给第二处理器,由第二处理器代替第一处理器进行(A×B)T的计算并将(A×B)T的计算结果反馈给第一处理器即可。如此,避免了计算(A×B)T时占用第一处理器的大量计算资源而导致的降低第一处理器的计算速度,使得第一处理器可以正常的处理其他任务。而且,在第二处理器中,通过对B进行按行输入并按列存储,使得B可以按列进行读取,实现了同时进行B的读取和转置。如此,与先读取B再转置的现有技术相比,该方法省略了将读取后的B再单独进行转置的过程,从而加快了矩阵乘积转置(A×B)T的计算速度,进而进一步减少了矩阵乘积转置(A×B)T的计算对CPU造成的不良影响。
为了进一步加快矩阵乘积转置(A×B)T的计算速度,本申请实施例还提供了矩阵乘积转置的加速方法的另一种实施方式,下面将结合附图进行解释和说明。
实施例二:
实施例二是在实施例一的基础上进行的改进,为了简要起见,实施例二与实施例一内容相同的部分,在此不再赘述。
参见图2,该图为本申请实施例二提供的矩阵乘积转置的加速方法的流程图。
本申请实施例提供的矩阵乘积转置的加速方法,包括:
S201:第二处理器进行参数配置,并获得第一参数配置信息;其中,所述第一参数配置信息,包括:所述第一处理器中第一预设存储位置的地址信息。
第二处理器和第一处理器需要进行通信,以便于实现数据的传输。第二处理器和第一处理器之间的通信可以采用多种方式,例如,所述第一处理器和所述第二处理器之间通过高速串行计算机扩展总线标准PCIe进行通信。
第一预设存储位置用于存储第一矩阵A和第一矩阵B,且第一预设存储位置位于第一处理器内。
当第二处理器进行参数配置后,第二处理器能够快速的锁定第一处理器中存储A或B的地址,避免了第二处理器根据A或B的相关信息,从第一处理器的存储空间中耗费很长时间进行查找,从而提高了第二处理器获取A或B的速度,进一步加快了矩阵乘积转置(A×B)T的计算速度。
另外,为了准确的获取A和B,第一处理器还可以进行数据搬移数目的参数配置,以便于第一处理器能够准确的获取A或B,避免了第一处理器多读或少读A或B。
S202:所述第二处理器进行读操作。
当第二处理器进行读操作时,第二处理器能够从外部将数据读入第二处理器的内部。
S203:根据所述第一参数配置信息,所述第二处理器按行从第一处理器中所述第一预设存储位置读取第一矩阵A;所述第二处理器将所述A按行存储至第一存储单元;其中,所述A为m行且p列的矩阵。
S203的内容与S101的内容相同,在此不再赘述。
S204:根据所述第一参数配置信息,所述第二处理器按行从所述第一处理器中所述第一预设存储位置读取第二矩阵B;所述第二处理器将所述B按列存储至第二存储单元;其中,所述B为p行且n列的矩阵。
参见图3,该图为本申请实施例提供的S204的一种实施方式的流程图。
作为一种实施方式,S204具体可以为:
S2041:所述第二处理器将所述B进行转置,获得第二矩阵的转置矩阵BT。
作为一种实施方式,S2041具体可以为:所述第二处理器将所述B中第i行第j列元素的原地址(i-1)×n+j转换为新地址(j-1)×p+i,获得第二矩阵的转置矩阵BT;其中,1≤i≤p,且1≤j≤n。
S2042:所述第二处理器将所述BT按行存储至第二存储单元;其中,所述BT为n行且p列的矩阵。
由于BT的第i行就是B的第i列,因而,BT按行存储至第二存储单元就是将B按列存储至第二存储单元。
S205:所述第二处理器从所述第一存储单元中按行读取所述A。
作为一种实施方式,S205可以具体为:所述第二处理器从所述第一存储单元中按行读取所述A,并依次保存于第1行向量至第m行向量。
S206:所述第二处理器从所述第二存储单元中按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D;其中,所述D为n行且m列的矩阵。
S206可以采用多种实施方式,下面将依次进行介绍。
参见图4,该图为本申请实施例提供的S206的一种实施方式的流程图。
作为一种实施方式,S206具体可以为:
S2061:第二处理器从所述第二存储单元中按列读取所述B,获得B的所有列的数据。
当第二处理器从第二存储单元中按列读取B时,可以将B的每列数据分开进列保存,例如,将B的每列数据分别存储在第1列向量至第n列向量;也可以将B的所有数据保存在二起,并在不同列数据之间设置不同的分割符号,例如,在B的每列数据之间添加符号“;”,以便于根据符号“;”区分不同列的数据。
S2062:根据B的第i列数据和A的第j行数据的乘积,获得D的第i行第j列的值,其中,1≤i≤n且1≤j≤m。
例如,当B的每列数据分别存储在第1列向量至第n列向量,且A的每行数据分别存储在第1行向量至第m行向量时,则S2062具体可以为:根据第i列向量和第j行向量的乘积,获得D的第i行第j列的值,其中,1≤i≤n且1≤j≤m。
另外,为了进一步加快矩阵乘积转置(A×B)T的计算速度,还可以是从第二存储单元中按列读取B的部分数据后,就开始根据B中已读取的数据和A进行乘积计算,下面将以读取B的1列数据后进行乘积计算为例进行具体的解释和说明。
作为另一种实施方式,S206具体可以为:首先,所述第二处理器从所述第二存储单元按列读取所述B的第t列,得到第t列向量;其中,1≤t≤n;然后,根据所述A和所述第t列向量,得到第三矩阵D的第t行数据。
为了便于解释和说明,下面将结合图5进行具体的解释和说明。
参见图5,该图为本申请实施例提供的S206的另一种实施方式的流程图。
S206具体可以为:
S206a:读取B的第1列数据;
S206b:根据B的第1列数据和A,得到D的第1行数据。
作为一种实施方式,S206b具体可以为:串行计算A的第1行数据与B的第1列数据的向量相乘、第2行数据与B的第1列数据的向量相乘、……、第m行数据与B的第1列数据的向量相乘,依次得到D的第1行中第1列至第m列数据。
作为另一种实施方式,S206b具体可以为:并行计算A的第1行数据与B的第1列数据的向量相乘、第2行数据与B的第1列数据的向量相乘、……、第m行数据与B的第1列数据的向量相乘,同时得到D的第1行中第1列至第m列数据。
由于该实施方式采用了并行处理的方式,缩短了获得D的第1行数据的时间,进而进一步加快了矩阵乘积转置(A×B)T的计算速度。
S206c:读取B的第2列数据;
S206d:根据B的第2列数据和A,得到D的第2行数据。
S206d的执行方法与S206b的执行方法相同,为了简要起见,在此不再赘述。
S206e:读取B的第3列数据;
S206f:根据B的第3列数据和A,得到D的第3行数据。
S206f的执行方法与S206b的执行方法相同,为了简要起见,在此不再赘述。
……
S206g:读取B的第n列数据;
S206h:根据B的第n列数据和A,得到D的第n行数据。
S206h的执行方法与S206b的执行方法相同,为了简要起见,在此不再赘述。
需要说明的是,在该实施方式中,是以采用读取B的1列数据后,就将根据该列数据和A进行乘积计算为例进行介绍的,但是,本申请并不仅限于读取1列数据,本申请还可以采用读取B的2列以上数据后,就将根据读取的数据和A进行乘积计算,而且计算方法与上述提供的方法相同,为了简要起见,在此不再赘述。
S207:所述第二处理器进行参数配置,并获得第二参数配置信息;其中,所述第二参数配置信息,包括所述第一处理器中第二预设存储位置的地址信息。
第二预设存储位置用于存储第三矩阵D,且第二预设位置位于第一处理器内。
当第二处理器进行参数配置后,第二处理器能够快速的锁定第一处理器中存储D的地址,以便于第二处理器快速而准确的将D写入第一处理器,从而进一步加快了第一处理器获得矩阵乘积转置(A×B)T的速度。
S208:所述第二处理器进行写操作。
当第二处理器进行写操作时,第二处理器能够将内部的数据写入第一处理器,也可以写入其他的外部结构。
S209:根据第二参数配置信息,所述第二处理器将所述D写入到所述第一处理器的第二预设存储位置。
作为一种实施方式,S209具体可以为:根据第二参数配置信息,所述第二处理器通过PCIe将所述D写入到所述第一处理器的第二预设存储位置。
需要说明的是,当第二处理器为FPGA时,本申请实施例提供的矩阵乘积转置的加速方法可以由PCIe和直接存储器访问DMA实现,其中,PCIe用于执行通信,并在S206获得D之后,接收D计算完成的信号,以便于第一处理器根据该信号进行写入前的参数设置;DMA用于进行参数配置、将A和B读入第二处理器并将D写入第一处理器。
本申请实施例提供的矩阵乘积转置的加速方法,通过更改第二处理器中缓存的B中元素的地址,实现将B按列存储至第二存储单元,以便于B可以按列进行读取,实现了同时进行B的读取和转置。如此,与先读取B再转置的现有技术相比,该方法省略了将读取后的B再单独进行转置的过程,从而加快了矩阵乘积转置D=(A×B)T的计算速度,进而进一步减少了矩阵乘积转置D=(A×B)T的计算对CPU造成的不良影响。另外,在根据A和B计算D=(A×B)T时,则通过在读取B的第i列数据后立即并行计算B的第i列数据与A的每行数据的乘积,同时得到D的第i行数据,如此,在该方法中计算D中一行数据所用时间与现有技术中计算D中一个元素所用时间相同,从而大幅度的缩短了D的计算时间,从而加快了矩阵乘积转置D=(A×B)T的计算速度,进而进一步减少了矩阵乘积转置D=(A×B)T的计算对CPU造成的不良影响。另外,该方法还通过在参数设置,使得第二处理器能够快速准确的从第一处理器中读取A和B,也能够快速准确的向第一处理器内写入D,从而进一步加快了第一处理器获得矩阵乘积转置(A×B)T的速度。
基于上述实施例提供的一种矩阵乘积转置的加速方法,本申请实施例还提供了一种矩阵乘积转置的加速装置,下面将结合附图进行解释和说明。
参见图6,该图为本申请实施例提供的矩阵乘积转置的加速装置的结构示意图。
本申请实施例提供的矩阵乘积转置的加速装置,包括:
第一获取模块601,用于按行从第一处理器中获取第一矩阵A;所述第二处理器将所述A按行存储至第一存储单元;其中,所述A为m行且p列的矩阵;
第二获取模块602,用于所述第二处理器按行从所述第一处理器中获取第二矩阵B;所述第二处理器将所述B按列存储至第二存储单元;其中,所述B为p行且n列的矩阵;
第一读取模块603,用于所述第二处理器从所述第一存储单元中按行读取所述A;
计算模块604,用于所述第二处理器从所述第二存储单元中按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D;其中,所述D为n行且m列的矩阵;
发送模块605,用于所述第二处理器将所述D发送给所述第一处理器。
可选的,所述第二获取模块602,具体包括:
第一转置子模块,用于所述第二处理器将所述B进行转置,获得第二矩阵的转置矩阵BT;
第二存储子模块,用于所述第二处理器将所述BT按行存储至第二存储单元;其中,所述BT为n行且p列的矩阵。
可选的,所述第一转置子模块,具体包括:
所述第二处理器将所述B中第i行第j列元素的原地址(i-1)×n+j转换为新地址(j-1)×p+i,获得第二矩阵的转置矩阵BT;其中,1≤i≤p,且1≤j≤n。
可选的,第一读取模块603,具体包括:
所述第二处理器从所述第一存储单元中按行读取所述A,并依次保存于第1行向量至第m行向量;
所述第一计算模块604,具体包括:
第一读取子模块,用于所述第二处理器从所述第二存储单元按列读取所述B的第t列,得到第t列向量;其中,1≤t≤n;
第一得到子模块,用于根据所述A和所述第t列向量,得到第三矩阵D的第t行数据。
可选的,所述第一得到子模块,具体包括:
并行将所述A的每行数据分别与所述t列向量进行向量相乘,分别得到第三矩阵D的第t行数据中的第1列至第m列。
可选的,所述矩阵乘积转置的加速装置,还包括:
第一配置模块,用于进行参数配置,并获得第一参数配置信息;其中,所述第一参数配置信息,包括:所述第一处理器中第一预设存储位置的地址信息;
第一使能模块,用于进行读操作;
所述第一获取模块601,具体包括:
根据所述第一参数配置信息,所述按行从第一处理器中所述第一预设存储位置读取第一矩阵A。
可选的,所述矩阵乘积转置的加速装置,还包括:
第二配置模块,用于进行参数配置,并获得第二参数配置信息;其中,所述第二参数配置信息,包括所述第一处理器中第二预设存储位置的地址信息;
第二使能模块,用于进行写操作;
发送模块605,具体包括:
根据第二参数配置信息,将所述D写入到所述第一处理器的第二预设存储位置。
本申请提供的矩阵乘积转置的加速装置中,当第一处理器需要计算第一矩阵A和第二矩阵B的乘积转置(A×B)T时,第一处理器仅需将A和B传送给加速装置,由加速装置代替第一处理器进行(A×B)T的计算并将(A×B)T的计算结果反馈给第一处理器。如此,避免计算(A×B)T时占用第一处理器的大量的计算资源,导致第一处理器的计算速度降低,以便于第一处理器可以正常的处理其他任务。而且,在加速装置中,通过对B进行按行输入并按列存储,使得B可以按列进行读取,实现了同时进行B的读取和转置。如此,与先读取B再转置的现有技术相比,该方法省略了将读取后的B再单独进行转置的过程,从而加快了矩阵乘积转置(A×B)T的计算速度,进而进一步减少了矩阵乘积转置(A×B)T的计算对CPU造成的不良影响。
基于上述实施例提供的一种矩阵乘积转置的加速方法以及一种矩阵乘积转置的加速装置,本申请实施例还提供了一种处理器,下面将结合附图进行解释和说明。
实施例四:
本申请实施例提供的处理器,包括:矩阵乘积转置的加速装置,而且,所述矩阵乘积转置的加速装置可以是上述实施例提供的任一种矩阵乘积转置的加速装置。
本申请提供的处理器可以作为协助第一处理器进行计算的第二处理器,当第一处理器需要计算第一矩阵A和第二矩阵B的乘积转置(A×B)T时,第一处理器仅需将A和B传送给第二处理器,由第二处理器代替第一处理器进行(A×B)T的计算并将(A×B)T的计算结果反馈给第一处理器。如此,避免计算(A×B)T时占用第一处理器的大量的计算资源,导致第一处理器的计算速度降低,以便于第一处理器可以正常的处理其他任务。而且,在第二处理器中,通过对B进行按行输入并按列存储,使得B可以按列进行读取,实现了同时进行B的读取和转置。如此,与先读取B再转置的现有技术相比,该方法省略了将读取后的B再单独进行转置的过程,从而加快了矩阵乘积转置(A×B)T的计算速度,进而进一步减少了矩阵乘积转置(A×B)T的计算对CPU造成的不良影响。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (10)
1.一种矩阵乘积转置的加速方法,其特征在于,包括:
第二处理器按行从第一处理器中获取第一矩阵A;所述第二处理器将所述A按行存储至第一存储单元;其中,所述A为m行且p列的矩阵;
所述第二处理器按行从所述第一处理器中获取第二矩阵B;所述第二处理器将所述B按列存储至第二存储单元;其中,所述B为p行且n列的矩阵;
所述第二处理器从所述第一存储单元中按行读取所述A;
所述第二处理器从所述第二存储单元中按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D;其中,所述D为n行且m列的矩阵;
所述第二处理器将所述D发送给所述第一处理器;
所述第二处理器将所述B按列存储至第二存储单元,具体包括:
所述第二处理器将所述B进行转置,获得第二矩阵的转置矩阵BT;所述第二处理器将所述BT按行存储至第二存储单元;其中,所述BT为n行且p列的矩阵。
2.根据权利要求1所述的矩阵乘积转置的加速方法,其特征在于,所述第二处理器将所述B进行转置,获得第二矩阵的转置矩阵BT,具体包括:
所述第二处理器将所述B中第i行第j列元素的原地址(i-1)×n+j转换为新地址(j-1)×p+i,获得第二矩阵的转置矩阵BT;其中,1≤i≤p,且1≤j≤n。
3.根据权利要求1所述的矩阵乘积转置的加速方法,其特征在于,所述第二处理器从所述第一存储单元按行读取所述A,具体包括:
所述第二处理器从所述第一存储单元中按行读取所述A,并依次保存于第1行向量至第m行向量;
所述第二处理器从所述第二存储单元按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D,具体包括:
所述第二处理器从所述第二存储单元按列读取所述B的第t列,得到第t列向量;其中,1≤t≤n;
根据所述A和所述第t列向量,得到第三矩阵D的第t行数据。
4.根据权利要求3所述的矩阵乘积转置的加速方法,其特征在于,所述根据所述A和所述第t列向量,得到第三矩阵D的第t行数据,具体包括:
并行将所述A的每行数据分别与所述t列向量进行向量相乘,分别得到第三矩阵D的第t行数据中的第1列至第m列。
5.根据权利要求1所述的矩阵乘积转置的加速方法,其特征在于,所述第二处理器按行从第一处理器中获取第一矩阵A之前,还包括:
第二处理器进行参数配置,并获得第一参数配置信息;其中,所述第一参数配置信息,包括:所述第一处理器中第一预设存储位置的地址信息;
所述第二处理器进行读操作;
所述第二处理器按行接收第一处理器发送的第一矩阵A,具体包括:
根据所述第一参数配置信息,所述第二处理器按行从第一处理器中所述第一预设存储位置读取第一矩阵A。
6.根据权利要求5所述的矩阵乘积转置的加速方法,其特征在于,所述获得所述A和所述B的乘积转置结果第三矩阵D之后,所述第二处理器将所述D发送给所述第一处理器之前,还包括:
所述第二处理器进行参数配置,并获得第二参数配置信息;其中,所述第二参数配置信息,包括所述第一处理器中第二预设存储位置的地址信息;
所述第二处理器进行写操作;
所述第二处理器将所述D发送给所述第一处理器,具体包括:
根据第二参数配置信息,所述第二处理器将所述D写入到所述第一处理器的第二预设存储位置。
7.根据权利要求1所述的矩阵乘积转置的加速方法,其特征在于,所述第一处理器和所述第二处理器之间通过高速串行计算机扩展总线标准PCIe进行通信。
8.一种矩阵乘积转置的加速装置,其特征在于,包括:
第一获取模块,用于按行从第一处理器中获取第一矩阵A;将所述A按行存储至第一存储单元;其中,所述A为m行且p列的矩阵;
第二获取模块,用于按行从所述第一处理器中获取第二矩阵B;将所述B按列存储至第二存储单元;其中,所述B为p行且n列的矩阵;
第一读取模块,用于从所述第一存储单元中按行读取所述A;
计算模块,用于从所述第二存储单元中按列读取所述B,并对所述A和所述B进行乘积转置计算,获得所述A和所述B的乘积转置结果第三矩阵D;其中,所述D为n行且m列的矩阵;
发送模块,用于将所述D发送给所述第一处理器;
所述第二获取模块,具体包括:
第一转置子模块,用于第二处理器将所述B进行转置,获得第二矩阵的转置矩阵BT;
第二存储子模块,用于所述第二处理器将所述BT按行存储至第二存储单元;其中,所述BT为n行且p列的矩阵。
9.根据权利要求8所述的装置,其特征在于,所述第一读取模块,具体包括:
从所述第一存储单元中按行读取所述A,并依次保存于第1行向量至第m行向量;
所述计算模块,具体包括:
第一读取子模块,用于从所述第二存储单元按列读取所述B的第t列,得到第t列向量;其中,1≤t≤n;
计算子模块,用于根据所述A和所述第t列向量,得到第三矩阵D的第t行数据。
10.一种处理器,其特征在于,包括:权利要求8-9任一项所述的矩阵乘积转置的加速装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811376485.9A CN109522125B (zh) | 2018-11-19 | 2018-11-19 | 一种矩阵乘积转置的加速方法、装置及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811376485.9A CN109522125B (zh) | 2018-11-19 | 2018-11-19 | 一种矩阵乘积转置的加速方法、装置及处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522125A CN109522125A (zh) | 2019-03-26 |
CN109522125B true CN109522125B (zh) | 2021-12-03 |
Family
ID=65778192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811376485.9A Active CN109522125B (zh) | 2018-11-19 | 2018-11-19 | 一种矩阵乘积转置的加速方法、装置及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522125B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114327244A (zh) * | 2020-09-30 | 2022-04-12 | 华为技术有限公司 | 数据迁移的方法、装置、处理器和计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010085125A2 (ko) * | 2009-01-22 | 2010-07-29 | 삼성전자 주식회사 | 영상의 변환 방법 및 장치, 역변환 방법 및 장치 |
CN102446160A (zh) * | 2011-09-06 | 2012-05-09 | 中国人民解放军国防科学技术大学 | 面向双精度simd部件的矩阵乘实现方法 |
CN106445471A (zh) * | 2016-10-13 | 2017-02-22 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
-
2018
- 2018-11-19 CN CN201811376485.9A patent/CN109522125B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010085125A2 (ko) * | 2009-01-22 | 2010-07-29 | 삼성전자 주식회사 | 영상의 변환 방법 및 장치, 역변환 방법 및 장치 |
CN102446160A (zh) * | 2011-09-06 | 2012-05-09 | 中国人民解放军国防科学技术大学 | 面向双精度simd部件的矩阵乘实现方法 |
CN106445471A (zh) * | 2016-10-13 | 2017-02-22 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109522125A (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108416422B (zh) | 一种基于fpga的卷积神经网络实现方法及装置 | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
EP3451162B1 (en) | Device and method for use in executing matrix multiplication operations | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN107392309A (zh) | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 | |
EP3451239A1 (en) | Apparatus and method for executing recurrent neural network and lstm computations | |
CN103955446B (zh) | 基于dsp芯片的可变长度fft计算方法 | |
US11481994B2 (en) | Method and apparatus for extracting image data in parallel from multiple convolution windows, device, and computer-readable storage medium | |
CN109522125B (zh) | 一种矩阵乘积转置的加速方法、装置及处理器 | |
WO2020103883A1 (zh) | 执行矩阵乘法运算的方法、电路及soc | |
CN110515872B (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算系统 | |
CN109446478A (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
CN116431562B (zh) | 一种基于加速处理器的多头注意力机制融合计算分配方法 | |
CN116521096B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN116578245B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
JP2021128752A (ja) | インメモリコンピューティングに対するデータ配置のための方法及びその方法が適用されたメモリモジュール | |
CN111078589B (zh) | 一种应用于深度学习计算的数据读取系统、方法及芯片 | |
EP4180996A1 (en) | Matrix operation method and accelerator | |
KR102606207B1 (ko) | 매트릭스 수학 명령어 세트에 대한 타일링 알고리즘 | |
Zhang et al. | Yolov3-tiny Object Detection SoC Based on FPGA Platform | |
CN111932436B (zh) | 一种用于智慧泊车的深度学习处理器架构 | |
CN111507178B (zh) | 数据处理的优化方法及装置、存储介质、计算机设备 | |
CN112230884B (zh) | 目标检测硬件加速器及加速方法 | |
CN111831405B (zh) | 一种数据处理方法、逻辑芯片及其设备 | |
JPS6155706B2 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |