CN115878957B - 一种矩阵乘法加速装置及方法 - Google Patents
一种矩阵乘法加速装置及方法 Download PDFInfo
- Publication number
- CN115878957B CN115878957B CN202211710549.0A CN202211710549A CN115878957B CN 115878957 B CN115878957 B CN 115878957B CN 202211710549 A CN202211710549 A CN 202211710549A CN 115878957 B CN115878957 B CN 115878957B
- Authority
- CN
- China
- Prior art keywords
- matrix
- calculation
- transformation
- unit
- multiplication
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本申请公开了一种矩阵乘法加速装置及方法,装置包括由第一控制开关、矩阵乘法单元及第二控制开关依次连接所形成第一计算路径;以及由第一控制开关通过并行的左矩阵变换单元和右矩阵变换单元与矩阵乘法单元相连接,矩阵乘法单元通过第二控制开关与输出变换相连接所形成第二计算路径,第一计算路径用于直接进行矩阵计算,第二计算路径用于采用预设计算方式进行矩阵计算。本申请通过设置两路计算路径,可以根据矩阵乘法的计算方式对两路计算路径进行灵活切换,这样可以根据矩阵乘法的实际尺寸和部署神经网络模型的嵌入设备确定矩阵乘法自由切换矩阵乘法所采用的计算路径,提高了矩阵乘法加速器的灵活性。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种矩阵乘法加速装置及方法。
背景技术
在深度神经网络的推理过程中,矩阵乘法是一个主要的运算类型,并且其他常见的算子类型也可以转换位矩阵乘法,例如,卷积运算,其可以通过Img2col变换转换为矩阵乘法。从而矩阵乘法往往成为限制神经网络性能的瓶颈所在。
采用加速器辅助运算是当前常用的一种加速方式。现有的加速方式有完全舍弃矩阵乘法的方式和关闭部分乘累加树的方式;完全舍弃矩阵乘法的方式虽然可避免矩阵乘法的限制,但是需要设计专用的加法网络算法,无法部分现有的神经网络结构。关闭部分乘累加树的方式虽然在一定程度上节约了矩阵乘法的功耗,但是会降低矩阵乘法的处理速度,进而影响神经网络的处理速度。
因而现有技术还有待改进和提高。
发明内容
本申请要解决的技术问题在于,针对现有技术的不足,提供一种矩阵乘法加速装置及方法,加速装置通过配置第一计算路径和第二计算路径,通过第一计算路径和第二计算路径可以直接进行矩阵计算也可以采用的低功耗方式进行矩阵计算,提高了矩阵乘法的灵活性,可以兼顾计算性能和计算功耗。
为了解决上述技术问题,本申请实施例第一方面提供了一种矩阵乘法加速装置,所述的装置包括:第一控制开关、左矩阵变换单元、右矩阵变换单元、矩阵乘法单元、第二控制开关以及输出矩阵变换单元;其中,所述第一控制开关、矩阵乘法单元以及第二控制开关依次连接形成第一计算路径;第一控制开关通过并行的左矩阵变换单元和右矩阵变换单元与矩阵乘法单元相连接,所述矩阵乘法单元通过第二控制开关与输出变换相连接以形成第二计算路径,所述第一计算路径用于直接进行矩阵乘法计算,所述第二计算路径用于采用预设计算方式进行矩阵乘法计算。
所述矩阵乘法加速装置,其中,所述预设计算方式包括Strassen算法方式和/或Winograd算法方式。
所述矩阵乘法加速装置,其中,所述左矩阵变换单元用于读取所述预设计算方式对应的左变换矩阵,并通过所述左变换矩阵对左矩阵进行矩阵变换,右矩阵变换单元用于读取所述预设计算方式对应的右变换矩阵,并通过所述右变换矩阵对右矩阵进行矩阵变换。
所述矩阵乘法加速装置,其中,所述左矩阵变换单元、所述右矩阵变换单元及所述输出矩阵变换单元均通过加法计算和移位计算进行矩阵变换。
所述矩阵乘法加速装置,其中,所述第一控制开关的工作状态与所述第二控制开关的工作状态相同,其中,当第一控制开关处于与左矩阵变换单元和右矩阵变换单元相连通状态时,第二控制开关处于与输出矩阵变换单元相连通状态。
所述矩阵乘法加速装置,其中,所述第一控制开关和所述第二控制开关的工作状态均为基于矩阵乘法加速装置接收到的矩阵乘法对应的矩阵计算方式确定的。
本申请实施例第二方面提供了一种矩阵乘法加速方法,所述方法应用如上所述的矩阵乘法加速装置,所述方法包括:
获取待进行矩阵乘法的左矩阵和右矩阵以及矩阵计算方式;
根据所述矩阵计算方式配置所述第一控制开关和所述第二控制开关的工作状态,以启动所述矩阵计算模式对应的目标计算路径,其中,所述目标计算路径为第一计算路径或第二计算路径;
通过所述目标计算路径对所述左矩阵和右矩阵进行矩阵计算,以得到输出矩阵。
所述矩阵乘法加速方法,其中,所述通过所述目标计算路径对所述左矩阵和右矩阵进行矩阵计算,以得到输出矩阵具体包括:
当矩阵计算方式为直接计算方式时,通过第一计算路径对所述左矩阵和右矩阵进行矩阵计算,其中,所述第一计算路径的计算过程为:通过第一控制开关将左矩阵和右矩阵输入矩阵乘法单元,通过矩阵乘法单元计算得到输出矩阵;
当矩阵计算方式为预设计算方式时,通过第二计算路径对所述左矩阵和右矩阵进行矩阵计算,其中,所述第二计算路径的计算过程为:将左矩阵输入左矩阵变换单元以得到左变换矩阵,将右矩阵输入右矩阵变换单元以得到右变换矩阵;将左变换矩阵和右变换矩阵经过矩阵乘法单元进行计算后输入输出变换矩阵单元,通过输出矩阵变换单元转换得到输出矩阵。
本申请实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的矩阵乘法加速方法中的步骤。
本申请实施例第四方面提供了一种嵌入设备,其特征在于,所述嵌入设备配置有如上所述的矩阵乘法加速装置。
有益效果:与现有技术相比,本申请提供了一种矩阵乘法加速装置及方法,所述的装置包括:第一控制开关、左矩阵变换单元、右矩阵变换单元、矩阵乘法单元、第二控制开关以及输出矩阵变换单元;其中,所述第一控制开关、矩阵乘法单元以及第二控制开关依次连接形成第一计算路径;第一控制开关通过并行的左矩阵变换单元和右矩阵变换单元与矩阵乘法单元相连接,所述矩阵乘法单元通过第二控制开关与输出变换相连接以形成第二计算路径,所述第一计算路径用于直接进行矩阵乘法计算,所述第二计算路径用于采用预设计算方式进行矩阵乘法计算。本申请通过设置两路计算路径,可以根据矩阵乘法的计算方式对两路计算路径进行灵活切换,这样可以根据矩阵乘法的实际尺寸和部署神经网络模型的嵌入设备确定矩阵乘法的计算方法,然后根据计算方式自由切换矩阵乘法所采用的计算路径,这样可以根据待计算矩阵的矩阵尺寸灵活选取其对应的计算方法,兼顾了计算性能和计算功耗,提高了矩阵乘法加速器的灵活性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的结构原理图。
图1为本申请提供的矩阵乘法加速装置的流程图。
图2为本申请提供的矩阵乘法加速方法的流程图。
具体实施方式
本申请提供一种矩阵乘法加速装置及方法,为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
经过研究发现,在深度神经网络的推理过程中,矩阵乘法是一个主要的运算类型,并且其他常见的算子类型也可以转换位矩阵乘法,例如,卷积运算,其可以通过Img2col变换转换位矩阵乘法。从而矩阵乘法往往成为限制神经网络性能的瓶颈所在。
采用加速器辅助运算是当前常用的一种加速方式,其中,常见的加速器有完全舍弃矩阵乘法的方式和关闭部分乘累加树的方式;完全舍弃矩阵乘法的方式虽然可避免矩阵乘法的限制,但是需要设计专用的加法网络算法,无法部分现有的神经网络结构。关闭部分乘累加树的方式虽然在一定程度上节约了矩阵乘法的功耗,但是会降低矩阵乘法的处理速度,进而影响神经网络的处理速度。
为了解决上述问题,在本申请实施例提高了一种矩阵乘法加速装置,所述装置包括第一控制开关、左矩阵变换单元、右矩阵变换单元、矩阵乘法单元、第二控制开关以及输出矩阵变换单元;其中,所述第一控制开关、矩阵乘法单元以及第二控制开关依次连接形成第一计算路径;第一控制开关通过并行的左矩阵变换单元和右矩阵变换单元与矩阵乘法单元相连接,所述矩阵乘法单元通过第二控制开关与输出变换相连接以形成第二计算路径,所述第一计算路径用于直接进行矩阵乘法计算,所述第二计算路径用于采用预设计算方式进行矩阵乘法计算。本申请通过设置两路计算路径,可以根据矩阵乘法的计算方式对两路计算路径进行灵活切换,这样可以根据矩阵乘法的实际尺寸和部署神经网络模型的嵌入设备确定矩阵乘法的计算方法,然后根据计算方式自由切换矩阵乘法所采用的计算路径,提高了矩阵乘法加速器的灵活性。由此,本实施例提供的矩阵乘法加速器可以适用不同矩阵乘法尺寸的深度神经网络,可以根据深度神经网络中的矩阵乘法的矩阵实际尺寸来动态控制矩阵乘法的计算模型,即可以选择直接进行矩阵计算,也可以采用Strassen算法或Winograd算法计算,兼顾了计算性能和计算功耗。
下面结合附图,通过对实施例的描述,对申请内容作进一步说明。
本实施例提供了一种矩阵乘法加速装置,如图1所示,所述装置包括:第一控制开关、左矩阵变换单元、右矩阵变换单元、矩阵乘法单元、第二控制开关以及输出矩阵变换单元;左矩阵变换单元和右矩阵变换单元并联于第一控制快关和矩阵乘法单元之间,第二控制开关位于矩阵乘法单元和输出矩阵变换单元之间,其中,当第一控制开关处于未与左矩阵变换单元和右矩阵变换单元连通,第二控制开关处于未与矩阵变换单元连通时,第一控制开关、矩阵乘法单元以及第二控制开关形成第一计算路径。反之,当第一控制开关处于与左矩阵变换单元和右矩阵变换单元连通,第二控制开关处于与矩阵变换单元连通时,第一控制开关、左矩阵变换单元、右矩阵变换单元、矩阵乘法单元、第二控制开关以及输出矩阵变换单元形成第二计算路径。第一计算路径用于通过矩阵计算单元直接进行矩阵乘法,使得本实施例提供的加速装置可以适用于高性能要求的场景,第二计算路径用于通过左矩阵变换单元和右矩阵变换单元对待进行矩阵乘法的左矩阵和右矩阵进行矩阵变换,以减少矩阵计算过程中的乘法使用次数,从而可以降低矩阵乘法的功耗,使得本实施例提供的加速装置可以适用于低功耗要求的场景,提高了加速装置的灵活性,使得加速装置兼顾了性能和效率,对上层软件提供了更多的灵活性。
进一步,第一控制开关和第二控制开关用于切换第一计算路径和第二计算路径,其中,第一控制开关与左矩阵变换单元的连接状态、第一控制开关与右矩阵变换单元的连接状态以及第二控制开关与输出矩阵变换单元的连接状态相同。换句话说,当第一控制开关与左矩阵变换单元处于连接状态时,第一控制开关与右矩阵变换单元也处于连接状态,第二控制开关与输出矩阵变换单元也处于连接状态,本实施例提供的加速装置启动第二计算路径;反之,当第一控制开关与左矩阵变换单元处于未连接状态时,第一控制开关与右矩阵变换单元也处于未连接状态,第二控制开关与输出矩阵变换单元也处于未连接状态,本实施例提供的加速装置启动第一计算路径。
在一个实现方式中,所述第一控制开关和所述第二控制开关的工作状态均为基于矩阵乘法加速装置接收到的矩阵乘法对应的矩阵计算方式确定的。也就是说,在本实施例提供的加速装置进行矩阵乘法时,会有先确定矩阵乘法对应的矩阵计算方式,其中,矩阵计算方式包括直接进行矩阵计算和采用预设计算方式进行矩阵计算。在实际应用中,在基于矩阵乘法加速装置接收到的矩阵乘法对应的矩阵计算方式确定时,可以上层设备可以基于矩阵计算方式产生用于控制第一控制开关和第二控制开关的控制指令,并通过控制指令切换工作状态,以控制本实施例提供的加速装置处于第一计算路径和第二计算路径,当处于第一计算路径时,控制数据直接进入矩阵乘法单元,经过矩阵乘法单元后直接输出;当处于第二计算路径时,控制数据中的左矩阵进入左矩阵变换单元,右矩阵进入右矩阵变换单元,通过左矩阵变换单元和右矩阵变换单元后的数据进入矩阵乘法单元,经过矩阵乘法单元后进入输出矩阵变换单元,通过输出矩阵变换单元进行矩阵变换后输出。
所述左矩阵变换单元用于读取所述预设计算方式对应的左变换矩阵,并通过所述左变换矩阵对左矩阵进行矩阵变换,右矩阵变换单元用于读取所述预设计算方式对应的右变换矩阵,并通过所述右变换矩阵对右矩阵进行矩阵变换。其中,所述左矩阵变换单元、所述右矩阵变换单元及所述输出矩阵变换单元均通过加法计算和移位计算进行矩阵变换。这是由于加法计算和位移计算先对于矩阵乘法计算而言,其功耗和面积开销均小于矩阵乘法,通过采用加法计算和移位计算的矩阵变换单元进行矩阵变换,将矩阵乘法中过的部分乘法转换为加法计算和位移计算,以减少需矩阵乘法单元执行的乘法数量,进而可以降低矩阵乘法计算的功耗。
进一步,预设计算方式对应的左变换矩阵、右变换矩阵和输出变换矩阵可以预先获取并存储在存储设备内,当需要获取左变换矩阵、右变换矩阵和输出变换矩阵时,直接从而存储设备中读取。此外,存储设备内可以预先存储多组变换矩阵,每组变换矩阵组均包括左变换矩阵、右变换矩阵和输出变换矩阵组,并且每组变换矩阵组均配置有计算方式和矩阵尺寸,在读取变换矩阵组时,可以通过计算方式和矩阵尺寸在多组变换矩阵组中选取所需要的变换矩阵组。
在一个实现方式中,预设计算方式可以为Strassen算法方式、Winograd算法方式,以及Strassen算法方式和Winograd算法方式,也就是说,第二计算路径可以仅用于Strassen算法方式的矩阵计算,第二计算路径可以仅用于Winograd算法方式的矩阵计算,或者第二计算路径既可以用于Strassen算法方式的矩阵计算,可以用于Winograd算法方式的矩阵计算。换句话说,存储设备中可以仅存储有Winograd算法方式对应的变换矩阵组,也可以仅存储有Strassen算法方式对应的变换矩阵组,还可以同时存储有Winograd算法方式对应的变换矩阵组和Strassen算法方式对应的变换矩阵组。此外,值得说明的是,预设计算方式还可以采用其他用于加速乘法矩阵的算法方法,只要该算法方式可以通过对数据进行矩阵变换,通过加法计算和位移计算替换部分乘法计算即可。本实施例预先设置了Strassen算法方式和Winograd算法方式的不同矩阵尺寸对应的变换矩阵,上层控制设备可以根据待计算矩阵的矩阵尺寸来确定所采用的矩阵计算方式,然后通过所采用过的矩阵计算方式控制加速装置启动相应的计算路径,这样使得加速装置可以使用不同矩阵尺寸的矩阵计算,从而提高了加速装置的灵活性。
对于矩阵A和矩阵B相乘得到矩阵C的正常过程为:
其中
矩阵C可以通过下列公式求出:
C11=A11·B1z+A12·B21
C12=A11·B12+A22·B21
C21=A21·B11+A22·B21
C22=A21·B12+A22·B22
对于上述矩阵A和矩阵B相乘得到矩阵C的过程,Strassen算法方式的计算示例为:
第一步计算:
S1=B12-B22
S2=A11+A12
S3=A21+A22
S4=B21-B11
S5=A11+A22
S6=B11+B22
S7=A12-A22
S8=B21+B22
S9=A11-A21
S10=B11+B12
第二步计算:
P1=A11·S1=A11·B12-A11·B22
P2=S2·B22=A11·B22+A12·B22
P3=S3·B11=A21·B11+A22·B11
P4=A22·S4=A22·B21-A22·Bu
P5=S5·S6=A11·B11+A11·B22+A22·B11+A22·B22
P6=S7·S8=A12·B21+A12·B22-A22·B21-A22·B22
P7=S9·S10=A11·B11+A11·B12-A21·B11-A21·B12
第三步计算:
C11=P5+P4-P2+P6
C12=P1+P2
C21=P3+P4
C22=P5+P1-P3-P7
由上述计算过程可知,第一步、第二步和第三步可以表示为:
由此,可以将矩阵E、矩阵G和矩阵D作为一变换矩阵组,当预设计算方式为Strassen算法方式,矩阵维度为2*2时,可以直接读取将矩阵E、矩阵G和矩阵D构成的变换矩阵组。
此外,由上述Strassen算法方式计算过程可以得知,对于2*2矩阵乘法,Strassen算法方式将矩阵乘法中的乘法个数由8次变换7次。那么,对于一个N*N矩阵和另一个N*N矩阵相乘的矩阵乘法计算,直接进行矩阵乘法的时间复杂度为:Θ(N3),通过Strassen算法方式的时间复杂度为那么,对于更高维度的矩阵乘法,Strassen算法可显著降低乘法的次数,其中,维度与算法次数如表1所示。
表1维度与算法次数对应关系
对于2*3的矩阵和3*1矩阵相乘的过程可描述为:
对于上述2*3的矩阵和3*1矩阵相乘,通过Winograd算法方式可以表示为:
由此,可以将矩阵K、矩阵L和矩阵O作为一变换矩阵组,当预设计算方式为Winograd算法方式,矩阵维度为2*3矩阵与3*1矩阵时,可以直接读取将矩阵K、矩阵K和矩阵O构成的变换矩阵组。
此外,由上述Winograd算法方式计算过程可以得知,Winograd算法方式将矩阵乘法中的乘法个数由6次变换4次。
又如,对一个矩阵大小为4x4的输入,卷积核大小为3x3,对应的输出为2x2,正常计算的情况下,使用im2col加速方法的乘法次数为2x2x3x3=36次,而当使用Winograd算法方式时,对应的乘法次数为(2+3-1)x(2+3-1)=16,可以看到乘法次数明显减少,加速效果明显。此外,由于Winograd算法方式的变换矩阵组可以看出,Winograd算法方式使用了位移计算,位移计算的消耗相对于乘法的消耗也减少了消耗,从而Winograd算法方式可以减少矩阵乘法的消耗。
在一个实现方式中,矩阵乘法单元采用乘法累加树的结构,通过乘法累加树直接进行矩阵计算,或者通过乘法累加树对矩阵变换后的矩阵进行矩阵计算。其中,乘法累加树的结构可以采用MAC阵列或者脉动阵列的矩阵乘计算单元等。
此外,为了进一步说明本实施例提供的矩阵乘法加速装置,下面给出以2*2*2的矩阵乘法采用Strassen算法方式为例进行说明。
首先,根据Strassen算法方式控制第一控制开关连通左矩阵变换单元和右矩阵变换单元,第二控制开关连通输出矩阵变换单元;并根据Strassen算法方式以及矩阵维度2*2*2,读取变换矩阵组,其中,左矩阵变换单元加载矩阵G,右矩阵变换单元加载矩阵D,输出矩阵变换单元加载矩阵E,G、D和E分别为:
其次,左矩阵变换单元基于矩阵G对左矩阵进行变换,右矩阵变换单元基于矩阵D对左矩阵进行变换,其中,左矩阵变换和右矩阵变换分别为:
再次,矩阵乘法单元对变换后的左矩阵和右矩阵进行点乘,其中,点乘过程为:
P1=A11·S1=A11·B12-A11·B22
P2=S2·B22=A11·B22+A12·B22
P3=S3·B11=A21·B11+A22·B11
P4=A22·S4=A22·B21-A22·B11
P5=S5·S6=A11·B11+A11·B22+A22·B11+A22·B22
P6=S7·S8=A12·B21+A12·B22-A22·B21-A22·B22
P7=S9·S10=A11·B11+A11·B12-A21·B11-A21·B12
最后,输出变换矩阵对点乘后得到的点乘矩阵进行矩阵变换,得到计算结果,计算结果为:
综上所述,本实施例提供了一种矩阵乘法加速装置,所述的装置包括:第一控制开关、左矩阵变换单元、右矩阵变换单元、矩阵乘法单元、第二控制开关以及输出矩阵变换单元;其中,所述第一控制开关、矩阵乘法单元以及第二控制开关依次连接形成第一计算路径;第一控制开关通过并行的左矩阵变换单元和右矩阵变换单元与矩阵乘法单元相连接,所述矩阵乘法单元通过第二控制开关与输出变换相连接以形成第二计算路径,所述第一计算路径用于直接进行矩阵乘法计算,所述第二计算路径用于采用预设计算方式进行矩阵乘法计算。本申请通过设置两路计算路径,可以根据矩阵乘法的计算方式对两路计算路径进行灵活切换,这样可以根据矩阵乘法的实际尺寸和部署神经网络模型的嵌入设备确定矩阵乘法的计算方法,然后根据计算方式自由切换矩阵乘法所采用的计算路径,提高了矩阵乘法加速器的灵活性。
基于上述矩阵乘法加速装置,本实施例提供了一种矩阵乘法加速方法,所述方法应用上述实施例所述的矩阵乘法加速装置,如图2所示,所述方法包括:
S10、获取待进行矩阵乘法的左矩阵和右矩阵以及矩阵计算方式,其中,所述矩阵计算方式根据所述左矩阵和所述右矩阵的矩阵尺寸确定的;
S20、根据所述矩阵计算方式配置所述第一控制开关和所述第二控制开关的工作状态,以启动所述矩阵计算模式对应的目标计算路径,其中,所述目标计算路径为第一计算路径或第二计算路径;
S30、通过所述目标计算路径对所述左矩阵和右矩阵进行矩阵计算,以得到输出矩阵。
在一个实现方式中,所述通过所述目标计算路径对所述左矩阵和右矩阵进行矩阵计算,以得到输出矩阵具体包括:
当矩阵计算方式为直接计算方式时,通过第一计算路径对所述左矩阵和右矩阵进行矩阵计算,其中,所述第一计算路径的计算过程为:通过第一控制开关将左矩阵和右矩阵输入矩阵乘法单元,通过矩阵乘法单元计算得到输出矩阵;
当矩阵计算方式为预设计算方式时,通过第二计算路径对所述左矩阵和右矩阵进行矩阵计算,其中,所述第二计算路径的计算过程为:将左矩阵输入左矩阵变换单元以得到左变换矩阵,将右矩阵输入右矩阵变换单元以得到右变换矩阵;将左变换矩阵和右变换矩阵经过矩阵乘法单元进行计算后输入输出变换矩阵单元,通过输出矩阵变换单元转换得到输出矩阵。
本实施例提供的加速方法通过采用上述实施例的加速装置,在进行矩阵乘法时,可以根据矩阵乘法的矩阵尺寸确定矩阵乘法的矩阵计算方式(例如,对于N*N矩阵乘法可以采用Strassen算法方式等),以实现了矩阵乘法的计算方式的灵活切换,使得加速方法兼顾了计算性能和计算功耗,为上层软件提供了更多的灵活性。
基于上述矩阵乘法加速方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的矩阵乘法加速方法中的步骤。
基于上述矩阵乘法加速方法,本申请还提供了一种嵌入式设备,所述嵌入式设备配置如上所述的矩阵乘法的加速装置。
此外,上述方法由上述装置所执行,方法的执行过程已经在装置中对各单元模块的说明中进行经详细说明,在这里不再一一陈述;上述存储介质以及终端设备中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里也不再一一陈述。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (7)
1.一种矩阵乘法加速装置,其特征在于,所述的装置包括:第一控制开关、左矩阵变换单元、右矩阵变换单元、矩阵乘法单元、第二控制开关以及输出矩阵变换单元;其中,所述第一控制开关、矩阵乘法单元以及第二控制开关依次连接形成第一计算路径;第一控制开关通过并行的左矩阵变换单元和右矩阵变换单元与矩阵乘法单元相连接,所述矩阵乘法单元通过第二控制开关与输出变换相连接以形成第二计算路径,所述第一计算路径用于直接进行矩阵乘法计算,所述第二计算路径用于采用预设计算方式进行矩阵乘法计算;
获取待进行矩阵乘法的左矩阵和右矩阵以及矩阵计算方式;
根据所述矩阵计算方式配置所述第一控制开关和所述第二控制开关的工作状态,以启动所述矩阵计算模式对应的目标计算路径,其中,所述目标计算路径为第一计算路径或第二计算路径;
通过所述目标计算路径对所述左矩阵和右矩阵进行矩阵计算,以得到输出矩阵;
所述通过所述目标计算路径对所述左矩阵和右矩阵进行矩阵计算,以得到输出矩阵具体包括:
当矩阵计算方式为直接计算方式时,通过第一计算路径对所述左矩阵和右矩阵进行矩阵计算,其中,所述第一计算路径的计算过程为:通过第一控制开关将左矩阵和右矩阵输入矩阵乘法单元,通过矩阵乘法单元计算得到输出矩阵;
当矩阵计算方式为预设计算方式时,通过第二计算路径对所述左矩阵和右矩阵进行矩阵计算,其中,所述第二计算路径的计算过程为:将左矩阵输入左矩阵变换单元以得到左变换矩阵,将右矩阵输入右矩阵变换单元以得到右变换矩阵;将左变换矩阵和右变换矩阵经过矩阵乘法单元进行计算后输入输出变换矩阵单元,通过输出矩阵变换单元转换得到输出矩阵。
2.根据权利要求1所述矩阵乘法加速装置,其特征在于,所述预设计算方式包括Strassen算法方式和/或Winograd算法方式。
3.根据权利要求1所述矩阵乘法加速装置,其特征在于,所述左矩阵变换单元用于读取所述预设计算方式对应的左变换矩阵,并通过所述左变换矩阵对左矩阵进行矩阵变换,右矩阵变换单元用于读取所述预设计算方式对应的右变换矩阵,并通过所述右变换矩阵对右矩阵进行矩阵变换。
4.根据权利要求3所述矩阵乘法加速装置,其特征在于,所述左矩阵变换单元、所述右矩阵变换单元及所述输出矩阵变换单元均通过加法计算和移位计算进行矩阵变换。
5.根据权利要求1所述矩阵乘法加速装置,其特征在于,所述第一控制开关的工作状态与所述第二控制开关的工作状态相同,其中,当第一控制开关处于与左矩阵变换单元和右矩阵变换单元相连通状态时,第二控制开关处于与输出矩阵变换单元相连通状态。
6.根据权利要求1或5所述矩阵乘法加速装置,其特征在于,所述第一控制开关和所述第二控制开关的工作状态均为基于矩阵乘法加速装置接收到的矩阵乘法对应的矩阵计算方式确定的。
7.一种嵌入设备,其特征在于,所述嵌入设备配置有如权利要求1-6任意一项所述的矩阵乘法加速装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211710549.0A CN115878957B (zh) | 2022-12-29 | 2022-12-29 | 一种矩阵乘法加速装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211710549.0A CN115878957B (zh) | 2022-12-29 | 2022-12-29 | 一种矩阵乘法加速装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115878957A CN115878957A (zh) | 2023-03-31 |
CN115878957B true CN115878957B (zh) | 2023-08-29 |
Family
ID=85757223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211710549.0A Active CN115878957B (zh) | 2022-12-29 | 2022-12-29 | 一种矩阵乘法加速装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878957B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104641337A (zh) * | 2012-08-30 | 2015-05-20 | 谷歌公司 | 显示图形键盘 |
CN109767000A (zh) * | 2019-01-16 | 2019-05-17 | 厦门美图之家科技有限公司 | 基于Winograd算法的神经网络卷积方法及装置 |
CN110807513A (zh) * | 2019-10-23 | 2020-02-18 | 中国人民解放军国防科技大学 | 一种基于Winograd稀疏算法的卷积神经网络加速器 |
CN112166442A (zh) * | 2018-06-04 | 2021-01-01 | 株式会社索思未来 | 运算方法 |
CN112395549A (zh) * | 2020-11-12 | 2021-02-23 | 华中科技大学 | 一种用于矩阵乘法密集型算法的可重构矩阵乘法加速系统 |
CN112862091A (zh) * | 2021-01-26 | 2021-05-28 | 合肥工业大学 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
WO2022226721A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 一种矩阵乘法器及矩阵乘法器的控制方法 |
CN115298669A (zh) * | 2020-03-26 | 2022-11-04 | 超威半导体公司 | 机器学习加速器的功率减小 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115310031A (zh) * | 2021-05-07 | 2022-11-08 | 脸萌有限公司 | 一种矩阵乘法电路模块及方法 |
-
2022
- 2022-12-29 CN CN202211710549.0A patent/CN115878957B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104641337A (zh) * | 2012-08-30 | 2015-05-20 | 谷歌公司 | 显示图形键盘 |
CN112166442A (zh) * | 2018-06-04 | 2021-01-01 | 株式会社索思未来 | 运算方法 |
CN109767000A (zh) * | 2019-01-16 | 2019-05-17 | 厦门美图之家科技有限公司 | 基于Winograd算法的神经网络卷积方法及装置 |
CN110807513A (zh) * | 2019-10-23 | 2020-02-18 | 中国人民解放军国防科技大学 | 一种基于Winograd稀疏算法的卷积神经网络加速器 |
CN115298669A (zh) * | 2020-03-26 | 2022-11-04 | 超威半导体公司 | 机器学习加速器的功率减小 |
CN112395549A (zh) * | 2020-11-12 | 2021-02-23 | 华中科技大学 | 一种用于矩阵乘法密集型算法的可重构矩阵乘法加速系统 |
CN112862091A (zh) * | 2021-01-26 | 2021-05-28 | 合肥工业大学 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
WO2022226721A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 一种矩阵乘法器及矩阵乘法器的控制方法 |
Non-Patent Citations (1)
Title |
---|
JPEG2000位平面编码器的硬件实现;乔世杰等;《计算机工程与应用》;第70-73页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115878957A (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531541B2 (en) | Processing apparatus and processing method | |
US11507350B2 (en) | Processing apparatus and processing method | |
US20200285605A1 (en) | Systolic array and processing system | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
JP3749022B2 (ja) | 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム | |
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN109165728B (zh) | 一种卷积神经网络的基本计算单元及计算方法 | |
CN109284824B (zh) | 一种基于可重构技术的用于加速卷积和池化运算的装置 | |
CN112905530B (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
CN111488976B (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN110851779A (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN113486298A (zh) | 基于Transformer神经网络的模型压缩方法、矩阵乘法模块 | |
CN111488963B (zh) | 神经网络计算装置和方法 | |
CN115878957B (zh) | 一种矩阵乘法加速装置及方法 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN116167424B (zh) | 基于cim的神经网络加速器、方法、存算处理系统与设备 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN115081603A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 | |
CN111291874A (zh) | 卷积神经网络处理器及其数据处理方法 | |
Zhao et al. | A method for accelerating convolutional neural networks based on fpga | |
CN117291240B (zh) | 卷积神经网络加速器及电子设备 | |
CN110764602B (zh) | 用于降低存储开销的汇流阵列 | |
CN114692853A (zh) | 运算单元架构、运算单元丛集及卷积运算的执行方法 | |
CN115438777A (zh) | 对神经元数据执行Winograd卷积正变换的装置 |
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 |