CN110390075A - 矩阵预处理方法、装置、终端及可读存储介质 - Google Patents
矩阵预处理方法、装置、终端及可读存储介质 Download PDFInfo
- Publication number
- CN110390075A CN110390075A CN201910659596.9A CN201910659596A CN110390075A CN 110390075 A CN110390075 A CN 110390075A CN 201910659596 A CN201910659596 A CN 201910659596A CN 110390075 A CN110390075 A CN 110390075A
- Authority
- CN
- China
- Prior art keywords
- matrix
- block form
- dma
- parameter
- ranks
- 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
- 239000011159 matrix material Substances 0.000 title claims abstract description 745
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000007781 pre-processing Methods 0.000 claims abstract description 20
- 241000208340 Araliaceae Species 0.000 claims description 6
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 6
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 6
- 235000008434 ginseng Nutrition 0.000 claims description 6
- 238000004321 preservation Methods 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 8
- 230000006870 function Effects 0.000 abstract description 6
- 238000004364 calculation method Methods 0.000 abstract description 4
- 230000017105 transposition Effects 0.000 abstract description 4
- 230000011218 segmentation Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 7
- 230000004087 circulation Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 239000000945 filler Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种矩阵预处理方法,包括以下步骤:在接收到矩阵预处理指令时,基于所述预处理指令获取第一矩阵的参数、第二矩阵的参数、以及DMA分割矩阵的参数,而后基于所述第一矩阵的参数和所述DMA分割矩阵的参数,生成所述第一分块矩阵和所述第二分块矩阵并保存至所述预设的DMA操作缓存区。本发明还公开了一种装置、终端及可读存储介质。可以灵活的将已有的矩阵运算单元作为一种矩阵基本运算资源,高效、方便快捷的实现大矩阵乘加或转置等运算功能,在保证了矩阵运算的处理性能和运算效率的同时,解决了矩阵运算处理的灵活性、通用性、可扩展性和可复用性等问题。
Description
技术领域
本发明涉及数字信号处理技术领域,尤其涉及一种矩阵预处理方法、装置、终端及可读存储介质。
背景技术
矩阵运算在数字信号处理、深度学习、图像识别、人工智能、信道编码等众多领域广泛应用,由于计算复杂度高处理效率低,往往成为系统计算性能的瓶颈,尤其是大规模的矩阵运算,大多都是以DMA的方式作为一种协处理器或者加速器的形式出现在很多数字信号处理系统中,这种矩阵运算的实现方式具有很强的专用性,矩阵加、矩阵乘以及矩阵转置等不同矩阵处理的实现方案之间差异很大,即使是同一种设计方案,当对矩阵运算的功能或性能指标变动调整时,导致的实现方案改动往往也是不可接收的;但是矩阵运算作为数字信号处理系统中的一种运算功能,常常要在其运算性能和实现资源之间进行权衡,以及在其实现复杂度和实现周期成本之间进行权衡,权衡就会带来对矩阵运算指标的调整,现有的很多矩阵运算,实现时大多作为一种专用的运算加速器,专用性强,可扩展性和灵活性不高;
矩阵运算加速器是为了解决某个或者某些场景下的矩阵运算性能和运算效率等瓶颈问题而存在的,解决性能瓶颈的常用思路一般是增加硬件运算的并行度,解决运算效率瓶颈通常都是以DMA的方式进行流水计算;因此,基于这个特点,发明一种矩阵运算预处理装置,以DMA的方式实现对大矩阵的自动分割分块,以可变矩阵动态分割分块的方式实现对运算并行度的灵活支持,以这两种实现方式为基础,设计一种通用化的矩阵DMA分块处理单元,既满足了矩阵运算的效率,又可以做到对矩阵运算并行度的灵活支持;同时,将矩阵乘、矩阵加等不同矩阵运算类型之间的差异点进行特殊化专用化处理,设计一个专用的矩阵运算预处理控制单元,以通用化的处理单元作为基础支撑,辅助专用化的预处理控制单元,这种通用处理单元加专用控制处理单元的矩阵运算预处理架构,可以非常方便灵活的重复利用已有的矩阵基本运算资源,具有很强的灵活性和适用范围,在一定程度上提高了矩阵运算的灵活性和可扩展性,具有一定的工程应用意义。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种矩阵预处理方法,旨在解决现有的矩阵运算加速器,专用性强,可扩展性和灵活性不高的技术问题。
为实现上述目的,本发明提供一种矩阵预处理方法,所述矩阵预处理方法包括以下步骤:
在接收到矩阵预处理指令时,基于所述预处理指令获取第一矩阵的行列参数、所述第一矩阵的第一存储器地址、第二矩阵的行列参数、所述第二矩阵的第二存储器地址以及DMA分割矩阵的行列参数;
基于所述第一矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第一矩阵对应的第一分块矩阵的行列参数以及所述第一矩阵对应的第一填充矩阵;
基于所述第二矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第二矩阵对应的第二分块矩阵的行列参数以及所述第二矩阵对应的第二填充矩阵;
基于所述第一存储器地址、所述第一矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的第一DMA操作缓存区,且基于所述第二存储器地址、所述第二矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的第二DMA操作缓存区。
本发明通过在接收到矩阵预处理指令时,基于所述预处理指令获取第一矩阵的行列参数、所述第一矩阵的第一存储器地址、第二矩阵的行列参数、所述第二矩阵的第二存储器地址以及DMA分割矩阵的行列参数,而后基于所述第一矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第一矩阵对应的第一分块矩阵的行列参数以及所述第一矩阵对应的第一填充矩阵,接下来基于所述第二矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第二矩阵对应的第二分块矩阵的行列参数以及所述第二矩阵对应的第二填充矩阵,最后基于所述第一存储器地址、所述第一矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的第一DMA操作缓存区,且基于所述第二存储器地址、所述第二矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的第二DMA操作缓存区。灵活的将已有的矩阵运算资源作为一种矩阵基本运算单元,高效、方便快捷的实现大矩阵乘加或转置等运算功能,在保证了矩阵运算的实现性能和运算效率的同时,解决了矩阵运算处理的灵活性、通用性、可扩展性和可复用性等问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境中终端的结构示意图;
图2为本发明矩阵预处理方法第一实施例的流程示意图;
图3为本发明矩阵预处理方法第二实施例的流程示意图;
图4为本发明矩阵预处理装置实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境中终端的结构示意图。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器,当然,终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及矩阵预处理程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的矩阵预处理程序。
在本实施例中,终端包括:存储器1005、处理器1001及存储在所述存储器1005上并可在所述处理器1001上运行的矩阵预处理程序,其中,处理器1001调用存储器1005中存储的矩阵预处理程序时,执行本申请各个实施例提供的矩阵预处理方法的步骤。
本发明还提供一种矩阵预处理方法,参照图2,图2为本发明矩阵预处理方法第一实施例的流程示意图。
该矩阵预处理方法包括:
步骤S10,在接收到矩阵预处理指令时,基于所述预处理指令获取第一矩阵的行列参数、所述第一矩阵的第一存储器地址、第二矩阵的行列参数、所述第二矩阵的第二存储器地址以及DMA分割矩阵的行列参数;
在本实施例中,对于大矩阵的运算,通常受限于计算资源和缓存资源等因素,无法将矩阵所有元素同时进行计算,因此对于大矩阵的运算,通常是根据基本计算资源和数据缓存资源的使用情况,通过对大矩阵进行合理的分块,将大矩阵分割为一个一个小矩阵,在小矩阵之间进行相应的运算。矩阵运算包括矩阵乘和矩阵加,本发明以矩阵乘为例进行说明。当终端接收到预处理指令时,对该命令进行解析,获取到第一矩阵的行列参数、所述第一矩阵的第一存储器地址、第二矩阵的行列参数、所述第二矩阵的第二存储器地址以及DMA分割矩阵的行列参数,其中,第一矩阵和第二矩阵需要进行矩阵运算的2个大矩阵,第一矩阵和第二矩阵需要被分割成与DMA分割矩阵的行列参数相等的多个小矩阵。
举例说明,以矩阵乘预处理为例进行说明,即A*B=C,其中A[ma,na]、B[mb,nb]、C[ma,nb]均为可变矩阵,ma表示乘法矩阵A的行数,na表示乘法矩阵A的列数,mb表示被乘法矩阵B的行数,nb表示被乘法矩阵B的列数,且必须保证na=mb,这是矩阵乘运算的基本条件,由处理器保证。DMA分割矩阵用S[ms,ns]表示,ms表示小矩阵分割块的行数,ns表示小矩阵分割块的列数。大矩阵A[511,1022]作为乘法矩阵和大矩阵B[1022,909]作为被乘法矩阵,矩阵S[16,16]作为一个小矩阵分割块,即DMA分割矩阵,以M作为一个矩阵基本乘法运算单元。存储器单元一次读操作可以读128个矩阵元素,且以M是一个16x16矩阵乘法器为例进行具体说明;其中A矩阵和B矩阵的行列参数以及矩阵乘法器的规格参数均是为了举例随机选择的数字,没有特殊含义。
步骤S20,基于所述第一矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第一矩阵对应的第一分块矩阵的行列参数以及所述第一矩阵对应的第一填充矩阵;
在本实施例中,根据第一矩阵的行列参数以及DMA分割矩阵的行列参数可以确定第一分块矩阵的行列参数,以及第一矩阵对应的第一填充矩阵。需要说明的是,第一矩阵的行尾和列末在进行小矩阵分割时,需要进行行列元素的填充操做,以此需要确定填充矩阵的行列参数,其中,填充矩阵中的元素都为0。
具体地,步骤S20包括:
步骤S21,将所述第一行数除以所述DMA分割矩阵的行列参数中的行数,得到所述第一分块矩阵的行数;
步骤S22,将所述第一列数除以所述DMA分割矩阵的行列参数中的列数,得到所述第一分块矩阵的列数;
在本实施例中,根据第一矩阵的行列参数与分块小矩阵的行列参数之间的比例关系,计算出第一矩阵在行上和列上分别可以分割出的小矩阵数目。
具体地,为了描述方便,第一矩阵用A[ma,na]表示,ma和na分别表示行数和列数;DMA分割矩阵用S[ms,ns]表示,ms和ns分别表示行数和列数;第一分块矩阵用A’[ma’,na’]表示,ma’和na’分别表示行数和列数,第一分块矩阵A’是由矩阵A中的小矩阵块构成的矩阵,小矩阵块的大小与DMA分割矩阵的大小相同,则将第一矩阵A的行列参数的行数除以所述DMA分割矩阵S的行列参数的行数,并将商向上取整数,得到所述第一分块矩阵A’的行数,将第一矩阵A的行列参数的列数除以DMA分割矩阵S的行列参数的列数,并将商向上取整数,得到第一分块矩阵A’的列数。举例说明,第一分块矩阵A'的行列参数的计算过程,例如A[511,1022]、S[16,16],ceil()表示向上取整,则计算如下,得到第一分块矩阵A’的行列参数如下:
ma'=ceil(ma/ms)=ceil(511/16)=32;
na'=ceil(na/ns)=ceil(1022/16)=64;
计算得到:第一分块矩阵A’的行数等32,第一分块矩阵A’的列数等于64,即得到第一分块矩阵A’[32,64]。
步骤S23,将所述第一分块矩阵的行数乘以所述DMA分割矩阵的行列参数中的行数,并减去所述第一行数,得到所述第一填充矩阵的行数;
步骤S24,将所述第一分块矩阵的列数乘以所述DMA分割矩阵的行列参数中的列数,并减去所述第一列数,得到所述第一填充矩阵的列数。
在本实施例中,分割到第一分块矩阵的行和列边沿时,对应的小矩阵块需要填充,需要进一步确定填充矩阵的行列参数,其中,填充矩阵中的元素都为0。
具体的,位于矩阵A'的行尾和列末的小矩阵分割块需要进行行列元素的填充操作,则将第一分块矩阵的行数乘以DMA分割矩阵的行列参数的行数,并减去第一矩阵的行列参数的行数,得到第一填充矩阵的行数,将第一分块矩阵的列数乘以DMA分割矩阵的行列参数的列数,并减去第一矩阵的行列参数的列数,得到第一填充矩阵的列数。
举例说明,填充矩阵用AF[mfa,nfa]表示,mfa和nfa分别表示行数和列数,则分块矩阵A’中的小矩阵分割块的行填充数和列填充数计算如下:
mfa=ms*ceil(ma/ms)-ma=16*32-511=1
nfa=ns*ceil(na/ns)-na=16*64-1022=2
得到第一填充矩阵AF的行数等1,第一填充矩阵AF的列数等于2,即得到第一填充矩阵AF[1,2]。
步骤S30,基于所述第二矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第二矩阵对应的第二分块矩阵的行列参数以及所述第二矩阵对应的第二填充矩阵;
在本实施例中,根据第二矩阵的行列参数以及DMA分割矩阵的行列参数可以确定第二分块矩阵的行列参数,以及第二矩阵对应的第二填充矩阵。需要说明的是,第二矩阵的行尾和列末在进行小矩阵分割时,需要进行行列元素的填充操做,以此需要确定填充矩阵的行列参数,其中,填充矩阵中的元素都为0。
具体地,步骤S30包括:
步骤S31,将所述第二行数除以所述DMA分割矩阵的行列参数中的行数,得到所述第二分块矩阵的行数;
步骤S32,将所述第二列数除以所述DMA分割矩阵的行列参数中的列数,得到所述第二分块矩阵的列数;
在本实施例中,根据第一矩阵的行列参数与分块小矩阵的行列参数之间的比例关系,计算出第一矩阵在行上和列上分别可以分割出的小矩阵数目。
具体地,为了描述方便,第一矩阵用B[mb,nb]表示,mb和nb分别表示行数和列数;DMA分割矩阵用S[ms,ns]表示,ms和ns分别表示行数和列数;第一分块矩阵用B’[mb’,nb’]表示,mb’和nb’分别表示行数和列数,第一分块矩阵B’是由矩阵B中的小矩阵块构成的矩阵,小矩阵块的大小与DMA分割矩阵的大小相同,则将第B的行列参数的行数除以所述DMA分割矩阵S的行列参数的行数,并将商向上取整数,得到所述第二分块矩阵B’的行数,将第二矩阵B的行列参数的列数除以DMA分割矩阵S的行列参数的列数,并将商向上取整数,得到第二分块矩阵B’的列数。举例说明,第二分块矩阵A'的行列参数的计算过程,例如B[1022,909]、S[16,16],ceil()表示向上取整,则计算如下,得到第二分块矩阵B’的行列参数如下:
mb'=ceil(mb/ms)=ceil(1022/16)=64;
nb'=ceil(nb/ns)=ceil(909/16)=57;
计算得到:第二分块矩阵B’的行数等64,第二分块矩阵B’的列数等于57,即得到第二分块矩阵B’[64,57]。
步骤S33,将所述第二分块矩阵的行数乘以所述DMA分割矩阵的行列参数中的行数,并减去所述第二行数,得到所述第二填充矩阵的行数;
步骤S34,将所述第二分块矩阵的列数乘以所述DMA分割矩阵的行列参数中的列数,并减去所述第二列数,得到所述第二填充矩阵的列数。
在本实施例中,分割到第二分块矩阵的行和列边沿时,对应的小矩阵块需要填充,需要进一步确定填充矩阵的行列参数,其中,填充矩阵中的元素都为0。
具体的,位于矩阵B'的行尾和列末的小矩阵分割块需要进行行列元素的填充操作,则将第二分块矩阵的行数乘以DMA分割矩阵的行列参数的行数,并减去第二矩阵的行列参数的行数,得到第二填充矩阵的行数,将第二分块矩阵的列数乘以DMA分割矩阵的行列参数的列数,并减去第二矩阵的行列参数的列数,得到第二填充矩阵的列数。
举例说明,填充矩阵用BF[mfa,nfa]表示,mfb和nfb分别表示行数和列数,则分块矩阵B’中的小矩阵分割块的行填充数和列填充数计算如下:
mfb=ms*ceil(mb/ms)-mb=16*64-1022=2
nfb=ns*ceil(nb/ns)-nb=16*57-909=3
得到第二填充矩阵BF的行数等2,第二填充矩阵BF的列数等于3,即得到第二填充矩阵BF[1,2]。
步骤S40,基于所述第一存储器地址、所述第一矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的第一DMA操作缓存区,且基于所述第二存储器地址、所述第二矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的第二DMA操作缓存区。
具体地,步骤S40包括:
步骤S41,基于所述第一存储器地址、所述第一矩阵的行列参数以及所述DMA分割矩阵的行列参数,计算所述第一分块矩阵中各个子矩阵的存储器地址;
在本实施例中,为了描述方便,继续以第一矩阵A[511,1022]、第二矩阵B[1022,909]和DMA分割矩阵S[16,16]为例,根据步骤20和步骤30计算得到第一分块矩阵A’[32,64],第一填充矩阵AF[1,2],第二分块矩阵B’[64,57]和第二填充矩阵BF[1,2]。第一矩阵A的存储器的首地址用addr_a,第一矩阵A的行数和列数分别用ma和na表示,第一分块矩阵A'的行数和列数分别用ma'和na'表示,第一填充矩阵的行数和列数参数分别用mfa和nfa表示,第一分块矩阵A’分割块中需要进行填充处理的小矩阵分割块的编号,用afill_index表示。a-index的取值范围为1到ma'*nb'*na';满足a-index/ma为整数的所有a-index的取值即为afill_index的取值集合,则a-index取值范围均为1、2、3,......,116736,afill_index的取值集合为64,128,192,......,116736。
进一步地,计算第一分块矩阵A'和第二分块矩阵B'中小矩阵分割块的循环体分割方式和循环体执行次数,A'矩阵中的一个元素即对应一个小矩阵分割块,A'矩阵的行数代表了分块循环体的个数,A'矩阵的列数代表了一个分块循环体中包含的小矩阵分块的个数,B'矩阵的列数代表了A'矩阵一个分块循环体执行的循环次数;A'矩阵的一行与B'矩阵的一列对应相乘之后再相加即得到运算结果矩阵的一个小矩阵块;B'矩阵中所有元素是一个分块循环体,A'矩阵的行数代表了B'矩阵分块循环体循环的次数;对于第一矩阵A[511,1022],以16行元素为一个行组,总共分为64个行组,每个行组内包含64个小矩阵块,每个小矩阵块均为16x16的小矩阵,对于矩阵B[1022,909],以16列元素为一个列组,共分为57个列组,每个列组内含有64个小矩阵块,每个小矩阵块均为16x16的小矩阵,由于大矩阵A与大矩阵B相乘时,是矩
阵A的行组元素与矩阵B的列组元素对应相乘相加得到矩阵C的一个行组元素,对应矩阵A'[32,64]和矩阵B'[64,57],C'=A'*B',可知C'[32,57];由A'的一行中的64个分块与B'的一列中的64个分块一一对应相乘,然后将结果相加得到矩阵C'的一个元素,即一个分块结果,由此可知,对应C'中每一个结果元素都需要矩阵A'中每一行的元素循环分割输出与B'中每一列的元素分别进行乘加处理,这种循环关系通过三组参数进行表达,参数a1表示矩阵A一个循环体内需要分割的小矩阵块的个数,参数a2表示矩阵A一个循环体需要循环的次数,参数a3表示矩阵A包含的循环体的个数,参数b1表示矩阵B一个循环体内需要分割的小矩阵块的个数,参数b2表示矩阵B一个循环体需要循环的次数,参数b3表示矩阵B包含的循环体的个数;本例中,a1=64,a2=57,a3=32,b1=64,b2=1,b3=32;
A'[32,64],可得到大矩阵A有32个分块循环体,计算每一个循环体中首个小矩阵分块的首元素的存储器地址;DMA启动后,执行的第一个循环体的第一个分块的首地址是矩阵A的首元素存储器地址addr_a,第一个分割循环体的第二个分块的首元素地址是上个分块首元素地址加上一个偏移量,该偏移量对应ns个矩阵元素占据的存储器地址空间,依次类推,当第一次循环的最后一个分块分割完成后,分块地址重新回到本分块循环体首个分块的地址上,直到本循环体的所有循环执行结束,然后开始一个新的循环体,新的循环体中首次循环的首个分块的存储器地址是在上个循环体首个分块的存储器地址上偏移ms*na个元素对应的地址空间;A’矩阵32个循环体的首元素对应的地址和每个循环体内64个小矩阵分块首元素对应的地址,地址信息的个数为32*64=2048个分块地址;A’矩阵的32个循环体地址分别为:
addr_a,addr_a+1022*16,addr_a+1022*16*2,......,addr_a+1022*16*30。在一个循环体内各小矩阵块首元素对应的存储器地址为循环体地址加上小矩阵块的偏移量16,关于A’矩阵的输出的所有地址为:
addr_a,addr_a+16,addr_a+16*2,......,addr_a+16*62,addr_a+1022*16,addr_a+1022*16+16,addr_a+1022*16+16*2,......,addr_a+1022*16+16*62,......,addr_a+1022*16*30,addr_a+1022*16*30+16,addr_a+1022*16*30+16*2,......,addr_a+1022*16*30+16*62,共计2048个地址。
步骤S42,基于所述第一分块矩阵中各个子矩阵的存储器地址获取第一分块矩阵对应的各个子矩阵,并基于所述第一填充矩阵的行列参数对获取到的第一分块矩阵对应的各个子矩阵中的待填充矩阵进行填充,保存所述第一分块矩阵的子矩阵至预设的第一DMA操作缓存区;
在本实施例中,根据步骤S41计算出的各个子矩阵的存储地址,一次将子矩阵的全部元素读取出来,然后判断当前的子矩阵是否是需要进行填充,如果当前是需要进行填充的子矩阵,则利用第一填充矩阵对该待填充子矩阵进行填充。
进一步地,将读取出来的各个子矩阵按预设的存储顺序保存到预设的第一DMA操作缓存区,这些子矩阵中包括已经进行填充的子矩阵,第一DMA操作缓存区中所保存的各个子矩阵即为第一分块矩阵。
步骤S43,基于所述第二存储器地址、所述第二矩阵的行列参数以及所述DMA分割矩阵的行列参数,计算所述第二分块矩阵中各个子矩阵的存储器地址;
在本实施例中,与步骤S41的原理相同,由此可知,对应C'中每一个结果元素都需要矩阵A'中每一行的元素循环分割输出与B'中每一列的元素分别进行乘加处理,这种循环关系通过三组参数进行表达,参数a1表示矩阵A一个循环体内需要分割的小矩阵块的个数,参数a2表示矩阵A一个循环体需要循环的次数,参数a3表示矩阵A包含的循环体的个数,参数b1表示矩阵B一个循环体内需要分割的小矩阵块的个数,参数b2表示矩阵B一个循环体需要循环的次数,参数b3表示矩阵B包含的循环体的个数;本例中,a1=64,a2=57,a3=32,b1=64,b2=1,b3=32;
计算矩阵B’中小矩阵块一个分块循环体中首个分块的首元素对应的存储器地址,与矩阵A的分割机制类似,只是计算地址偏移量的差异,B’矩阵中的一个循环体包含了整个B'矩阵中的所有元素,而A矩阵中的一个循环体仅包含了A'矩阵中na'元素;B’矩阵32个循环体的首元素对应的地址和每个循环体内64个小矩阵分块首元素对应的地址,共输出地址信息的个数为32*64=2048个分块地址;B’矩阵的32个循环体地址分别为:
addr_b,addr_b+909*16,addr_a+909*16*2,......,addr_a+909*16*30,在一个循环体内各小矩阵块首元素对应的存储器地址为循环体地址加上小矩阵块的偏移量16,关于B’矩阵的输出的所有地址也是2048个:addr_b,addr_b+16,addr_b+16*2,......,addr_b+16*62,addr_b+909*16,addr_b+909*16+16,......,addr_b+909*16+16*62,addr_a+909*16*30,addr_a+909*16*30+16,......,addr_b+909*16+16*62;
步骤S44,基于所述第二分块矩阵中各个子矩阵的存储器地址获取第二分块矩阵对应的各个子矩阵,并基于所述第二填充矩阵的行列参数对获取到的第二分块矩阵对应的各个子矩阵中的待填充矩阵进行填充,保存所述第二分块矩阵的子矩阵至预设的第二DMA操作缓存区;
在本实施例中,根据计算出的各个子矩阵的存储地址,一次将子矩阵的全部元素读取出来,然后判断当前的子矩阵是否是需要进行填充,如果当前是需要进行填充的子矩阵,则利用第二填充矩阵对该待填充子矩阵进行填充。
进一步地,将读取出来的各个子矩阵按预设的存储顺序保存到预设的第二DMA操作缓存区,这些子矩阵中包括已经进行填充的子矩阵,第二DMA操作缓存区中所保存的各个子矩阵即为第二分块矩阵。
本实施例提出的矩阵预处理方法,在接收到矩阵预处理指令时,基于所述预处理指令获取第一矩阵的行列参数、所述第一矩阵的第一存储器地址、第二矩阵的行列参数、所述第二矩阵的第二存储器地址以及DMA分割矩阵的行列参数,而后基于所述第一矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第一矩阵对应的第一分块矩阵的行列参数以及所述第一矩阵对应的第一填充矩阵,接下来基于所述第二矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第二矩阵对应的第二分块矩阵的行列参数以及所述第二矩阵对应的第二填充矩阵,最后基于所述第一存储器地址、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的DMA操作缓存区,且基于所述第二存储器地址、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的DMA操作缓存区。灵活的将已有的矩阵运算资源作为一种矩阵基本运算单元,高效、方便快捷的实现大矩阵乘加或转置等运算功能,在保证了矩阵运算的实现性能和运算效率的同时,解决了矩阵运算处理的灵活性、通用性、可扩展性和可复用性等问题。
基于第一实施例,参照图4,提出本发明矩阵预处理方法的第二实施例,在本实施例中,步骤S40之后,还包括:
步骤S50,基于所述预处理指令获取运算类型,其中,所述运算类型为矩阵乘或矩阵加;
步骤S60,基于预设矩阵计算规则以及所述运算类型,基于预设规则对所述第一分块矩阵和所述第二分块矩阵执行矩阵运算得到第三分块矩阵;
步骤S70,基于所述第一矩阵的行列参数和所述第二矩阵的行列参数删除所述第三分块矩阵中的填充元素后生成第三矩阵。
在本实施例中,矩阵运算主要包括阵乘或矩阵加,以矩阵乘为例,进行说明。以第一矩阵A[511,1022]、第二矩阵B[1022,909]和DMA分割矩阵S[16,16]为例,计算得到第一分块矩阵A’[32,64],第一填充矩阵AF[1,2],第二分块矩阵B’[64,57]和第二填充矩阵BF[1,2]。第一矩阵A的存储器的首地址用addr_a,第一矩阵A的行数和列数分别用ma和na表示,第一分块矩阵A'的行数和列数分别用ma'和na'表示,第一填充矩阵的行数和列数参数分别用mfa和nfa表示,第一分块矩阵A’分割块中需要进行填充处理的小矩阵分割块的编号,用afill_index表示。a-index的取值范围为1到ma'*nb'*na';满足a-index/ma为整数的所有a-index的取值即为afill_index的取值集合,则a-index取值范围均为1、2、3,......,116736,afill_index的取值集合为64,128,192,......,116736。
进一步地,计算第一分块矩阵A'和第二分块矩阵B'中小矩阵分割块的循环体分割方式和循环体执行次数,A'矩阵中的一个元素即对应一个小矩阵分割块,A'矩阵的行数代表了分块循环体的个数,A'矩阵的列数代表了一个分块循环体中包含的小矩阵分块的个数,B'矩阵的列数代表了A'矩阵一个分块循环体执行的循环次数;A'矩阵的一行与B'矩阵的一列对应相乘之后再相加即得到运算结果矩阵的一个小矩阵块;B'矩阵中所有元素是一个分块循环体,A'矩阵的行数代表了B'矩阵分块循环体循环的次数;对于第一矩阵A[511,1022],以16行元素为一个行组,总共分为64个行组,每个行组内包含64个小矩阵块,每个小矩阵块均为16x16的小矩阵,对于第二矩阵B[1022,909],以16列元素为一个列组,共分为57个列组,每个列组内含有64个小矩阵块,
每个小矩阵块均为16x16的小矩阵,由于大矩阵A与大矩阵B相乘时,是矩阵A的行组元素与矩阵B的列组元素对应相乘相加得到矩阵C的一个行组元
素,对应矩阵A'[32,64]和矩阵B'[64,57],C'=A'*B',可知C'[32,57];由A'的一行中的64个分块与B'的一列中的64个分块一一对应相乘,然后将结果相加得到矩阵C'的一个元素,即一个分块结果;
由此可知,对应C'中每一个结果元素都需要矩阵A'中每一行的元素循环分割输出与B'中每一列的元素分别进行乘加处理。
进一步地,矩阵C'是第一分块矩阵A’和第二分块矩阵B’的乘积,是进行过矩阵填充的,因此,要得到矩阵C,需要将矩阵C’中的填充元素删除。因为矩阵A’和矩阵B’都是在边缘填充,故只保留矩阵C’中与矩阵C相同的行列数即可。例如,第一矩阵A[511,1022],第二矩阵B[1022,909],则矩阵C[511,909]的行数为511,列为909,矩阵C'[32,57]对应的行数为512,列数为912,故,在矩阵C'[32,57]中只保留前511行和前909列,删除第512行和第910~912列的元素。
本实施例提出的矩阵预处理方法,基于所述预处理指令获取运算类型,其中,所述运算类型为矩阵乘或矩阵加,而后基于预设矩阵计算规则以及所述运算类型,对所述第一分块矩阵和所述第二分块矩阵执行矩阵运算得到第三分块矩阵,接下来基于所述第一矩阵的行列参数和所述第二矩阵的行列参数删除所述第三分块矩阵中的填充元素后生成第三矩阵,进而解决了矩阵运算处理的灵活性、通用性、可扩展性和可复用性等问题。
本发明进一步提供一种矩阵预处理装置,参照图4,图4为本发明矩阵预处理装置实施例的功能模块示意图。
在本实施例中,该矩阵预处理装置包括:
第一获取模块10,在接收到矩阵预处理指令时,基于所述预处理指令获取第一矩阵的行列参数、所述第一矩阵的第一存储器地址、第二矩阵的行列参数、所述第二矩阵的第二存储器地址以及DMA分割矩阵的行列参数;
第一确定模块20,基于所述第一矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第一矩阵对应的第一分块矩阵的行列参数以及所述第一矩阵对应的第一填充矩阵;
第二确定模块30,基于所述第二矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第二矩阵对应的第二分块矩阵的行列参数以及所述第二矩阵对应的第二填充矩阵;
处理模块40,基于所述第一存储器地址、所述第一矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的第一DMA操作缓存区,且基于所述第二存储器地址、所述第二矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的第二DMA操作缓存区。
进一步地,所述第一确定模块20还用于:
将所述第一行数除以所述DMA分割矩阵的行列参数中的行数,得到所述第一分块矩阵的行数;
将所述第一列数除以所述DMA分割矩阵的行列参数中的列数,得到所述第一分块矩阵的列数;
将所述第一分块矩阵的行数乘以所述DMA分割矩阵的行列参数中的行数,并减去所述第一行数,得到所述第一填充矩阵的行数;
将所述第一分块矩阵的列数乘以所述DMA分割矩阵的行列参数中的列数,并减去所述第一列数,得到所述第一填充矩阵的列数。
进一步地,所述第二确定模块30还用于:
将所述第二行数除以所述DMA分割矩阵的行列参数中的行数,得到所述第二分块矩阵的行数;
将所述第二列数除以所述DMA分割矩阵的行列参数中的列数,得到所述第二分块矩阵的列数;
将所述第二分块矩阵的行数乘以所述DMA分割矩阵的行列参数中的行数,并减去所述第二行数,得到所述第二填充矩阵的行数;
将所述第二分块矩阵的列数乘以所述DMA分割矩阵的行列参数中的列数,并减去所述第二列数,得到所述第二填充矩阵的列数。
进一步地,所述处理模块40还用于:
基于所述第一存储器地址、所述第一矩阵的行列参数以及所述DMA分割矩阵的行列参数,计算所述第一分块矩阵中各个子矩阵的存储器地址;
基于所述第一分块矩阵中各个子矩阵的存储器地址获取第一分块矩阵对应的各个子矩阵,并基于所述第一填充矩阵的行列参数对获取到的第一分块矩阵对应的各个子矩阵中的待填充矩阵进行填充,保存所述第一分块矩阵的子矩阵至预设的第一DMA操作缓存区。
进一步地,所述处理模块40还用于:
基于所述第二存储器地址、所述第二矩阵的行列参数以及所述DMA分割矩阵的行列参数,计算所述第二分块矩阵中各个子矩阵的存储器地址;
基于所述第二分块矩阵中各个子矩阵的存储器地址获取第二分块矩阵对应的各个子矩阵,并基于所述第二填充矩阵的行列参数对获取到的第二分块矩阵对应的各个子矩阵中的待填充矩阵进行填充,保存所述第二分块矩阵的子矩阵至预设的第二DMA操作缓存区。
进一步地,所述矩阵预处理装置还包括:
第二获取模块,基于所述预处理指令获取运算类型,其中,所述运算类型为矩阵乘或矩阵加;
计算单元,基于预设矩阵计算规则以及所述运算类型,基于预设规则对所述第一分块矩阵和所述第二分块矩阵执行矩阵运算得到第三分块矩阵;
进一步地,所述矩阵预处理装置还包括:
调整单元,基于所述第一矩阵的行列参数和所述第二矩阵的行列参数删除所述第三分块矩阵中的填充元素后生成第三矩阵。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种矩阵预处理方法,其特征在于,所述矩阵预处理方法包括以下步骤:
在接收到矩阵预处理指令时,基于所述预处理指令获取第一矩阵的行列参数、所述第一矩阵的第一存储器地址、第二矩阵的行列参数、所述第二矩阵的第二存储器地址以及DMA分割矩阵的行列参数;
基于所述第一矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第一矩阵对应的第一分块矩阵的行列参数以及所述第一矩阵对应的第一填充矩阵;
基于所述第二矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第二矩阵对应的第二分块矩阵的行列参数以及所述第二矩阵对应的第二填充矩阵;
基于所述第一存储器地址、所述第一矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的第一DMA操作缓存区,且基于所述第二存储器地址、所述第二矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的第二DMA操作缓存区。
2.如权利要求1所述的矩阵预处理方法,其特征在于,所述第一矩阵的行列参数包括第一行数和第一列数,所述基于所述第一矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第一矩阵对应的第一分块矩阵的行列参数以及所述第一矩阵对应的第一填充矩阵的步骤包括:
将所述第一行数除以所述DMA分割矩阵的行列参数中的行数,得到所述第一分块矩阵的行数;
将所述第一列数除以所述DMA分割矩阵的行列参数中的列数,得到所述第一分块矩阵的列数;
将所述第一分块矩阵的行数乘以所述DMA分割矩阵的行列参数中的行数,并减去所述第一行数,得到所述第一填充矩阵的行数;
将所述第一分块矩阵的列数乘以所述DMA分割矩阵的行列参数中的列数,并减去所述第一列数,得到所述第一填充矩阵的列数。
3.如权利要求1所述的矩阵预处理方法,其特征在于,所述第二矩阵的行列参数包括第二行数和第二列数,所述基于所述第二矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第二矩阵对应的第二分块矩阵的行列参数以及所述第二矩阵对应的第二填充矩阵的步骤包括:
将所述第二行数除以所述DMA分割矩阵的行列参数中的行数,得到所述第二分块矩阵的行数;
将所述第二列数除以所述DMA分割矩阵的行列参数中的列数,得到所述第二分块矩阵的列数;
将所述第二分块矩阵的行数乘以所述DMA分割矩阵的行列参数中的行数,并减去所述第二行数,得到所述第二填充矩阵的行数;
将所述第二分块矩阵的列数乘以所述DMA分割矩阵的行列参数中的列数,并减去所述第二列数,得到所述第二填充矩阵的列数。
4.如权利要求1所述的矩阵预处理方法,其特征在于,所述基于所述第一存储器地址、所述第一矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的第一DMA操作缓存区的步骤包括:
基于所述第一存储器地址、所述第一矩阵的行列参数以及所述DMA分割矩阵的行列参数,计算所述第一分块矩阵中各个子矩阵的存储器地址;
基于所述第一分块矩阵中各个子矩阵的存储器地址获取第一分块矩阵对应的各个子矩阵,并基于所述第一填充矩阵的行列参数对获取到的第一分块矩阵对应的各个子矩阵中的待填充矩阵进行填充,保存所述第一分块矩阵的子矩阵至预设的第一DMA操作缓存区。
5.如权利要求1所述的矩阵预处理方法,其特征在于,所述基于所述第二存储器地址、所述第二矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的第二DMA操作缓存区的步骤还包括:
基于所述第二存储器地址、所述第二矩阵的行列参数以及所述DMA分割矩阵的行列参数,计算所述第二分块矩阵中各个子矩阵的存储器地址;
基于所述第二分块矩阵中各个子矩阵的存储器地址获取第二分块矩阵对应的各个子矩阵,并基于所述第二填充矩阵的行列参数对获取到的第二分块矩阵对应的各个子矩阵中的待填充矩阵进行填充,保存所述第二分块矩阵的子矩阵至预设的第二DMA操作缓存区。
6.如权利要求1所述的矩阵预处理方法,其特征在于,所述基于所述第一存储器地址、所述第一矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的第一DMA操作缓存区,且基于所述第二存储器地址、所述第二矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的第二DMA操作缓存区的步骤之后,还包括:
基于所述预处理指令获取运算类型,其中,所述运算类型为矩阵乘或矩阵加;
基于预设矩阵计算规则以及所述运算类型,基于预设规则对所述第一分块矩阵和所述第二分块矩阵执行矩阵运算得到第三分块矩阵。
7.如权利要求1所述的矩阵预处理方法,其特征在于,所述基于预设矩阵计算规则以及所述运算类型,对所述第一分块矩阵和所述第二分块矩阵执行矩阵运算得到第三分块矩阵的步骤之后,还包括:
基于所述第一矩阵的行列参数和所述第二矩阵的行列参数删除所述第三分块矩阵中的填充元素后生成第三矩阵。
8.一种矩阵预处理装置,其特征在于,所述矩阵预处理装置包括:
获取模块,在接收到矩阵预处理指令时,基于所述预处理指令获取第一矩阵的行列参数、所述第一矩阵的第一存储器地址、第二矩阵的行列参数、所述第二矩阵的第二存储器地址以及DMA分割矩阵的行列参数;
第一确定模块,基于所述第一矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第一矩阵对应的第一分块矩阵的行列参数以及所述第一矩阵对应的第一填充矩阵;
第二确定模块,基于所述第二矩阵的行列参数和所述DMA分割矩阵的行列参数,确定所述第二矩阵对应的第二分块矩阵的行列参数以及所述第二矩阵对应的第二填充矩阵;
处理模块,基于所述第一存储器地址、所述第一矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第一填充矩阵的行列参数,生成所述第一分块矩阵并保存至预设的第一DMA操作缓存区,且基于所述第二存储器地址、所述第二矩阵的行列参数、所述DMA分割矩阵的行列参数、所述第二填充矩阵的行列参数,生成所述第二分块矩阵并保存至所述预设的第二DMA操作缓存区。
9.一种终端,其特征在于,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的矩阵预处理程序,所述矩阵预处理程序被所述处理器执行时实现如权利要求1至7中任一项所述的矩阵预处理方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有所述矩阵预处理程序,所述矩阵预处理程序被处理器执行时实现如权利要求1至7中任一项所述的矩阵预处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910659596.9A CN110390075B (zh) | 2019-07-19 | 2019-07-19 | 矩阵预处理方法、装置、终端及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910659596.9A CN110390075B (zh) | 2019-07-19 | 2019-07-19 | 矩阵预处理方法、装置、终端及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110390075A true CN110390075A (zh) | 2019-10-29 |
CN110390075B CN110390075B (zh) | 2023-09-05 |
Family
ID=68286896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910659596.9A Active CN110390075B (zh) | 2019-07-19 | 2019-07-19 | 矩阵预处理方法、装置、终端及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110390075B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176582A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 矩阵存储方法、矩阵访问方法、装置和电子设备 |
CN112069460A (zh) * | 2020-09-18 | 2020-12-11 | Oppo广东移动通信有限公司 | 数据处理方法、装置以及电子设备 |
CN113496008A (zh) * | 2021-09-06 | 2021-10-12 | 北京壁仞科技开发有限公司 | 用于执行矩阵计算的方法、计算设备和计算机存储介质 |
CN114328315A (zh) * | 2021-11-22 | 2022-04-12 | 北京智芯微电子科技有限公司 | 基于dma的数据预处理方法、dma部件及芯片结构 |
CN115248664A (zh) * | 2022-09-22 | 2022-10-28 | 北京东远润兴科技有限公司 | 数据的读写方法、装置、设备及存储介质 |
CN117420965A (zh) * | 2023-12-18 | 2024-01-19 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100318758A1 (en) * | 2009-06-16 | 2010-12-16 | International Business Machines Corporation | Efficient transfer of matrices for matrix based operations |
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
US20190079903A1 (en) * | 2017-09-14 | 2019-03-14 | Qualcomm Incorporated | Providing matrix multiplication using vector registers in processor-based devices |
-
2019
- 2019-07-19 CN CN201910659596.9A patent/CN110390075B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100318758A1 (en) * | 2009-06-16 | 2010-12-16 | International Business Machines Corporation | Efficient transfer of matrices for matrix based operations |
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
US20190079903A1 (en) * | 2017-09-14 | 2019-03-14 | Qualcomm Incorporated | Providing matrix multiplication using vector registers in processor-based devices |
Non-Patent Citations (1)
Title |
---|
刘仲等: "支持原位计算的高效三角矩阵乘法向量化方法", 《国防科技大学学报》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176582A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 矩阵存储方法、矩阵访问方法、装置和电子设备 |
KR20210086937A (ko) * | 2019-12-31 | 2021-07-09 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치 및 전자 기기 |
KR102359347B1 (ko) * | 2019-12-31 | 2022-02-07 | 쿤룬신 테크놀로지(베이징) 캄파니 리미티드 | 매트릭스 저장 방법, 매트릭스 액세스 방법, 장치 및 전자 기기 |
US11635904B2 (en) | 2019-12-31 | 2023-04-25 | Kunlunxin Technology (Beijing) Company Limited | Matrix storage method, matrix access method, apparatus and electronic device |
CN112069460A (zh) * | 2020-09-18 | 2020-12-11 | Oppo广东移动通信有限公司 | 数据处理方法、装置以及电子设备 |
CN113496008A (zh) * | 2021-09-06 | 2021-10-12 | 北京壁仞科技开发有限公司 | 用于执行矩阵计算的方法、计算设备和计算机存储介质 |
CN113496008B (zh) * | 2021-09-06 | 2021-12-03 | 北京壁仞科技开发有限公司 | 用于执行矩阵计算的方法、计算设备和计算机存储介质 |
CN114328315A (zh) * | 2021-11-22 | 2022-04-12 | 北京智芯微电子科技有限公司 | 基于dma的数据预处理方法、dma部件及芯片结构 |
CN115248664A (zh) * | 2022-09-22 | 2022-10-28 | 北京东远润兴科技有限公司 | 数据的读写方法、装置、设备及存储介质 |
CN117420965A (zh) * | 2023-12-18 | 2024-01-19 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法 |
CN117420965B (zh) * | 2023-12-18 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110390075B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110390075A (zh) | 矩阵预处理方法、装置、终端及可读存储介质 | |
CN111199273B (zh) | 卷积计算方法、装置、设备及存储介质 | |
CN109767000A (zh) | 基于Winograd算法的神经网络卷积方法及装置 | |
CN113313243A (zh) | 神经网络加速器的确定方法、装置、设备以及存储介质 | |
CN114003198B (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN110377876A (zh) | 矩阵乘法运算方法、装置及计算机可读存储介质 | |
CN110633785A (zh) | 一种卷积神经网络的计算方法及系统 | |
CN111738423A (zh) | 神经网络模型的编译方法、装置、存储介质及电子设备 | |
CN111899149B (zh) | 基于算子融合的图像处理方法和装置、存储介质 | |
CN110232665B (zh) | 最大池化方法、装置、计算机设备及存储介质 | |
CN111191778B (zh) | 深度学习网络处理方法、装置与编译器 | |
CN110689114B (zh) | 网络节点处理方法、装置、存储介质及电子设备 | |
CN106371808B (zh) | 一种并行计算的方法及终端 | |
CN116991560A (zh) | 针对语言模型的并行调度方法、装置、设备及存储介质 | |
CN103455518A (zh) | 一种数据处理方法及装置 | |
CN114461978A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN116954932A (zh) | 空气质量模式运行方法、装置、存储介质及电子设备 | |
CN115938494B (zh) | 气相化学模块的dcu加速计算方法、设备及存储介质 | |
CN117473949A (zh) | 表单动态布局方法及系统 | |
CN115293978A (zh) | 卷积运算电路和方法、图像处理设备 | |
CN109308327A (zh) | 基于子图模型兼容点中心模型的图计算方法装置介质设备 | |
CN114546484A (zh) | 基于微架构处理器的深度卷积优化方法、系统及装置 | |
CN116781484B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN106569778B (zh) | 一种数据处理的方法及电子设备 | |
CN117724851B (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 |