CN109635238B - 矩阵运算方法、装置、设备及可读介质 - Google Patents

矩阵运算方法、装置、设备及可读介质 Download PDF

Info

Publication number
CN109635238B
CN109635238B CN201811495463.4A CN201811495463A CN109635238B CN 109635238 B CN109635238 B CN 109635238B CN 201811495463 A CN201811495463 A CN 201811495463A CN 109635238 B CN109635238 B CN 109635238B
Authority
CN
China
Prior art keywords
matrix
cutting
scales
determining
scale
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
Application number
CN201811495463.4A
Other languages
English (en)
Other versions
CN109635238A (zh
Inventor
胡耀全
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201811495463.4A priority Critical patent/CN109635238B/zh
Publication of CN109635238A publication Critical patent/CN109635238A/zh
Application granted granted Critical
Publication of CN109635238B publication Critical patent/CN109635238B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本公开实施例公开了一种矩阵运算方法、装置、设备及可读介质。其中,方法包括:获取第一矩阵、第二矩阵和矩阵运算规则;根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度;按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。本公开实施例能够自动选择出最优的切割尺度,对矩阵进行切割,无需人工设置切割尺度,从而减少运算时长。

Description

矩阵运算方法、装置、设备及可读介质
技术领域
本公开实施例涉及计算机技术,尤其涉及一种矩阵运算方法、装置、设备及可读介质。
背景技术
矩阵运算包括矩阵与矩阵相乘、矩阵相加减等等,在电子设备上进行矩阵运算时,需要将矩阵读入缓存中,例如一级缓存或者二级缓存,寄存器再从缓存中读取矩阵进行运算。但是缓存的空间有限,当矩阵包含的数据量较大时,可能会占满缓存,并溢出至内存中,寄存器如果从内存中读取矩阵会比较耗时。
现有技术中,为了减少运算时长,会对矩阵进行切块,并将切割的子矩阵依次读入缓存中,避免溢出至内存中;同时,由于子矩阵数据量较小,可以在其运算周期内一直存储在缓存中,不必频繁读入和踢出缓存,进一步减少运算时长。再者,由于寄存器的计算资源有限,还需要再对子矩阵进行切割,得到多个运算单元,以匹配寄存器的计算资源。
可见,现有技术需要子矩阵的尺寸与缓存相匹配,运算单元的尺寸与寄存器的计算资源相匹配,矩阵的切割尺度和子矩阵的切割尺度是关键。但是,目前,切割尺度是人为设定的,很难与缓存和寄存器相匹配,达不到最小化运算时长。
发明内容
本公开实施例提供一种矩阵运算方法、装置、设备及可读介质,以减少矩阵运算时长。
第一方面,本公开实施例提供了一种矩阵运算方法,包括:
获取第一矩阵、第二矩阵和矩阵运算规则;
根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度;
按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;
选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
第二方面,本公开实施例还提供了一种矩阵运算装置,包括:
获取模块,用于获取第一矩阵、第二矩阵和矩阵运算规则;
确定模块,用于根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度;
运算模块,用于按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;
选择模块,用于选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
第三方面,本公开实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理装置;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理装置实现任一实施例所述的矩阵运算方法。
第四方面,本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现任一实施例所述的矩阵运算方法。
本公开实施例中,通过获取第一矩阵、第二矩阵和矩阵运算规则,根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度,按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长,从而对多组切割尺度进行搜索,自动选择出最优的切割尺度,对矩阵进行切割,无需人工设置切割尺度,从而减少运算时长。
附图说明
图1a是本公开实施例一提供的一种矩阵运算方法的流程图;
图1b是本公开实施例一提供的第一矩阵和第二矩阵的切割尺度示意图;
图2是本公开实施例二提供的一种矩阵运算方法的流程图;
图3是本公开实施例三提供的一种矩阵运算方法的流程图;
图4是本公开实施例四提供的一种矩阵运算装置的结构示意图;
图5是本公开实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分而非全部结构。下述各实施例中,每个实施例中同时提供了可选特征和示例,实施例中记载的各个特征可进行组合,形成多个可选方案,不应将每个编号的实施例仅视为一个技术方案。
实施例一
图1a是本公开实施例一提供的一种矩阵运算方法的流程图,本实施例可适用于在电子设备上对两个矩阵进行运算的情况。该方法可以由矩阵运算装置来执行,该装置可以由硬件和/或软件构成,并集成在电子设备中。结合图1a,本公开实施例提供的方法具体包括如下操作:
S110、获取第一矩阵、第二矩阵和矩阵运算规则。
第一矩阵包括至少一行和/或至少一列,同样地,第二矩阵也包括至少一行和/或至少一列,第一矩阵和第二矩阵的尺寸(即长和宽)可能相同也可能不同。第一矩阵和第二矩阵中的数据可以是浮点型也可以是定点型。第一矩阵和第二矩阵的矩阵运算规则包括但不限于相乘、相加减等。以矩阵相乘为例,矩阵运算规则还应包括运算关系,即哪个矩阵是乘数,哪个矩阵是被乘数。
S120、根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度。
在进行矩阵运算时,需要按照切割尺度,将矩阵进行切割得到子矩阵,以及将子矩阵进行切割得到运算单元。本实施例中,对两个矩阵的至少一者进行切割即可,如果第一矩阵或者第二矩阵的尺寸较小,可以不进行切割。
一个矩阵具有多组切割尺度,即多组切割方式,从而寻找最优的切割尺度。其中,一组切割尺度包括固定切割方向上的固定切割单位,不同组的切割尺度可以是切割方向不同,和/或,切割单位不同。如图1b所示,每个方格代表一个数据,第一矩阵的一组切割尺度包括:在第一矩阵的横向方向上,2个数据为一个切割单位;对于第一矩阵的子矩阵,在横向方向上,1个数据为一个切割单位。第二矩阵的一组切割尺度包括:在第二矩阵的纵向方向上,2个数据为一个切割单位;对于第二矩阵的子矩阵,在纵向方向上,1个数据为一个切割单位。
S130、按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长。
具体地,结合图1b,首先按照每组切割尺度,对第一矩阵和/或第二矩阵进行分割,得到子矩阵,并将子矩阵读入缓存。再在寄存器中,对第一矩阵的子矩阵分割得到的运算单元和第二矩阵的子矩阵分割得到的运算单元进行运算,得到总运算时长。可见,一组切割尺度对应一个运算时长,通过按照多组切割尺度分别进行矩阵运算,能够得到多个运算时长。
可选地,按照应用场景选择矩阵运算的电子设备。例如,矩阵运算应用在终端应用程序中,则在终端对第一矩阵和第二矩阵进行矩阵运算。从而选择出符合应用场景的运算时长和切割尺度。
可选地,对于多组切割尺度,可采用网格搜索方法,将各组切割尺度分配到各网格中,依次按照每个网格中的切割尺度进行矩阵运算,得到运算时长。
S140、选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
运算时长的长短反应了切割尺度的好坏,根据背景技术的描述,如果某一组切割尺度对应的运算时长较短,说明子矩阵的尺寸与缓存相匹配,运算单元与寄存器的计算资源相匹配。
可选地,选择最小的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算;或者,选择小于等于时长阈值的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。如果小于等于时长阈值的运算时长有多个,则任选一个运算时长对应的切割尺度。
通过按照每组切割尺度进行矩阵运算,并比较运算时长,从而选择出最优的切割尺度。进而,在后续对第一矩阵和第二矩阵进行运算时,可以按照选择出的切割尺度进行切割并运算,以减少运算时长。
本公开实施例中,通过获取第一矩阵、第二矩阵和矩阵运算规则,根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度,按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长,从而对多组切割尺度进行搜索,自动选择出最优的切割尺度,对矩阵进行切割,无需人工设置切割尺度,从而减少运算时长。
实施例二
图2是本公开实施例二提供的一种矩阵运算方法的流程图,本实施例对上述实施例的各可选实施方式进一步优化。电子设备的硬件通过执行矩阵运算规则代码实现矩阵的运算,但是硬件会重新排列代码顺序,一方面延长运算时长,另一方面,代码排序错误可能导致矩阵切割错误。基于此,本实施例将矩阵运算规则的代码转换为二叉搜索树。结合图2,本实施例提供的方法包括以下操作:
S210、获取第一矩阵、第二矩阵和矩阵运算规则。
S220、将矩阵运算规则的代码,转换成二叉搜索树。
其中,二叉搜索树的节点包括第一矩阵和第二矩阵的尺寸,第一矩阵和/或第二矩阵的切割方向,切割方向包括矩阵切割方向和子矩阵切割方向,具体包括横向切割方向和纵向切割方向。具体地,二叉搜索树的一个节点包括一个矩阵的尺寸和该矩阵的切割方向。如果不对第一矩阵或者第二矩阵进行切割,则节点不包括第一矩阵或者第二矩阵的切割方向。此外,二叉搜索树的节点还包括矩阵运算关系,例如哪个矩阵是乘数,哪个矩阵是被乘数。
具体地,通过编译器对代码中的字符进行分析,生成二叉搜索树,也就是从代码中的字符转换成中间表示:构架编译器的框架系统(Low Level Virtual Machine,llvm),实质是字符到字符的转换。
S230、根据第一矩阵的尺寸和计算资源,确定与第一矩阵的切割方向对应的第一切割尺度范围,和/或,根据第二矩阵的尺寸和计算资源,确定与第二矩阵的切割方向对应的第二切割尺度范围。
其中,切割尺度范围包括矩阵切割尺度范围和子矩阵切割尺度范围。以第一矩阵为例,第二矩阵的切割尺度范围确定方法与第一矩阵相同。
首先,由于矩阵的尺寸是有限的,则根据第一矩阵的尺寸,确定与第一矩阵的切割方向对应的矩阵第一切割尺度范围。例如,对第一矩阵的横向切割范围不能超过第一矩阵的宽,纵向切割范围不能超过第一矩阵的长。接着,由于寄存器的计算资源有限,则根据第一矩阵的子矩阵的尺寸和计算资源,确定与第一矩阵的子矩阵的切割方向对应的第一子矩阵切割尺度范围。例如,对子矩阵的切割尺度范围不能超过寄存器的计算资源的一半,以留出另一半计算资源给第二矩阵或者第二矩阵的运算单元。
S240、在第一切割尺寸范围和/或第二切割尺寸范围内,分别确定第一矩阵和/或第二矩阵的多组切割尺度。
可选地,按照多个切割单位,将切割尺寸范围切割为多组切割尺度。具体地,切割单位包括矩阵切割单位和子矩阵切割单位,则按照多个矩阵切割单位,将矩阵切割尺度范围切割为多个矩阵切割尺度;按照多个子矩阵切割单位,将子矩阵切割尺度范围切割为多个子矩阵切割尺度。每个子矩阵切割尺度与每个矩阵切割尺度两两组合,得到一组切割尺度。
可选地,切割单位可以人工设置,则二叉搜索树的节点还包括切割单位。切割单位也可以采用默认值,例如1个数据、2个数据等。
S250、按照多组切割尺度中每组切割尺度,对二叉搜索树进行变形。
变形后的二叉搜索树的节点包括:按照每个矩阵切割尺度对第一矩阵和/或第二矩阵进行切割后的子矩阵的尺寸,以及按照每个子矩阵切割尺度对子矩阵进行切割后的运算单元的尺寸。具体地,一个节点包括一个子矩阵的尺寸或者运算单元的尺寸。
可选地,变形后的二叉搜索树的节点还包括子矩阵的存储方式,存储方式包括列存储方式和行存储方式。这是因为,现有的缓存采用连续存储方式,并不是按照子矩阵的形式进行存储的,则需要将子矩阵的每行首尾相连(即行存储方式),或者每列首尾相连(即列存储方式)存储至缓存的连续存储空间中。基于此,为了方便缓存存储,变形后的二叉搜索树的节点还包括子矩阵的存储方式。特别地,对于矩阵相乘的运算,例如第一矩阵乘以第二矩阵,按照矩阵乘法运算规则,被乘数(第一矩阵)的子矩阵的存储方式是行存储,乘数(第二矩阵)的子矩阵的存储方式是列存储。
在一可选实施方式中,在对二叉搜索树进行变形后,节点之间是独立的,不能体现出子矩阵之间,或者运算单元之间的运算关系,基于此,根据矩阵运算规则,确定变形后的二叉搜索树的节点之间的运算关系;将存在运算关系的节点进行合并。例如,第一矩阵乘以第二矩阵,将第一矩阵的第一行对应的节点与第二矩阵的第一列对应的节点进行合并。通过将存在运算关系的节点进行合并,以说明需要进行运算的两个子矩阵或者两个运算单元,避免运算错误。
在另一可选实施方式中,有些子矩阵之间,或者运算单元之间不存在运算关系,例如,第一矩阵的第一行对应的节点与第二行对应的节点不存在运算关系,则根据矩阵运算规则,确定变形后的二叉搜索树上、运算相互独立的节点;将运算相互独立的节点分配至不同的线程,从而通过多线程并行的方式进行矩阵运算,进一步减少计算时长。
S260、将变形后的二叉搜索树,生成底层机器可执行的代码,以通过执行可执行代码对第一矩阵和第二矩阵进行矩阵运算,得到运算时长。
S270、选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
本实施例将矩阵运算规则的代码转换为二叉搜索树,以及变形二叉搜索树的目的在于方便将矩阵运算规则的代码转换为可执行的代码,避免硬件对矩阵运算规则的代码进行重新排序,导致代码错误。变形后的二叉搜索树上节点包括的信息会存成一种特定形式的字符,也称为llvm。这种中间表示llvm可以直接调用驱动的接口,生成底层机器可以执行的二进制代码,CPU或GPU共用一套llvm。
本实施例中,通过将将矩阵运算规则的代码,转换成二叉搜索树,方便对矩阵运算规则的代码进行转换;通过根据矩阵的尺寸和计算资源,确定切割尺度范围,并在切割尺度范围内确定多组切割尺度,从而自动确定多组切割尺度,无需人工设置;通过按照多组切割尺度中每组切割尺度,对二叉搜索树进行变形,并将变形后的二叉搜索树,生成可执行的代码,以通过执行可执行代码对第一矩阵和第二矩阵进行矩阵运算,得到运算时长,使得底层机器可以直接执行可执行的代码,减少计算时长,并避免代码重新排序。
实施例三
图3是本公开实施例三提供的一种矩阵运算方法的流程图,适用于对神经网络中网络层的输入和网络层进行矩阵乘法运算的情况。结合图3,本实施例提供的方法具体包括以下操作:
S310、获取神经网络中网络层的输入矩阵和网络层的计算规则。
神经网络的网络层包括但不限于卷积层、激活层、全连接层。
可选地,在S310之前,还包括:对神经网络中至少两个网络层进行合并,得到合并后的网络层,进而将合并后的网络层的输入矩阵和合并后的网络层的计算规则,转换为第一矩阵与第二矩阵相乘。
在一可选实施方式中,可以按照预设的规则,对网络层进行合并。在一示例中,将卷积层、批量归一化(Batch Normalization,BN)层和修正线性单元(Rectified linearunit,ReLU)层进行合并。在另一示例中,将Depthwise(DW)卷积与1×1的网络层进行合并。在另一可选实施方式中,如果至少两个网络层的输入矩阵和输出矩阵的尺寸相同,仅是数据不同,即仅存在原位置数据变换,则可以进行合并。
S320、将网络层的输入矩阵和网络层的计算规则,转换为第一矩阵与第二矩阵相乘。
以激活函数为例,输入矩阵是I,输入矩阵I经过sigmoid激活函数处理之后,得到X=WI,W为sigmoid激活函数的权重矩阵。
以卷积层为例,卷积运算本质上就是在滤波器和输入矩阵间做点积。卷积层的常用实现方式就是利用这一点,将卷积层的前向传播变成一个巨大的矩阵乘法。将输入矩阵与卷积层的运算实现为矩阵乘法属于现有技术,此处不再赘述。
以全连接层为例,全连接层本身就是个矩阵乘法,相当于一个特征空间变换,可以把前面所有有用的信息提取整合。
S330、根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度。
S340、按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长。
S350、选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
本实施例通过获取神经网络中网络层的输入矩阵和网络层的计算规则,将网络层的输入矩阵和网络层的计算规则,转换为第一矩阵与第二矩阵相乘,从而将矩阵乘法应用于神经网络的输入矩阵和网络层的运算过程中,有效减少了神经网络的运算时长;通过对神经网络中至少两个网络层进行合并,得到合并后的网络层,从而减少了运算数据量,进一步减少运算时长。
实施例四
图4是本公开实施例四提供的一种矩阵运算装置的结构示意图,包括:获取模块41、确定模块42、运算模块43和选择模块44。
获取模块41,用于获取第一矩阵、第二矩阵和矩阵运算规则;
确定模块42,用于根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度;
运算模块43,用于按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;
选择模块44,用于选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
本公开实施例中,通过获取第一矩阵、第二矩阵和矩阵运算规则,根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度,按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长,从而对多组切割尺度进行搜索,自动选择出最优的切割尺度,对矩阵进行切割,无需人工设置切割尺度,从而减少运算时长。
可选地,选择模块44在选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算时,具体用于:选择最小的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算;或者,选择小于等于时长阈值的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
可选地,确定模块42在根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度时,具体用于:将矩阵运算规则的代码,转换成二叉搜索树,二叉搜索树的节点包括第一矩阵和第二矩阵的尺寸,第一矩阵和/或第二矩阵的切割方向;根据第一矩阵的尺寸和计算资源,确定与第一矩阵的切割方向对应的第一切割尺度范围,和/或,根据第二矩阵的尺寸和计算资源,确定与第二矩阵的切割方向对应的第二切割尺度范围;在第一切割尺寸范围和/或第二切割尺寸范围内,分别确定第一矩阵和/或第二矩阵的多组切割尺度;其中,切割尺度范围包括矩阵切割尺度范围和子矩阵切割尺度范围。
可选地,多组切割尺度包括多组矩阵切割尺度和多组子矩阵切割尺度;相应地,运算模块43在按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长时,具体用于:按照多组切割尺度中每组切割尺度,对二叉搜索树进行变形;将变形后的二叉搜索树,生成底层机器可执行的代码,以通过执行可执行代码对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;其中,变形后的二叉搜索树的节点包括:按照每个矩阵切割尺度对第一矩阵和/或第二矩阵进行切割后的子矩阵的尺寸,以及按照每个子矩阵切割尺度对子矩阵进行切割后的运算单元的尺寸。
可选地,该装置还包括合并模块和分配模块。其中,合并模块用于在将变形后的二叉搜索树,生成底层机器可执行的代码之前,根据矩阵运算规则,确定变形后的二叉搜索树的节点之间的运算关系;将存在运算关系的节点进行合并。分配模块用于在将变形后的二叉搜索树,生成底层机器可执行的代码之前,根据矩阵运算规则,确定变形后的二叉搜索树上、运算相互独立的节点;将运算相互独立的节点分配至不同的线程。
可选地,获取模块41在获取第一矩阵、第二矩阵和矩阵运算规则时,具体用于:获取神经网络中网络层的输入矩阵和网络层的计算规则;将网络层的输入矩阵和网络层的计算规则,转换为第一矩阵与第二矩阵相乘。
可选地,该装置还包括网络层合并模块,用于在获取神经网络中网络层的输入矩阵和网络层的计算规则之前,对神经网络中至少两个网络层进行合并,得到合并后的网络层。
本公开实施例所提供的矩阵运算装置可执行本公开任意实施例所提供的矩阵运算方法,具备执行方法相应的功能模块和有益效果。
实施例五
下面参考图5,其示出了适于用来实现本公开实施例的电子设备500的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端,或者各种形式的服务器,如独立服务器或者服务器集群。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储装置(ROM)502中的程序或者从存储装置505加载到随机访问存储装置(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、ROM502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行可操作控件的显示方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置505被安装,或者从ROM502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储装置(RAM)、只读存储装置(ROM)、可擦式可编程只读存储装置(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储装置(CD-ROM)、光存储装置件、磁存储装置件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该处理装置执行时,使得该电子设备:获取第一矩阵、第二矩阵和矩阵运算规则;根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度;按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取模块还可以被描述为“获取第一矩阵、第二矩阵和矩阵运算规则的模块”。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (13)

1.一种矩阵运算方法,其特征在于,应用于电子设备的硬件通过执行矩阵运算规则代码实现矩阵的运算的场景,包括:
获取第一矩阵、第二矩阵和矩阵运算规则;
根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度;
按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;
选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算;
其中,所述根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度,包括:
将矩阵运算规则的代码,转换成二叉搜索树,所述二叉搜索树的节点包括第一矩阵和第二矩阵的尺寸,第一矩阵和/或第二矩阵的切割方向;
根据所述尺寸和计算资源,确定所述切割方向对应的切割尺度范围,并在所述切割尺度范围内确定多组切割尺度;
其中,所述按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长,包括:
按照多组切割尺度中每组切割尺度,对二叉搜索树进行变形;
将变形后的二叉搜索树,生成底层机器可执行的代码,以通过执行所述可执行代码对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;
所述满足预设要求的运算时长,为子矩阵的尺寸与缓存相匹配,运算单元与寄存器的计算资源对应的运算时长。
2.根据权利要求1所述的方法,其特征在于,所述选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算,包括:
选择最小的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算;或者,
选择小于等于时长阈值的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
3.根据权利要求1所述的方法,其特征在于,所述根据所述尺寸和计算资源,确定所述切割方向对应的切割尺度范围,并在所述切割尺度范围内确定多组切割尺度,包括:
根据第一矩阵的尺寸和计算资源,确定与第一矩阵的切割方向对应的第一切割尺度范围,和/或,根据第二矩阵的尺寸和计算资源,确定与第二矩阵的切割方向对应的第二切割尺度范围;
在第一切割尺寸范围和/或第二切割尺寸范围内,分别确定第一矩阵和/或第二矩阵的多组切割尺度;
其中,切割尺度范围包括矩阵切割尺度范围和子矩阵切割尺度范围。
4.根据权利要求3所述的方法,其特征在于,所述多组切割尺度包括多组矩阵切割尺度和多组子矩阵切割尺度;
其中,变形后的二叉搜索树的节点包括:按照每个矩阵切割尺度对第一矩阵和/或第二矩阵进行切割后的子矩阵的尺寸,以及按照每个子矩阵切割尺度对子矩阵进行切割后的运算单元的尺寸。
5.根据权利要求1所述的方法,其特征在于,在将变形后的二叉搜索树,生成底层机器可执行的代码之前,还包括:
根据矩阵运算规则,确定变形后的二叉搜索树的节点之间的运算关系;
将存在运算关系的节点进行合并。
6.根据权利要求1所述的方法,其特征在于,在将变形后的二叉搜索树,生成底层机器可执行的代码之前,还包括:
根据矩阵运算规则,确定变形后的二叉搜索树上、运算相互独立的节点;
将运算相互独立的节点分配至不同的线程。
7.根据权利要求1所述的方法,其特征在于,所述获取第一矩阵、第二矩阵和矩阵运算规则,包括:
获取神经网络中网络层的输入矩阵和网络层的计算规则;
将网络层的输入矩阵和网络层的计算规则,转换为第一矩阵与第二矩阵相乘。
8.根据权利要求7所述的方法,其特征在于,在获取神经网络中网络层的输入矩阵和网络层的计算规则之前,还包括:
对神经网络中至少两个网络层进行合并,得到合并后的网络层。
9.一种矩阵运算装置,其特征在于,应用于电子设备的硬件通过执行矩阵运算规则代码实现矩阵的运算的场景,包括:
获取模块,用于获取第一矩阵、第二矩阵和矩阵运算规则;
确定模块,用于根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度;
运算模块,用于按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;
选择模块,用于选择满足预设要求的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算;
其中,确定模块在根据矩阵运算规则,确定第一矩阵和/或第二矩阵的多组切割尺度时,用于:
将矩阵运算规则的代码,转换成二叉搜索树,所述二叉搜索树的节点包括第一矩阵和第二矩阵的尺寸,第一矩阵和/或第二矩阵的切割方向;
根据所述尺寸和计算资源,确定所述切割方向对应的切割尺度范围,并在所述切割尺度范围内确定多组切割尺度;
其中,运算模块在按照多组切割尺度中每组切割尺度,分别对第一矩阵和第二矩阵进行矩阵运算,得到运算时长时,用于:
按照多组切割尺度中每组切割尺度,对二叉搜索树进行变形;
将变形后的二叉搜索树,生成底层机器可执行的代码,以通过执行所述可执行代码对第一矩阵和第二矩阵进行矩阵运算,得到运算时长;
所述满足预设要求的运算时长,为子矩阵的尺寸与缓存相匹配,运算单元与寄存器的计算资源对应的运算时长。
10.根据权利要求9所述的装置,其特征在于,所述选择模块,具体用于:
选择最小的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算;或者,
选择小于等于时长阈值的运算时长对应的切割尺度,对第一矩阵和第二矩阵进行矩阵运算。
11.根据权利要求9所述的装置,其特征在于,所述确定模块,具体用于:
根据第一矩阵的尺寸和计算资源,确定与第一矩阵的切割方向对应的第一切割尺度范围,和/或,根据第二矩阵的尺寸和计算资源,确定与第二矩阵的切割方向对应的第二切割尺度范围;
在第一切割尺寸范围和/或第二切割尺寸范围内,分别确定第一矩阵和/或第二矩阵的多组切割尺度;
其中,切割尺度范围包括矩阵切割尺度范围和子矩阵切割尺度范围。
12.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理装置;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理装置实现如权利要求1-8中任一所述的矩阵运算方法。
13.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现如权利要求1-8中任一所述的矩阵运算方法。
CN201811495463.4A 2018-12-07 2018-12-07 矩阵运算方法、装置、设备及可读介质 Active CN109635238B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811495463.4A CN109635238B (zh) 2018-12-07 2018-12-07 矩阵运算方法、装置、设备及可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811495463.4A CN109635238B (zh) 2018-12-07 2018-12-07 矩阵运算方法、装置、设备及可读介质

Publications (2)

Publication Number Publication Date
CN109635238A CN109635238A (zh) 2019-04-16
CN109635238B true CN109635238B (zh) 2023-08-29

Family

ID=66072013

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811495463.4A Active CN109635238B (zh) 2018-12-07 2018-12-07 矩阵运算方法、装置、设备及可读介质

Country Status (1)

Country Link
CN (1) CN109635238B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11704555B2 (en) * 2019-06-24 2023-07-18 Baidu Usa Llc Batch normalization layer fusion and quantization method for model inference in AI neural network engine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10158784A1 (de) * 2001-11-30 2003-08-07 Infineon Technologies Ag Verfahren zum Bestimmen eines Abstands von Prozessoreinheiten zu mindestens einer Referenzposition in einer Prozessor-Anordnung und Prozessor-Anordnung
CN104391820A (zh) * 2014-11-25 2015-03-04 清华大学 基于fpga的通用浮点矩阵处理器硬件结构
CN105843781A (zh) * 2015-02-02 2016-08-10 国际商业机器公司 执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统
CN108874745A (zh) * 2017-05-11 2018-11-23 北京异构智能科技有限公司 原生张量处理器及张量缩并的分割

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117288B2 (en) * 2004-10-12 2012-02-14 International Business Machines Corporation Optimizing layout of an application on a massively parallel supercomputer
US8706914B2 (en) * 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10158784A1 (de) * 2001-11-30 2003-08-07 Infineon Technologies Ag Verfahren zum Bestimmen eines Abstands von Prozessoreinheiten zu mindestens einer Referenzposition in einer Prozessor-Anordnung und Prozessor-Anordnung
CN104391820A (zh) * 2014-11-25 2015-03-04 清华大学 基于fpga的通用浮点矩阵处理器硬件结构
CN105843781A (zh) * 2015-02-02 2016-08-10 国际商业机器公司 执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统
CN108874745A (zh) * 2017-05-11 2018-11-23 北京异构智能科技有限公司 原生张量处理器及张量缩并的分割

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Hadoop的Apriori改进算法研究;黄剑等;计算机科学(第07期);全文 *

Also Published As

Publication number Publication date
CN109635238A (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
CN109523187B (zh) 任务调度方法、装置和设备
CN110321958B (zh) 神经网络模型的训练方法、视频相似度确定方法
CN112258512B (zh) 点云分割方法、装置、设备和存储介质
CN112650790B (zh) 目标点云平面确定方法,装置,电子设备及存储介质
US10782897B2 (en) Memory reduction for neural networks with fixed structures
CN110825436B (zh) 应用于人工智能芯片的计算方法和人工智能芯片
CN111752691B (zh) Ai计算图的排序方法、装置、设备及存储介质
CN112818663A (zh) 用于语言模型的处理方法、文本生成方法、装置及介质
CN110909527B (zh) 文本处理模型的运行方法、装置、电子设备、及存储介质
US11651198B2 (en) Data processing method and apparatus for neural network
CN110009101B (zh) 用于生成量化神经网络的方法和装置
CN109635238B (zh) 矩阵运算方法、装置、设备及可读介质
US11055100B2 (en) Processor, and method for processing information applied to processor
CN110555861B (zh) 光流计算方法、装置及电子设备
CN114817845B (zh) 数据处理方法、装置、电子设备及存储介质
CN112306452A (zh) 归并排序算法处理业务数据的方法、装置及系统
CN111143355B (zh) 数据处理方法及装置
CN110490926B (zh) 标高确定方法、装置和电子设备
CN111382557B (zh) 非定长输入数据的批量处理方法、装置、终端及存储介质
CN111258582B (zh) 一种窗口渲染方法、装置、计算机设备及存储介质
CN114724725A (zh) 数据处理方法及装置、电子设备、存储介质
CN111275799B (zh) 动画的生成方法、装置和电子设备
CN112395089A (zh) 一种云端异构计算方法及设备
CN115759260B (zh) 深度学习模型的推理方法、装置、电子设备和存储介质
CN114040014B (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