CN109766515B - 矩阵分解处理装置及方法 - Google Patents
矩阵分解处理装置及方法 Download PDFInfo
- Publication number
- CN109766515B CN109766515B CN201811599095.8A CN201811599095A CN109766515B CN 109766515 B CN109766515 B CN 109766515B CN 201811599095 A CN201811599095 A CN 201811599095A CN 109766515 B CN109766515 B CN 109766515B
- Authority
- CN
- China
- Prior art keywords
- data
- data part
- processing module
- dependent
- current round
- 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
Images
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
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种矩阵分解处理装置及方法,该装置中的拆分模块根据预设拆分规则,将原始矩阵数据拆分为多个数据部分;调用模块针对多个数据部分中的每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对数据部分进行运算处理;第一处理模块至第四处理模块根据各自的运算规则,利用与数据部分具有依赖关系的依赖数据部分和/或数据部分,对数据部分进行运算处理,得到数据部分对应的运算结果,并对数据部分进行更新处理;结果模块依据所有数据部分对应的运算结果,得到对应的下三角矩阵数据。该方案适用于对各种行数和列数的矩阵进行分解处理,具有较高的复用性,并提高了矩阵分解处理效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种矩阵分解处理装置及方法。
背景技术
在卷积等应用领域中都会涉及到对矩阵进行分解处理。以利用Cholesky分解算法对矩阵进行分解处理为例,Cholesky分解算法又称平方根法,将正定矩阵A分解为下三角矩阵L、对角线均为正数的对角矩阵D以及下三角矩阵L的转置矩阵的乘积。在矩阵分解过程中,所有的数值运算都要拆解成基本运算,并利用内部存储(如寄存器)来存储运算所涉及的数值。然而当待分解处理的矩阵的行数和列数较大时,运算会涉及到大量的数值,内部存储的容量将无法满足存储需求,还需要外部存储进行协同存储,那么则需要与外部存储进行数据搬运(例如数据写入和数据读出),使得矩阵分解处理效率较低。另外,在现有技术中为矩阵分解处理所开发的代码的复用性较低,当待分解处理的矩阵的行数和列数发生变化时,都需要重新开发代码,导致所投入的人力成本和时间成本较高。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的矩阵分解处理装置及方法。
根据本发明的一个方面,提供了一种矩阵分解处理装置,该装置包括:
存储模块,用于存储待分解处理的原始矩阵数据;
拆分模块,用于从存储模块中读取原始矩阵数据,根据预设拆分规则,将所读取的原始矩阵数据拆分为多个数据部分,并将多个数据部分存储至存储模块中;
调用模块,用于针对多个数据部分中的每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对数据部分进行运算处理;
第一处理模块、第二处理模块、第三处理模块和第四处理模块,用于根据各自的运算规则,利用与数据部分具有依赖关系的依赖数据部分和/或数据部分,对数据部分进行运算处理,得到数据部分对应的运算结果;根据数据部分对应的运算结果,对数据部分进行更新处理;
结果模块,用于依据所有数据部分对应的运算结果,得到原始矩阵数据对应的下三角矩阵数据。
根据本发明的另一方面,提供了一种矩阵分解处理方法,该方法包括:
存储待分解处理的原始矩阵数据;
读取所存储的原始矩阵数据,根据预设拆分规则,将所读取的原始矩阵数据拆分为多个数据部分,并对多个数据部分进行存储;
针对多个数据部分中的每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对数据部分进行运算处理;
根据第一处理模块、第二处理模块、第三处理模块和第四处理模块各自的运算规则,利用与数据部分具有依赖关系的依赖数据部分和/或数据部分,对数据部分进行运算处理,得到数据部分对应的运算结果;根据数据部分对应的运算结果,对数据部分进行更新处理;
依据所有数据部分对应的运算结果,得到原始矩阵数据对应的下三角矩阵数据。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述矩阵分解处理方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述矩阵分解处理方法对应的操作。
根据本发明提供的技术方案,通过拆分将待分解处理的原始矩阵数据拆分为多个数据部分,并针对每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对数据部分进行运算处理,从而得到原始矩阵数据对应的下三角矩阵数据。本发明提供的技术方案能够适用于对各种行数和列数的矩阵进行分解处理,具有较高的复用性,有助于减少所投入的人力成本和时间成本;并且根据分解算法的具体运算方法对各个处理模块进行设置,通过调用各个处理模块来完成对拆分的数据部分的运算处理,有效地减少了与外部存储的数据搬运,提高了矩阵分解处理效率;另外,还可根据运算资源并行地调用各个处理模块,各个处理模块也可并行地对多个数据部分进行运算处理,使得运算资源得到充分利用,减少了冗余计算,避免了运算资源的浪费,进一步提高了矩阵分解处理效率,优化了矩阵分解处理方式。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的矩阵分解处理装置的结构框图;
图2a示出了拆分后所得到的多个数据部分的排布示意图一;
图2b示出了拆分后所得到的多个数据部分的排布示意图二;
图2c示出了拆分后所得到的多个数据部分的排布示意图三;
图3a示出了图2a对应的调用顺序示意图;
图3b示出了图2b对应的调用顺序示意图;
图3c示出了图2c对应的调用顺序示意图;
图4a示出了图2c中的数据部分1中各个元素数据的排布示意图;
图4b示出了图2c中的数据部分1和数据部分2中各个元素数据的排布示意图;
图4c示出了图2c中的数据部分2和数据部分3中各个元素数据的排布示意图;
图4d示出了图2c中的数据部分2、数据部分3、数据部分4和数据部分5中各个元素数据的排布示意图;
图5示出了根据本发明一个实施例的矩阵分解处理方法的流程示意图;
图6示出了根据本发明实施例的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的矩阵分解处理装置的结构框图,如图1所示,该装置包括:存储模块101、拆分模块102、调用模块103、第一处理模块104、第二处理模块105、第三处理模块106、第四处理模块107和结果模块108。
存储模块101用于:存储待分解处理的原始矩阵数据。
为了便于根据预设分解算法对待分解处理的原始矩阵数据进行分解处理,存储模块101需要对待分解处理的原始矩阵数据进行存储,其中,待分解处理的原始矩阵数据包括:待分解处理的矩阵的所有的元素数据。本领域技术人员可根据实际需要选择预设分解算法,此处不做限定。
例如,可选择Cholesky分解算法作为预设分解算法,那么待分解处理的原始矩阵数据包括:正定矩阵的所有的元素数据。具体地,Cholesky分解算法将正定矩阵A分解为下三角矩阵L、对角线均为正数的对角矩阵D以及下三角矩阵L的转置矩阵的乘积,其中,正定矩阵A的分解形式可用公式(1)进行表示。
A=LDLT 公式(1)
本发明对于正定矩阵的行数和列数不做具体限定。本领域技术人员可根据实际需要来确定正定矩阵的行数和列数,例如正定矩阵可以为16×16的正定矩阵,也可以为32×32的正定矩阵、64×64的正定矩阵等。
拆分模块102用于:从存储模块101中读取原始矩阵数据,根据预设拆分规则,将所读取的原始矩阵数据拆分为多个数据部分,并将多个数据部分存储至存储模块101中。
当需要对原始矩阵数据进行分解处理时,拆分模块102从存储模块101中读取原始矩阵数据,然后根据预设拆分规则,将所读取的原始矩阵数据拆分为多个数据部分,并将多个数据部分存储至存储模块101中,以便通过调用第一处理模块104至第四处理模块107的方式并行地对多个数据部分进行运算处理,提高了矩阵分解处理效率。本领域技术人员可根据实际需要对预设拆分规则进行设置,此处不做限定。例如,预设拆分规则可为按照原始矩阵数据对应的主对角线以及基准拆分单元对原始矩阵数据进行拆分,那么拆分模块102根据预设拆分规则,按照原始矩阵数据对应的对角线以及基准拆分单元,将所读取的原始矩阵数据拆分为多个数据部分。
作为一个具体实施方式,假设原始矩阵数据为n×n的正定矩阵的所有的元素数据,基准拆分单元的大小为(n/d)×(n/d)矩阵对应的大小,其中,d为预设数值且n/d所得到的数值为正整数,那么先将原始矩阵数据按照基准拆分单元进行拆分,拆分为多个外部轮廓为方形的中间拆分数据部分,然后再沿着原始矩阵数据的主对角线对多个中间拆分数据部分进行拆分,具体为将位于主对角线上的多个中间拆分数据部分拆分为外部轮廓为三角形的中间拆分数据部分,然后选取位于主对角线左侧的多个中间拆分数据部分作为多个数据部分。
若基准拆分单元的大小为8×8矩阵对应的大小,那么对于原始矩阵数据为16×16的正定矩阵的所有的元素数据,拆分后所得到的多个数据部分可如图2a所示,拆分后得到3个数据部分,分别为数据部分1至数据部分3,其中,外部轮廓为三角形的数据部分包括数据部分1和数据部分3,外部轮廓为方形的数据部分包括数据部分2;对于原始矩阵数据为32×32的正定矩阵的所有的元素数据,拆分后所得到的多个数据部分可如图2b所示,拆分后得到10个数据部分,分别为数据部分1至数据部分10,其中,外部轮廓为三角形的数据部分包括数据部分1、数据部分3、数据部分6和数据部分10,其它的数据部分均为外部轮廓为方形的数据部分;对于原始矩阵数据为64×64的正定矩阵的所有的元素数据,拆分后所得到的多个数据部分可如图2c所示,拆分后得到36个数据部分,分别为数据部分1至数据部分36,其中,外部轮廓为三角形的数据部分包括数据部分1、数据部分3、数据部分6、数据部分10、数据部分15、数据部分21、数据部分28和数据部分36,其它的数据部分均为外部轮廓为方形的数据部分。各个数据部分包括原始矩阵数据中对应位置的多个元素数据。具体地,上述每个外部轮廓为方形的数据部分包括64个元素数据,上述每个外部轮廓为三角形的数据部分包括36个元素数据。
调用模块103用于:针对多个数据部分中的每一个数据部分,根据预设调用规则,调用第一处理模块104、第二处理模块105、第三处理模块106和/或第四处理模块107对数据部分进行运算处理。
其中,本发明根据预设分解算法以及多个数据部分之间的位置关系设置了预设调用规则以及4种处理模块,这4种处理模块分别为第一处理模块104、第二处理模块105、第三处理模块106和第四处理模块107。调用模块103分别与第一处理模块104、第二处理模块105、第三处理模块106、第四处理模块107相连接。针对多个数据部分中的每一个数据部分,调用模块103需要根据预设调用规则,确定处理该数据部分所需调用的处理模块以及调用处理模块的调用顺序,然后按照调用顺序,通过调用各个处理模块对该数据部分进行运算处理。
第一处理模块104、第二处理模块105、第三处理模块106和第四处理模块107用于:根据各自的运算规则,利用与数据部分具有依赖关系的依赖数据部分和/或数据部分,对数据部分进行运算处理,得到数据部分对应的运算结果;根据数据部分对应的运算结果,对数据部分进行更新处理。
第一处理模块104、第二处理模块105、第三处理模块106和第四处理模块107各自的运算规则是根据预设分解算法所设置的。以预设分解算法为Cholesky分解算法为例,根据Cholesky分解算法可知,对于一个n×n的正定矩阵A,其分解过程中主要采用3个公式(分别为下列的公式(2)至公式(4))进行运算。其中,该分解过程涉及3层循环运算。
具体地,在i从1至n的第一层循环过程中采用公式(2)进行运算;在每次第一层循环过程中,进行j从i+1至n的第二层循环过程,并在第二层循环过程中采用公式(3)进行运算;在每次第二层循环过程中,进行k从j至n的第三层循环过程,并在第三层循环过程中采用公式(4)进行运算。
li,i=1/ai,i 公式(2)
lj,i=aj,i×li,i 公式(3)
本发明根据上述预设分解算法的具体运算方法对第一处理模块104、第二处理模块105、第三处理模块106和第四处理模块107进行设置。第一处理模块104、第二处理模块105、第三处理模块106和第四处理模块107分别与存储模块101相连接。针对每一个数据部分,第一处理模块104、第二处理模块105、第三处理模块106和第四处理模块107依据调用模块103的调用对该数据部分进行处理,得到数据部分对应的运算结果,并将所得到的数据部分对应的运算结果存储至存储模块101中,另外,还根据数据部分对应的运算结果对存储模块101所存储的该数据部分进行更新处理,以便后续调用使用。
其中,所得到的数据部分对应的运算结果包括:数据部分对应的下三角矩阵元素数据以及元素更新数据。下三角矩阵元素数据为对应于原始矩阵数据的下三角矩阵中的元素数据,元素更新数据为用于更新数据部分中的元素数据的数据。
针对一个数据部分,在某处理模块被调用模块103调用后,该处理模块可先根据其运算规则,确定对该数据部分进行运算所需的数据的来源。若来源仅包括该数据部分本身,那么可直接利用该数据部分,对该数据部分进行运算处理,得到该数据部分对应的运算结果,然后根据该数据部分对应的运算结果,对该数据部分进行更新处理。若来源未包括该数据部分,而包括了其它数据部分,那么将来源所包括的其它数据部分确定为与该数据部分具有依赖关系的依赖数据部分,接着利用依赖数据部分,对该数据部分进行运算处理,得到该数据部分对应的运算结果,然后根据该数据部分对应的运算结果,对该数据部分进行更新处理。若来源不仅包括该数据部分本身,还包括其它数据部分,那么将来源所包括的其它数据部分确定为与该数据部分具有依赖关系的依赖数据部分,接着利用依赖数据部分和该数据部分,对该数据部分进行运算处理,得到该数据部分对应的运算结果,然后根据该数据部分对应的运算结果,对该数据部分进行更新处理。
作为一个具体实施方式,本发明根据上述Cholesky分解算法的具体运算方法对第一处理模块104、第二处理模块105、第三处理模块106和第四处理模块107进行设置。并且为了便于表述针对拆分模块102拆分后所得到的多个数据部分调用各个处理模块的调用顺序,本实施例中用字母A表示调用第一处理模块104,用字母B表示调用第二处理模块105,用字母C表示调用第三处理模块106,用字母D表示调用第四处理模块107。
若拆分模块102拆分后所得到的多个数据部分如图2a所示,那么对应的调用顺序如图3a所示,图3a中各个框里的调用顺序分别与图2a所示的同位置处的数据部分相对应。其中,针对数据部分1,调用模块103调用第一处理模块104进行运算处理;针对数据部分2,调用模块103调用第二处理模块105进行运算处理;针对数据部分3,调用模块103先调用第三处理模块106进行运算处理,后调用第一处理模块104进行运算处理。
若拆分模块102拆分后所得到的多个数据部分如图2b所示,那么对应的调用顺序如图3b所示,图3b中各个框里的调用顺序分别与图2b所示的同位置处的数据部分相对应。其中,针对数据部分1至数据部分3,调用顺序与图3a所示的调用顺序相同,此处不再赘述;针对数据部分4,调用模块103调用第二处理模块105进行运算处理;针对数据部分5,调用模块103先调用第四处理模块107进行运算处理,后调用第二处理模块105进行运算处理;针对数据部分6,调用模块103先调用第三处理模块106进行运算处理,接着又调用第三处理模块106进行运算处理,然后调用第一处理模块104进行运算处理;针对数据部分7至数据部分10,同样依次按照图3b所示的对应于数据部分7至数据部分10的调用顺序调用各个处理模块。
若拆分模块102拆分后所得到的多个数据部分如图2c所示,那么对应的调用顺序如图3c所示,图3c中各个框里的调用顺序分别与图2c所示的同位置处的数据部分相对应。其中,针对数据部分1至数据部分10,调用顺序与图3b所示的调用顺序相同,此处不再赘述;针对数据部分11至数据部分36,同样依次按照图3c所示的对应于数据部分11至数据部分36的调用顺序调用各个处理模块。
具体地,第一处理模块104进一步用于:利用数据部分中的元素数据,进行m轮运算过程。其中,m的值与基准拆分单元的大小相关联,第一处理模块104所针对的数据部分的外部轮廓为三角形。每一轮运算过程具体包括:按照当前轮数从数据部分中的元素数据中选择当前轮运算过程的运算起始数据;利用运算起始数据以及数据部分中与运算起始数据位于同一列的其它元素数据,计算数据部分的列(即第当前轮数列)对应的下三角矩阵元素数据;利用列对应的下三角矩阵元素数据以及数据部分中的元素数据,计算数据部分对应的元素更新数据;根据元素更新数据,对数据部分中的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为数据部分中的第当前轮数行第当前轮数列的元素数据。
下面以待分解处理的原始矩阵数据为64×64的正定矩阵的矩阵数据,基准拆分单元的大小为8×8矩阵对应的大小,拆分后所得到的多个数据部分如图2c所示为例进行说明。
针对数据部分1,第一处理模块104需要利用数据部分1中的元素数据,进行8轮运算过程。其中,数据部分1中各个元素数据的排布示意图可如图4a所示。那么第一处理模块104针对数据部分1的第1轮运算过程具体包括:(1)按照当前轮数(即1)从数据部分1中的元素数据中选择第1轮运算过程的运算起始数据,即选择数据部分1中的第1行第1列的元素数据a1,1作为第1轮运算过程的运算起始数据。(2)利用运算起始数据a1,1以及数据部分1中与运算起始数据a1,1位于同一列的其它元素数据(即a2,1~a8,1),计算数据部分1的第1列对应的下三角矩阵元素数据l1,1~l8,1。(3)利用第1列对应的下三角矩阵元素数据l2,1以及数据部分1中的元素数据a2,1~a8,1和a2,2~a8,2,计算得到数据部分1对应的元素更新数据a’2,2~a’8,2,然后根据元素更新数据a’2,2~a’8,2,对数据部分1中原有的元素数据a2,2~a8,2进行更新处理;利用第1列对应的下三角矩阵元素数据l3,1以及数据部分1中的元素数据a3,1~a8,1和a3,3~a8,3,计算得到数据部分1对应的元素更新数据a’3,3~a’8,3,然后根据元素更新数据a’3,3~a’8,3,对数据部分1中原有的元素数据a3,3~a8,3进行更新处理;利用第1列对应的下三角矩阵元素数据l4,1以及数据部分1中的元素数据a4,1~a8,1和a4,4~a8,4,计算得到数据部分1对应的元素更新数据a’4,4~a’8,4,然后根据元素更新数据a’4,4~a’8,4,对数据部分1中原有的元素数据a4,4~a8,4进行更新处理;依此类推,直到利用第1列对应的下三角矩阵元素数据l8,1以及数据部分1中的元素数据a8,1和a8,8,计算得到数据部分1对应的元素更新数据a’8,8,然后根据元素更新数据a’8,8,对数据部分1中原有的元素数据a8,8进行更新处理。
第一处理模块104针对数据部分1的当前轮运算过程中所利用的数据部分1中的元素数据均为前一轮运算过程中数据部分1中的经更新处理后的元素数据,那么第一处理模块104针对数据部分1的第2轮运算过程中所利用的数据部分1中的元素数据均为第1轮运算过程中数据部分1中的经更新处理后的元素数据。该第2轮运算过程具体包括:(1)按照当前轮数(即2)从数据部分1中的元素数据中选择第2轮运算过程的运算起始数据,即选择数据部分1中的第2行第2列的元素数据a2,2作为第2轮运算过程的运算起始数据。(2)利用运算起始数据a2,2以及数据部分1中与运算起始数据位于同一列的其它元素数据(即a3,2~a8,2),计算数据部分1的第2列对应的下三角矩阵元素数据l2,2~l8,2。(3)利用第2列对应的下三角矩阵元素数据l3,2以及数据部分1中的元素数据a3,2~a8,2和a3,3~a8,3,计算得到数据部分1对应的元素更新数据a’3,3~a’8,3,然后根据元素更新数据a’3,3~a’8,3,对数据部分1中元素数据a3,3~a8,3进行更新处理;利用第2列对应的下三角矩阵元素数据l4,2以及数据部分1中的元素数据a4,2~a8,2和a4,4~a8,4,计算得到数据部分1对应的元素更新数据a’4,4~a’8,4,然后根据元素更新数据a’4,4~a’8,4,对数据部分1中元素数据a4,4~a8,4进行更新处理;依此类推,直到利用第2列对应的下三角矩阵元素数据l8,2以及数据部分1中的元素数据a8,2和a8,8,计算得到数据部分1对应的元素更新数据a’8,8,然后根据元素更新数据a’8,8,对数据部分1中元素数据a8,8进行更新处理。
第一处理模块104针对数据部分1的第3轮至第8轮运算过程可参照上述第1轮和第2轮运算过程,此处不再赘述。第一处理模块104针对数据部分1进行了8轮运算过程之后即可得到数据部分1对应的下三角矩阵元素数据l1,1~l8,8。
第二处理模块105进一步用于:利用与数据部分具有依赖关系的依赖数据部分以及数据部分中的元素数据,进行m轮运算过程。其中,m的值与基准拆分单元的大小相关联,第二处理模块105所针对的数据部分的外部轮廓为方形,依赖数据部分为多个数据部分中位于数据部分的同一列上侧且外部轮廓为三角形的数据部分。如当数据部分为图2c所示的数据部分2时,其对应的依赖数据部分为数据部分1;当数据部分为图2c所示的数据部分9或数据部分18或数据部分31时,其对应的依赖数据部分为数据部分6。每一轮运算过程具体包括:按照当前轮数从依赖数据部分中的元素数据中选择当前轮运算过程的运算起始数据;利用运算起始数据以及数据部分中与运算起始数据位于同一列的元素数据,计算数据部分的列(即第当前轮数列)对应的下三角矩阵元素数据;利用依赖数据部分对应的下三角矩阵元素数据以及数据部分中的元素数据,计算数据部分对应的元素更新数据;根据元素更新数据,对数据部分中的元素数据进行更新处理。其中,当前轮运算过程的运算起始数据为依赖数据部分中的第当前轮数行第当前轮数列的元素数据。
参照图2c,针对数据部分2,第二处理模块105需要利用与数据部分2具有依赖关系的依赖数据部分(即数据部分1)以及数据部分2中的元素数据,进行8轮运算过程。其中,数据部分1和数据部分2中各个元素数据的排布示意图可如图4b所示。那么第二处理模块105针对数据部分2的第1轮运算过程具体包括:(1)按照当前轮数(即1)从数据部分1中的元素数据中选择第1轮运算过程的运算起始数据,即选择数据部分1中的第1行第1列的元素数据a1,1作为第1轮运算过程的运算起始数据。(2)利用运算起始数据a1,1以及数据部分2中与运算起始数据a1,1位于同一列的元素数据(即a9,1~a16,1),计算数据部分2的第1列对应的下三角矩阵元素数据l9,1~l16,1。(3)利用数据部分1对应的下三角矩阵元素数据l2,1以及数据部分2中的元素数据a9,1~a16,1和a9,2~a16,2,计算数据部分2对应的元素更新数据a’9,2~a’16,2,然后根据元素更新数据a’9,2~a’16,2,对数据部分2中原有的元素数据a9,2~a16,2进行更新处理,并根据数据部分1中的a2,2以及数据部分2中的元素数据a9,2~a16,2,计算数据部分2对应的下三角矩阵元素数据l9,2~l16,2;利用数据部分1对应的下三角矩阵元素数据l3,1、l3,2以及数据部分2中的元素数据a9,1~a16,1、a9,2~a16,2和a9,3~a16,3,计算数据部分2对应的元素更新数据a’9,3~a’16,3,然后根据元素更新数据a’9,3~a’16,3,对数据部分2中原有的元素数据a9,3~a16,3进行更新处理,并根据数据部分1中的a3,3以及数据部分2中的元素数据a9,3~a16,3,计算数据部分2对应的下三角矩阵元素数据l9,3~l16,3;利用数据部分1对应的下三角矩阵元素数据l4,1、l4,2、l4,3以及数据部分2中的元素数据a9,1~a16,1、a9,2~a16,2、a9,3~a16,3和a9,4~a16,4,计算数据部分2对应的元素更新数据a’9,4~a’16,4,然后根据元素更新数据a’9,4~a’16,4,对数据部分2中原有的元素数据a9,4~a16,4进行更新处理,并根据数据部分1中的a4,4以及数据部分2中的元素数据a9,4~a16,4,计算数据部分2对应的下三角矩阵元素数据l9,4~l16,4;依此类推,直至计算得到数据部分2对应的元素更新数据a’9,8~a’16,8,然后根据元素更新数据a’9,8~a’16,8,对数据部分1中原有的元素数据a9,8~a16,8进行更新处理,并根据数据部分1中的a8,8以及数据部分2中的元素数据a9,8~a16,8,计算数据部分2对应的下三角矩阵元素数据l9,8~l16,8。
第二处理模块105针对数据部分2的当前轮运算过程中所利用的数据部分2中的元素数据均为前一轮运算过程中数据部分2中的经更新处理后的元素数据。第二处理模块105针对数据部分2的第2轮至第8轮运算过程可参照上述第1轮运算过程,此处不再赘述。
第三处理模块106进一步用于:利用与数据部分具有依赖关系的依赖数据部分以及数据部分中的元素数据,进行m轮运算过程。其中,第三处理模块106所针对的数据部分的外部轮廓为三角形,依赖数据部分为多个数据部分中位于数据部分的同一行左侧且外部轮廓为方形的数据部分。如当数据部分为图2c所示的数据部分10时,其对应的依赖数据部分为数据部分7或数据部分8或数据部分9;当数据部分为图2c所示的数据部分21时,其对应的依赖数据部分为数据部分16或数据部分18。每一轮运算过程具体包括:按照当前轮数从依赖数据部分对应的下三角矩阵元素数据中选择当前轮运算过程的运算起始数据;利用运算起始数据、依赖数据部分中的元素数据以及数据部分中位于第当前轮数列的元素数据,计算数据部分的第当前轮数列对应的元素更新数据;根据元素更新数据,对数据部分中的第当前轮数列的元素数据进行更新处理。其中,当前轮运算过程的运算起始数据为依赖数据部分的第当前轮数行对应的下三角矩阵元素数据。
参照图2c,针对数据部分3,第三处理模块106需要利用与数据部分3具有依赖关系的依赖数据部分(即数据部分2)以及数据部分3中的元素数据,进行8轮运算过程。其中,数据部分2和数据部分3中各个元素数据的排布示意图可如图4c所示。那么第三处理模块106针对数据部分3的第1轮运算过程具体包括:(1)按照当前轮数(即1)从数据部分2对应的下三角矩阵元素数据中选择第1轮运算过程的运算起始数据,即选择数据部分2的第1行对应的下三角矩阵元素数据l1,1~l1,8作为第1轮运算过程的运算起始数据。(2)利用运算起始数据l1,1~l1,8、数据部分2中的元素数据a1,1~a8,1、a1,2~a8,2、a1,3~a8,3、a1,4~a8,4、a1,5~a8,5、a1,6~a8,6、a1,7~a8,7、a1,8~a8,8以及数据部分3中位于第1列(即图4c所示的第9列)的元素数据a1,9~a8,9,计算数据部分3的第1列(即图4c所示的第9列)对应的元素更新数据a’1,9~a’8,9。(3)根据元素更新数据a’1,9~a’8,9,对数据部分3中的第1列的元素数据a1,9~a8,9进行更新处理。其中,数据部分2中的元素数据a1,1~a1,8在使用一次后就不再需要,那么可释放掉内部存储(如寄存器)中所存储的元素数据a1,1~a1,8。
第三处理模块106针对数据部分3的当前轮运算过程中所利用的数据部分3中的元素数据均为前一轮运算过程中数据部分3中的经更新处理后的元素数据,那么第三处理模块106针对数据部分3的第2轮运算过程中所利用的数据部分3中的元素数据均为第1轮运算过程中数据部分3中的经更新处理后的元素数据。该第2轮运算过程具体包括:(1)按照当前轮数(即2)从数据部分2对应的下三角矩阵元素数据中选择第2轮运算过程的运算起始数据,即选择数据部分2的第2行对应的下三角矩阵元素数据l2,1~l2,8。(2)利用运算起始数据l2,1~l2,8、数据部分2中的元素数据a2,1~a8,1、a2,2~a8,2、a2,3~a8,3、a2,4~a8,4、a2,5~a8,5、a2,6~a8,6、a2,7~a8,7、a2,8~a8,8以及数据部分3中位于第2列(即图4c所示的第10列)的元素数据a2,10~a8,10,计算数据部分3的第2列(即图4c所示的第10列)对应的元素更新数据a’2,10~a’8,10。(3)根据元素更新数据a’2,10~a’8,10,对数据部分3中的第2列的元素数据a2,10~a8,10进行更新处理。
第三处理模块106针对数据部分3的第3轮至第8轮运算过程可参照上述第1轮和第2轮运算过程,此处不再赘述。第三处理模块106针对数据部分3进行了8轮运算过程之后即可得到数据部分3中经更新处理后的所有元素数据a1,9~a8,16。
第四处理模块107进一步用于:利用与数据部分具有依赖关系的依赖数据部分以及数据部分中的元素数据,进行m轮运算过程。其中,第四处理模块107所针对的数据部分的外部轮廓为方形,依赖数据部分包括:多个数据部分中位于数据部分的同一行左侧且外部轮廓为方形的第一依赖数据部分以及位于第一依赖数据部分的同一列上侧且外部轮廓为方形的第二依赖数据部分。如当数据部分为图2c所示的数据部分19时,其对应的第一依赖数据部分包括数据部分17,第二依赖数据部分包括数据部分8;当数据部分为图2c所示的数据部分35时,其对应的第一依赖数据部分包括数据部分34,第二依赖数据部分包括数据部分27。每一轮运算过程具体包括:按照当前轮数从第二依赖数据部分对应的下三角矩阵元素数据中选择当前轮运算过程的运算起始数据;利用运算起始数据、第一依赖数据部分中的元素数据以及数据部分中位于第当前轮数列的元素数据,计算数据部分的第当前轮数列对应的元素更新数据;根据元素更新数据,对数据部分中的第当前轮数列的元素数据进行更新处理。其中,当前轮运算过程的运算起始数据为第二依赖数据部分的第当前轮数行对应的下三角矩阵元素数据。
参照图2c,针对数据部分5,第四处理模块107需要利用与数据部分5具有依赖关系的第一依赖数据部分(即数据部分4)、第二依赖数据部分(即数据部分2)以及数据部分5中的元素数据,进行8轮运算过程。其中,数据部分2、数据部分3、数据部分4和数据部分5中各个元素数据的排布示意图可如图4d所示。那么第四处理模块107针对数据部分5的第1轮运算过程具体包括:(1)按照当前轮数(即1)从数据部分2对应的下三角矩阵元素数据中选择第1轮运算过程的运算起始数据,即选择数据部分2的第1行对应的下三角矩阵元素数据l1,1~l1,8作为第1轮运算过程的运算起始数据。(2)利用运算起始数据l1,1~l1,8、数据部分4中的元素数据a9,1~a16,1、a9,2~a16,2、a9,3~a16,3、a9,4~a16,4、a9,5~a16,5、a9,6~a16,6、a9,7~a16,7、a9,8~a16,8以及数据部分5中位于第1列(即图4d所示的第9列)的元素数据a9,9~a16,9,计算数据部分5的第1列(即图4d所示的第9列)对应的元素更新数据a’9,9~a’16,9。(3)根据元素更新数据a’9,9~a’16,9,对数据部分5中的第1列的元素数据a9,9~a16,9进行更新处理。
第四处理模块107针对数据部分5的当前轮运算过程中所利用的数据部分5中的元素数据均为前一轮运算过程中数据部分5中的经更新处理后的元素数据,那么第四处理模块107针对数据部分5的第2轮运算过程中所利用的数据部分5中的元素数据均为第1轮运算过程中数据部分5中的经更新处理后的元素数据。该第2轮运算过程具体包括:(1)按照当前轮数(即2)从数据部分2对应的下三角矩阵元素数据中选择第2轮运算过程的运算起始数据,即选择数据部分2的第2行对应的下三角矩阵元素数据l2,1~l2,8作为第2轮运算过程的运算起始数据。(2)利用运算起始数据l2,1~l2,8、数据部分4中的元素数据a9,1~a16,1、a9,2~a16,2、a9,3~a16,3、a9,4~a16,4、a9,5~a16,5、a9,6~a16,6、a9,7~a16,7、a9,8~a16,8以及数据部分5中位于第2列(即图4d所示的第10列)的元素数据a9,10~a16,10,计算数据部分5的第2列(即图4d所示的第10列)对应的元素更新数据a’9,10~a’16,10。(3)根据元素更新数据a’9,10~a’16,10,对数据部分5中的第2列的元素数据a9,10~a16,10进行更新处理。
第四处理模块107针对数据部分5的第3轮至第8轮运算过程可参照上述第1轮和第2轮运算过程,此处不再赘述。第四处理模块107针对数据部分5进行了8轮运算过程之后即可得到数据部分5中经更新处理后的所有元素数据a9,9~a16,16。
可选地,第一处理模块104、第二处理模块105、第三处理模块106和第四处理模块107可并行地被调用,各个处理模块也可并行地对多个数据部分进行运算处理,并行度由矩阵分解处理装置的运算资源等而确定,此处不做限定。例如,在运算资源(例如位宽)允许的情况下,第二处理模块105可并行地对多个数据部分进行运算处理。
另外,第二处理模块105和第四处理模块107对单个数据部分进行运算处理的过程中也可以并行地进行处理,例如并行地计算该数据部分中多列的元素更新数据、根据多列的元素更新数据并行地对原有的元素数据进行更新处理,有助于减少内部存储的使用。
结果模块108用于:依据所有数据部分对应的运算结果,得到原始矩阵数据对应的下三角矩阵数据。
其中,结果模块108分别与第一处理模块104、第二处理模块105、第三处理模块106、第四处理模块107相连接。在通过调用各个处理模块完成了对所有数据部分的运算处理之后,结果模块108依据所有数据部分对应的运算结果,得到原始矩阵数据对应的下三角矩阵数据。具体地,结果模块108依据所有数据部分对应的运算结果中的下三角矩阵元素数据,得到原始矩阵数据对应的下三角矩阵数据,从而完成了对原始矩阵数据的分解处理。
根据本实施例提供的矩阵分解处理装置,通过拆分将待分解处理的原始矩阵数据拆分为多个数据部分,并针对每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对数据部分进行运算处理,从而得到原始矩阵数据对应的下三角矩阵数据。本发明提供的技术方案能够适用于对各种行数和列数的矩阵进行分解处理,具有较高的复用性,有助于减少所投入的人力成本和时间成本;并且根据分解算法的具体运算方法对各个处理模块进行设置,通过调用各个处理模块来完成对拆分的数据部分的运算处理,有效地减少了与外部存储的数据搬运,提高了矩阵分解处理效率;另外,还可根据运算资源并行地调用各个处理模块,各个处理模块也可并行地对多个数据部分进行运算处理,使得运算资源得到充分利用,减少了冗余计算,避免了运算资源的浪费,进一步提高了矩阵分解处理效率,优化了矩阵分解处理方式。
图5示出了根据本发明一个实施例的矩阵分解处理方法的流程示意图,如图5所示,该方法包括如下步骤:
步骤S501,存储待分解处理的原始矩阵数据。
其中,待分解处理的原始矩阵数据包括:待分解处理的矩阵的所有的元素数据。例如,若Cholesky分解算法为预设分解算法,那么待分解处理的原始矩阵数据包括:正定矩阵的所有的元素数据。
步骤S502,读取所存储的原始矩阵数据,根据预设拆分规则,将所读取的原始矩阵数据拆分为多个数据部分,并对多个数据部分进行存储。
预设拆分规则可为按照原始矩阵数据对应的主对角线以及基准拆分单元对原始矩阵数据进行拆分,拆分为多个数据部分。若基准拆分单元的大小为8×8矩阵对应的大小,那么对于原始矩阵数据为16×16的正定矩阵的所有的元素数据,拆分后所得到的多个数据部分可如图2a所示;对于原始矩阵数据为32×32的正定矩阵的所有的元素数据,拆分后所得到的多个数据部分可如图2b所示;对于原始矩阵数据为64×64的正定矩阵的所有的元素数据,拆分后所得到的多个数据部分可如图2c所示。
步骤S503,针对多个数据部分中的每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对数据部分进行运算处理。
其中,本发明根据预设分解算法以及多个数据部分之间的位置关系设置了预设调用规则以及4种处理模块,这4种处理模块分别为第一处理模块、第二处理模块、第三处理模块和第四处理模块。具体地,针对多个数据部分中的每一个数据部分,需要根据预设调用规则,确定处理该数据部分所需调用的处理模块以及调用处理模块的调用顺序,然后按照调用顺序,通过调用各个处理模块对该数据部分进行运算处理。
步骤S504,根据第一处理模块、第二处理模块、第三处理模块和第四处理模块各自的运算规则,利用与数据部分具有依赖关系的依赖数据部分和/或数据部分,对数据部分进行运算处理,得到数据部分对应的运算结果。
第一处理模块、第二处理模块、第三处理模块和第四处理模块各自的运算规则是根据预设分解算法所设置的。对于第一处理模块、第二处理模块、第三处理模块和第四处理模块的说明可参照矩阵分解处理装置实施例中对第一处理模块、第二处理模块、第三处理模块和第四处理模块的说明,此处不再赘述。
步骤S505,根据数据部分对应的运算结果,对数据部分进行更新处理。
其中,数据部分对应的运算结果包括:数据部分对应的下三角矩阵元素数据以及元素更新数据。
步骤S506,依据所有数据部分对应的运算结果,得到原始矩阵数据对应的下三角矩阵数据。
在通过调用各个处理模块完成了对所有数据部分的运算处理之后,依据所有数据部分对应的运算结果中的下三角矩阵元素数据,得到原始矩阵数据对应的下三角矩阵数据,从而完成了对原始矩阵数据的分解处理。
根据本实施例提供的矩阵分解处理方法,通过拆分将待分解处理的原始矩阵数据拆分为多个数据部分,并针对每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对数据部分进行运算处理,从而得到原始矩阵数据对应的下三角矩阵数据。本发明提供的技术方案能够适用于对各种行数和列数的矩阵进行分解处理,具有较高的复用性,有助于减少所投入的人力成本和时间成本;并且根据分解算法的具体运算方法对各个处理模块进行设置,通过调用各个处理模块来完成对拆分的数据部分的运算处理,有效地减少了与外部存储的数据搬运,提高了矩阵分解处理效率;另外,还可根据运算资源并行地调用各个处理模块,各个处理模块也可并行地对多个数据部分进行运算处理,使得运算资源得到充分利用,减少了冗余计算,避免了运算资源的浪费,进一步提高了矩阵分解处理效率,优化了矩阵分解处理方式。
本发明还提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,可执行指令可执行上述任意方法实施例中的矩阵分解处理方法。
图6示出了根据本发明实施例的一种计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图6所示,该计算设备可以包括:处理器(processor)602、通信接口(Communications Interface)604、存储器(memory)606、以及通信总线608。
其中:
处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。
通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器602,用于执行程序610,具体可以执行上述矩阵分解处理方法实施例中的相关步骤。
具体地,程序610可以包括程序代码,该程序代码包括计算机操作指令。
处理器602可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器606,用于存放程序610。存储器606可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序610具体可以用于使得处理器602执行上述任意方法实施例中的矩阵分解处理方法。程序610中各步骤的具体实现可以参见上述矩阵分解处理实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (5)
1.一种矩阵分解处理装置,其特征在于,所述装置包括:
存储模块,用于存储待分解处理的原始矩阵数据;
拆分模块,用于从所述存储模块中读取所述原始矩阵数据,根据预设拆分规则,将所读取的原始矩阵数据拆分为多个数据部分,并将所述多个数据部分存储至所述存储模块中;
调用模块,用于针对所述多个数据部分中的每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对所述数据部分进行运算处理;
所述第一处理模块、所述第二处理模块、所述第三处理模块和所述第四处理模块,用于根据各自的运算规则,利用与所述数据部分具有依赖关系的依赖数据部分和/或所述数据部分,对所述数据部分进行运算处理,得到所述数据部分对应的运算结果;根据所述数据部分对应的运算结果,对所述数据部分进行更新处理;
结果模块,用于依据所有数据部分对应的运算结果,得到所述原始矩阵数据对应的下三角矩阵数据;
其中,所述数据部分对应的运算结果包括:所述数据部分对应的下三角矩阵元素数据以及元素更新数据;
所述第一处理模块进一步用于:利用所述数据部分中的元素数据,进行m轮运算过程;所述数据部分的外部轮廓为三角形;每一轮运算过程具体包括:按照当前轮数从所述数据部分中的元素数据中选择当前轮运算过程的运算起始数据;利用所述运算起始数据以及所述数据部分中与所述运算起始数据位于同一列的其它元素数据,计算所述数据部分的所述列对应的下三角矩阵元素数据;利用所述列对应的下三角矩阵元素数据以及所述数据部分中的元素数据,计算所述数据部分对应的元素更新数据;根据所述元素更新数据,对所述数据部分中的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为所述数据部分中的第当前轮数行第当前轮数列的元素数据;
所述第二处理模块进一步用于:利用与所述数据部分具有依赖关系的依赖数据部分以及所述数据部分中的元素数据,进行m轮运算过程;所述数据部分的外部轮廓为方形,所述依赖数据部分为所述多个数据部分中位于所述数据部分的同一列上侧且外部轮廓为三角形的数据部分;每一轮运算过程具体包括:按照当前轮数从所述依赖数据部分中的元素数据中选择当前轮运算过程的运算起始数据;利用所述运算起始数据以及所述数据部分中与所述运算起始数据位于同一列的元素数据,计算所述数据部分的所述列对应的下三角矩阵元素数据;利用所述依赖数据部分对应的下三角矩阵元素数据以及所述数据部分中的元素数据,计算所述数据部分对应的元素更新数据;根据所述元素更新数据,对所述数据部分中的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为所述依赖数据部分中的第当前轮数行第当前轮数列的元素数据;
所述第三处理模块进一步用于:利用与所述数据部分具有依赖关系的依赖数据部分以及所述数据部分中的元素数据,进行m轮运算过程;所述数据部分的外部轮廓为三角形,所述依赖数据部分为所述多个数据部分中位于所述数据部分的同一行左侧且外部轮廓为方形的数据部分;每一轮运算过程具体包括:按照当前轮数从所述依赖数据部分对应的下三角矩阵元素数据中选择当前轮运算过程的运算起始数据;利用所述运算起始数据、所述依赖数据部分中的元素数据以及所述数据部分中位于第当前轮数列的元素数据,计算所述数据部分的第当前轮数列对应的元素更新数据;根据所述元素更新数据,对所述数据部分中的第当前轮数列的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为所述依赖数据部分的第当前轮数行对应的下三角矩阵元素数据;
所述第四处理模块进一步用于:利用与所述数据部分具有依赖关系的依赖数据部分以及所述数据部分中的元素数据,进行m轮运算过程;所述数据部分的外部轮廓为方形,所述依赖数据部分包括:所述多个数据部分中位于所述数据部分的同一行左侧且外部轮廓为方形的第一依赖数据部分以及位于所述第一依赖数据部分的同一列上侧且外部轮廓为方形的第二依赖数据部分;每一轮运算过程具体包括:按照当前轮数从所述第二依赖数据部分对应的下三角矩阵元素数据中选择当前轮运算过程的运算起始数据;利用所述运算起始数据、所述第一依赖数据部分中的元素数据以及所述数据部分中位于第当前轮数列的元素数据,计算所述数据部分的第当前轮数列对应的元素更新数据;根据所述元素更新数据,对所述数据部分中的第当前轮数列的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为所述第二依赖数据部分的第当前轮数行对应的下三角矩阵元素数据。
2.根据权利要求1所述的装置,其特征在于,所述待分解处理的矩阵数据包括:正定矩阵的所有的元素数据。
3.根据权利要求1所述的装置,其特征在于,所述拆分模块进一步用于:
按照所述原始矩阵数据对应的主对角线以及基准拆分单元,将所读取的原始矩阵数据拆分为多个数据部分。
4.根据权利要求1-3任一项所述的装置,其特征在于,所述预设调用规则是根据预设分解算法以及所述多个数据部分之间的位置关系所设置。
5.一种矩阵分解处理方法,其特征在于,所述方法包括:
存储待分解处理的原始矩阵数据;
读取所存储的原始矩阵数据,根据预设拆分规则,将所读取的原始矩阵数据拆分为多个数据部分,并对所述多个数据部分进行存储;
针对所述多个数据部分中的每一个数据部分,根据预设调用规则,调用第一处理模块、第二处理模块、第三处理模块和/或第四处理模块对所述数据部分进行运算处理;
根据所述第一处理模块、所述第二处理模块、所述第三处理模块和所述第四处理模块各自的运算规则,利用与所述数据部分具有依赖关系的依赖数据部分和/或所述数据部分,对所述数据部分进行运算处理,得到所述数据部分对应的运算结果;根据所述数据部分对应的运算结果,对所述数据部分进行更新处理;
依据所有数据部分对应的运算结果,得到所述原始矩阵数据对应的下三角矩阵数据;
其中,所述数据部分对应的运算结果包括:所述数据部分对应的下三角矩阵元素数据以及元素更新数据;
所述第一处理模块进一步用于:利用所述数据部分中的元素数据,进行m轮运算过程;所述数据部分的外部轮廓为三角形;每一轮运算过程具体包括:按照当前轮数从所述数据部分中的元素数据中选择当前轮运算过程的运算起始数据;利用所述运算起始数据以及所述数据部分中与所述运算起始数据位于同一列的其它元素数据,计算所述数据部分的所述列对应的下三角矩阵元素数据;利用所述列对应的下三角矩阵元素数据以及所述数据部分中的元素数据,计算所述数据部分对应的元素更新数据;根据所述元素更新数据,对所述数据部分中的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为所述数据部分中的第当前轮数行第当前轮数列的元素数据;
所述第二处理模块进一步用于:利用与所述数据部分具有依赖关系的依赖数据部分以及所述数据部分中的元素数据,进行m轮运算过程;所述数据部分的外部轮廓为方形,所述依赖数据部分为所述多个数据部分中位于所述数据部分的同一列上侧且外部轮廓为三角形的数据部分;每一轮运算过程具体包括:按照当前轮数从所述依赖数据部分中的元素数据中选择当前轮运算过程的运算起始数据;利用所述运算起始数据以及所述数据部分中与所述运算起始数据位于同一列的元素数据,计算所述数据部分的所述列对应的下三角矩阵元素数据;利用所述依赖数据部分对应的下三角矩阵元素数据以及所述数据部分中的元素数据,计算所述数据部分对应的元素更新数据;根据所述元素更新数据,对所述数据部分中的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为所述依赖数据部分中的第当前轮数行第当前轮数列的元素数据;
所述第三处理模块进一步用于:利用与所述数据部分具有依赖关系的依赖数据部分以及所述数据部分中的元素数据,进行m轮运算过程;所述数据部分的外部轮廓为三角形,所述依赖数据部分为所述多个数据部分中位于所述数据部分的同一行左侧且外部轮廓为方形的数据部分;每一轮运算过程具体包括:按照当前轮数从所述依赖数据部分对应的下三角矩阵元素数据中选择当前轮运算过程的运算起始数据;利用所述运算起始数据、所述依赖数据部分中的元素数据以及所述数据部分中位于第当前轮数列的元素数据,计算所述数据部分的第当前轮数列对应的元素更新数据;根据所述元素更新数据,对所述数据部分中的第当前轮数列的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为所述依赖数据部分的第当前轮数行对应的下三角矩阵元素数据;
所述第四处理模块进一步用于:利用与所述数据部分具有依赖关系的依赖数据部分以及所述数据部分中的元素数据,进行m轮运算过程;所述数据部分的外部轮廓为方形,所述依赖数据部分包括:所述多个数据部分中位于所述数据部分的同一行左侧且外部轮廓为方形的第一依赖数据部分以及位于所述第一依赖数据部分的同一列上侧且外部轮廓为方形的第二依赖数据部分;每一轮运算过程具体包括:按照当前轮数从所述第二依赖数据部分对应的下三角矩阵元素数据中选择当前轮运算过程的运算起始数据;利用所述运算起始数据、所述第一依赖数据部分中的元素数据以及所述数据部分中位于第当前轮数列的元素数据,计算所述数据部分的第当前轮数列对应的元素更新数据;根据所述元素更新数据,对所述数据部分中的第当前轮数列的元素数据进行更新处理;其中,当前轮运算过程的运算起始数据为所述第二依赖数据部分的第当前轮数行对应的下三角矩阵元素数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811599095.8A CN109766515B (zh) | 2018-12-26 | 2018-12-26 | 矩阵分解处理装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811599095.8A CN109766515B (zh) | 2018-12-26 | 2018-12-26 | 矩阵分解处理装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109766515A CN109766515A (zh) | 2019-05-17 |
CN109766515B true CN109766515B (zh) | 2023-04-14 |
Family
ID=66450917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811599095.8A Active CN109766515B (zh) | 2018-12-26 | 2018-12-26 | 矩阵分解处理装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766515B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113255253B (zh) * | 2021-06-03 | 2022-05-24 | 北京华大九天科技股份有限公司 | 一种基于电阻电容网络的矩阵快速分解方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1682214A (zh) * | 2003-03-07 | 2005-10-12 | 松下电器产业株式会社 | 矩阵运算装置 |
CN102508704A (zh) * | 2011-11-10 | 2012-06-20 | 上海市共进通信技术有限公司 | 计算机软件系统中实现任务分解和并行处理控制的方法 |
US8527569B2 (en) * | 2007-04-19 | 2013-09-03 | Fujitsu Limited | Parallel processing method of tridiagonalization of real symmetric matrix for shared memory scalar parallel computer |
CN105897278A (zh) * | 2016-03-30 | 2016-08-24 | 联想(北京)有限公司 | 信息处理方法及存储设备 |
WO2017107338A1 (zh) * | 2015-12-22 | 2017-06-29 | 合肥工业大学 | 一种改进的按位替换法求矩阵逆矩阵模块及方法 |
CN107491416A (zh) * | 2017-08-31 | 2017-12-19 | 中国人民解放军信息工程大学 | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 |
-
2018
- 2018-12-26 CN CN201811599095.8A patent/CN109766515B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1682214A (zh) * | 2003-03-07 | 2005-10-12 | 松下电器产业株式会社 | 矩阵运算装置 |
US8527569B2 (en) * | 2007-04-19 | 2013-09-03 | Fujitsu Limited | Parallel processing method of tridiagonalization of real symmetric matrix for shared memory scalar parallel computer |
CN102508704A (zh) * | 2011-11-10 | 2012-06-20 | 上海市共进通信技术有限公司 | 计算机软件系统中实现任务分解和并行处理控制的方法 |
WO2017107338A1 (zh) * | 2015-12-22 | 2017-06-29 | 合肥工业大学 | 一种改进的按位替换法求矩阵逆矩阵模块及方法 |
CN105897278A (zh) * | 2016-03-30 | 2016-08-24 | 联想(北京)有限公司 | 信息处理方法及存储设备 |
CN107491416A (zh) * | 2017-08-31 | 2017-12-19 | 中国人民解放军信息工程大学 | 适用于任意维数卷积需求的可重构计算结构及计算调度方法和装置 |
Non-Patent Citations (4)
Title |
---|
Parallel elimination based triangular factorization and its application for power flow;Xiaojing Hu等;《2017 Chinese Automation Congress (CAC)》;20180101;第912-916页 * |
压缩感知理论中信号重构算法研究与FPGA实现;沈培;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20170115;第I138-749页 * |
基于对角折叠位运算的图像置乱方法;李梦晓等;《山东理工大学学报(自然科学版)》;20090315(第02期);第4页 * |
矩阵Doolittle分解的快速算法;吴光文等;《东华理工大学学报(自然科学版)》;20150331(第01期);第116-119页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109766515A (zh) | 2019-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112214726B (zh) | 运算加速器 | |
CN107729989B (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN108701250B (zh) | 数据定点化方法和装置 | |
CN108491359B (zh) | 子矩阵运算装置及方法 | |
US20180260709A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
US20190065958A1 (en) | Apparatus and Methods for Training in Fully Connected Layers of Convolutional Networks | |
CN110046704B (zh) | 基于数据流的深度网络加速方法、装置、设备及存储介质 | |
DE112005001277B4 (de) | Verfahren und Vorrichtung zum Vektorisieren mehrerer Eingabebefehle | |
WO2019119301A1 (zh) | 在卷积神经网络模型中确定特征图像的方法和装置 | |
CN107392842B (zh) | 图像风格化处理方法、装置、计算设备及计算机存储介质 | |
JP2018026027A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP2019016011A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
WO2021072732A1 (zh) | 矩阵运算电路、装置以及方法 | |
CN107392316B (zh) | 网络训练方法、装置、计算设备及计算机存储介质 | |
CN109766515B (zh) | 矩阵分解处理装置及方法 | |
CN114996649A (zh) | 一种矩阵分解和下三角矩阵求逆的实现方法 | |
CN114358252A (zh) | 目标神经网络模型中的操作执行方法及装置、存储介质 | |
CN111104092B (zh) | 一种快速除法器和除法运算方法 | |
CN112348182A (zh) | 一种神经网络maxout层计算装置 | |
CN111027670B (zh) | 特征图处理方法、装置、电子设备及存储介质 | |
US20090083361A1 (en) | Shift-add based multiplication | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
CN112668709B (zh) | 计算装置以及用于数据重用的方法 | |
CN108304191B (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 | ||
CB02 | Change of applicant information |
Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Applicant after: Shanghai Silang Technology Co.,Ltd. Address before: 100176 room 506-1, 5th floor, building 6, courtyard 10, KEGU 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing Applicant before: Beijing Si Lang science and Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |