在多处理器系统上对矩阵进行qr分解的方法和装置的制作方法

文档序号:6461759阅读:200来源:国知局
专利名称:在多处理器系统上对矩阵进行qr分解的方法和装置的制作方法
技术领域
本发明涉及数据处理领域,具体地,涉及在多处理器系统上对矩阵进 行QR分解的方法和装置。
背景技术
LAPACK ( Linear Algebra PACKage,线性代数包)是Oak Ridge国 家实验室、加州大学Davis分校和Illinois大学等联合开发的非常有效、强 大且广泛使用的线性代数函数库,用于在不同高性能计算环境上高效求解 数值线性代数问题,其已经有效地为HPC( High Performance Computing, 高性能计算)和计算科学组织工作了 20多年的时间。关于LAPACK的详 细内容,可参见http:〃netlib .amss.ac,cn/lapack/index.html。
作为专业的线性代数库,LAPACK提供了各种线性代数的子程序,其 中包括实现矩阵的QR分解的例程。
矩阵的QR分解的含义是对于给定的MxN矩阵A,找出分解
A=Q*R,
其中,Q是MxM正交矩阵,R是MxN上三角矩阵。
现有的LAPACK中的QR分解例程是采用条带(panel) QR分解方 案来实现的,其是一种分块的分解方案。
图1是现有的条带QR分解方案的图示说明,其中,图l(a)和(b)分别 是现有的条带QR分解方案中第k次迭代运算的总体和分步图示说明,图 l(c)是现有的条带QR分解方案的算法描述。图2是现有的条带QR分解 方案的流程图。
总体来说,如图l(a)所示,现有的条带QR分解方案的思路是对于给定的M x N矩阵A,通过迭代地每次在矩阵的一个条带上进行分解运算来最终将该矩阵A分解为M x M正交矩阵Q和M x N上三角矩阵R的积。本发明为了简侵走见,在图中的矩阵A都采用方阵作为图例,实际上,图中矩阵A可以不是方阵,而是任意MxN矩阵,其中,M和N为不相等的正整数。以其中一次迭代为例,如图l(a)的左侧所示,浅灰色的矩阵部分V、 R是通过第l k-l次迭代运算已经分解了的矩阵部分,而深灰色的矩阵部分A严和A严结合起来的矩阵部分则是未分解的部分,也是第k(k=l,2,3...)次迭代运算的对象。进而,在第k次迭代运算中,将该深灰色矩阵部分划分为两个条带A严和A2(k),其中A严作为当前工作条带;然后,在当前工作条带A,W上进行QR分解计算,并利用其分解计算的结果更新A;jW,从而得到图l(a)右侧的矩阵。其中,在该图l(a)右侧的矩阵中,深灰色矩阵部分W)成为第k+1次迭代运算的分解对象。
具体地,如图l(b)、 (c)和图2所示,在现有的条带QR分解方案中,对于给定的MxN矩阵A,首先将其划分为mxn块,其中每一个块的大小为Nb x Nb,例如32 x 32,然后才艮据
<formula>formula see original document page 9</formula>
在第k (k=l,2,3...)次迭代运算中执行以下步骤1 3:
在步骤1,从此次迭代运算的对象矩阵A^划分出由m x nb块构成的条带A,,作为当前工作条带,并在该当前工作条带A/^上进行QR分解计算,以将其分解为V部分和R部分;
在步骤2,根据步骤1的计算结果,计算当前工作条带A,W的三角因子T;
在步骤3,将当前工作条带A严以及A严的三角因子T应用于A叫的剩余矩阵部分A20^,以更新其数据。LAPACK只输出V和R矩阵,用户可以通过V矩阵,计算获得Q矩阵,从而完成QR分解。
图3示出了利用上述现有的条带QR分解方案对一个被划分为3x3块的矩阵进行QR分解的过程(只有一次迭代的情况)。其中,如图3(a)所示,在第1步,在该矩阵左侧3X1块的当前工作条带上进行QR分解;
如图3(b)所示,在第2步,计算该当前工作条带的三角因子Tk;如图3(c)所示,在笫3步,利用当前工作条带及其三角因子Tk对剩余的3x2块的矩阵部分进行更新。
根据上述现有的条带QR分解方案而设计的QR分解例程,会存在大量的矩阵乘操作,对于这样的例程而言,性能是非常关键的。
Cell宽频引擎(Cell Broadband Engine, CBE )是一种单芯片多处理器系统。如图4所示,CBE系统具有在一个共享的、相干的存储器上进行操作的9个处理器,其中包括一个主处理器(Power Processing Unit, PPU)和8个协处理器(Synergistic Processing unit, SPU )。在这样的系统结构下,CBE能够提供杰出的计算能力。具体来说,Cell处理器在时钟频率3.2GHz的情况下能够达到204G浮点运算数/秒。具有这样高的计算能力,对于高计算任务量的矩阵QR分解来说,CBE显然是一个理想的执行平台。
但是,上述现有的条带QR分解方案是为单处理器系统而设计的,如果将其直接应用于CBE这样的多处理器系统,则会存在存储器带宽限制的问题。因为,在CBE中,每个SPU的本地存储器容量是256K,这样,在超过256K的大数据量的情况下,就需要利用DMA方式在主存储器与SPU的本地存储器之间重复地进行读入/读出操作。例如,在将矩阵划分为每个块的大小为32 x 32的多个块的情况下,如果在CBE的8个SPU上实现上述现有的条带QR分解方案,则最大存储器需求将是20.6GB/秒。但是,CBE中的QS20和QS21刀片仅能够维持大致20.5GB/秒的存储器带宽。因此,存储器带宽成为上述现有的条带QR分解方案应用于CBE那样的多处理器系统以改进QR分解性能的一个瓶颈。
因此,需要^:计出一种适合于CBE这样的多处理器系统的QR分解方案。

发明内容
鉴于上述问题,本发明提供了一种在多处理器系统上对矩阵进行QR
10分解的方法和装置,以便利用CBE这样的多处理器系统来执行计算任务量较大的矩阵QR分解运算,从而充分发挥这样的多处理器系统所具有的高计算能力的优点。
根据本发明的一个方面,提供了一种在多处理器系统上对矩阵进行QR分解的方法,其中该多处理器系统包括至少一个核心处理器以及多个加速器(accelerator),该方法包括迭代地分解上述矩阵中的每个条带(panel)直到全部矩阵被分解;其中,在每一次迭代中包括按照预定的块大小,将上迷矩阵中未处理的矩阵部分划分为多个块;将该未处理的矩阵部分中当前处理的条带划分为至少两个子条带,其中该当前处理的条带包括多个块;以及利用上述多个加速器逐一在上述至少两个子条带上进行QR分解,并利用分解结果更新该至少两个子条带中还未进行QR分解的子条带的数据。
根据本发明的另 一个方面,提供了 一种在多处理器系统上对矩阵进行QR分解的方法,其中该多处理器系统包括至少一个核心处理器以及多个加速器,该方法包括迭代地分解上述矩阵中的每个条带直到全部矩阵被分解;其中,在每一次迭代中包括判断上述矩阵中未处理的矩阵部分的维数是否小于第一阈值,若是,则按照第一预定的块大小,将上述未处理的矩阵部分划分为多个块;以及不启动上述多个加速器,而利用上述核心处理器对该未处理的矩阵部分中当前处理的条带进行QR分解,其中该当前处理的条带包括多个块;否则,判断上述未处理的矩阵部分的维数是否大于上述第一阈值而小于第二阈值,若是,则按照第一预定的块大小,将上述未处理的矩阵部分划分为多个块;将对其中当前处理的条带进行QR分解所需的矩阵数据从上述多处理器系统的主存储器全部分发给上述多个加速器,其中该当前处理的条带包括多个块;以及协调上述多个加速器的每一个从其本地或其他的加速器获取所分发的数据,以进行上述当前处理的条带的QR分解;否则按照第二预定的块大小,将上述未处理的矩阵部分划分为多个块;将其中当前处理的条带划分为至少两个子条带,其中该当前处理的条带包括多个块;以及利用上述多个加速器逐一在上述至少两个子条带上进行QR分解,并利用分解结果更新该至少两个子条带中还未进行QR分解的子条带的数据。
根据本发明的另 一个方面,提供了 一种在多处理器系统中对矩阵进行QR分解的装置,其中该多处理器系统包括至少一个核心处理器以及多个加速器,该装置迭代地分解上述矩阵中的每个条带直到全部矩阵被分解,其包括块划分单元,用于在每一次迭代中,按照预定的块大小,将上述矩阵中未处理的矩阵部分划分为多个块;条带划分单元,用于在每一次迭
其中该当前处理的条带包括多个块;以及子条带处理单元,用于在每一次迭代中,利用上述多个加速器逐一在上述至少两个子条带上进行QR分解,据。
根据本发明的另 一个方面,提供了 一种在多处理器系统中对矩阵进行QR分解的装置,其中该多处理器系统包括至少一个核心处理器以及多个加速器,该装置迭代地分解上述矩阵中的每个条带直到全部矩阵被分解,其包括常规QR分解单元,用于按照笫一预定的块大小,将上述矩阵中未处理的矩阵部分划分为多个块,并且利用上述核心处理器对其中当前处理的条带进行QR分解,其中该当前处理的条带包括多个块;第一方案模块,用于按照第一预定的块大小,将上述未处理的矩阵部分划分为多个块,
系统的主存^器全部分发给上述多个加速器,以使上述多个加速器的每一个从其本地或其他的加速器获取数据进行上述当前处理的条带的QR分解,其中该当前处理的条带包括多个块;第二方案模块,用于按照第二预定的块大小,将上述未处理的矩阵部分划分为多个块,并且将其中当前处理的条带划分为至少两个子条带,利用上述多个加速器逐一在上述至少两个子条带上进行QR分解,并利用分解结果更新该至少两个子条带中还未进行QR分解的子条带的数据,其中该当前处理的条带包括多个块;选择单元,用于在每一次迭代中判断上述矩阵中未处理的矩阵部分的维数是否小于第一阈值,如果是,则针对该未处理的矩阵部分启动上述常规QR分解单元;否则,判断该未处理的矩阵部分的维数是否大于该第一阈值而小于第二阔值,如果是,则针对该未处理的矩阵部分启动上述第一方案模块;否则,针对该未处理的矩阵部分启动上述第二方案模块。


相信通过以下结合附图对本发明具体实施方式
的说明,能够使人们更好地了解本发明上述的特点、优点和目的。
图l是现有的条带QR分解方案的图示说明;图2是现有的条带QR分解方案的流程图3示出了利用现有的条带QR分解方案对一个3x3块的矩阵进行QR分解的过程;
图4是CBE的系统框图5是根据本发明实施例的在多处理器系统上对矩阵进行QR分解的方法的流程图6是根据本发明实施例的在多处理器系统上对矩阵进行QR分解的方法的图示说明;
图7是图5中的第一方案的流程图;图8示出了对矩阵进行划分的几种方式;
图9是各个SPU的本地存储器被分为两部分的CBE的系统框图;图IO是图5中的第二方案的流程图ii是图5中的第二方案的图示说明;
图12示出了利用本发明的第二方案对一个3x3块的矩阵进行QR分解的过程;
图13是根据本发明实施例的在多处理器系统中对矩阵进行QR分解的装置的方框图;以及
图14是图13中的笫二方案模块的方框图。
1具体实施例方式
下面就结合附图对本发明的各个优选实施例进行详细说明。
图5是#>据本发明实施例的在多处理器系统上对矩阵进行QR分解的方法的流程图。其中,该多处理器系统具有至少一个核心处理器以及多个加速器(accelerator)。具体地,该多处理器系统例如可以是前述具有一个PPU (核心处理器)和8个SPU (加速器)的CBE。
本实施例的在多处理器系统上对矩阵进行QR分解的方法,与前述现有的条带QR分解方案同样,对于给定的MxN矩阵A,通过迭代地每次在矩阵的一个条带上进行分解运算来最终将该矩阵A分解为M x N矩阵V和MxN上三角矩阵R的积,再通过计算获得MxM的矩阵Q,从而完成QR分解。其中,如图6的左侧所示,浅灰色的矩阵部分V、 R是通过第1 k-l次迭代运算已经分解了的矩阵部分,而深灰色的矩阵部分A严和入2(1<)结合起来的矩阵部分则是未分解的部分,也是第k ( k=l,2,3...)次迭代运算的对象。并且,图6右侧的矩阵是第k次迭代运算之后的矩阵,其中,深灰色的矩阵部分2f)成为第k+l次迭代运算的分解对象。
具体地,本实施例的在多处理器系统上对矩阵进行QR分解的方法,在第k (k=l,2,3...)次迭代运算中执行以下步骤505 525。
如图5所示,在步骤505,对于上述MxN矩阵A中未处理的矩阵部分,即本次迭代运算的对象,判断其维数是否小于第一阈值。如果是,则转到步骤510,否则前进到步骤515。
其中,该第一阈值是根据上述多处理器系统中的多个加速器之间的通信带宽的大小而确定的。在本实施例中,其例如可以是256。
在步骤510,上述未处理的矩阵部分的维数小于第一阈值,表明其成为较小型矩阵,所以仅使用该多处理器系统中的核心处理器(在CBE的情况下为PPU)对其进行QR分解。其中,该QR分解可以按照前述现有的条带QR分解方案进行,即首先将该未处理的矩阵部分划分为多个块,其中每个块的大小可以是32x32;然后从中划分出由多个块构成的当前工作条带,并在其上进4亍QR分解;然后利用该当前工作条带的分解结果更新其余的矩阵数据。
此外,在本实施例中,之所以要对小于256维的较小型矩阵仅启用核心处理器而不启用加速器,是基于这样的考虑完成小于256维这样的较小型矩阵的QR计算所需的时间很短,而启动多个诸如SPU的加速器也需要一定的时间,权衡之下若启动加速器则并不能够在这样较小型矩阵的情况下带来计算性能的显著提高。
此外,需要说明的是,在本实施例中,虽然以256维作为衡量未处理的矩阵部分是否成为较小型矩阵的标准,但是,本领域技术人员应该能够理解,这仅是示例性而并非限制性的,根据本说明书的教导,在具体实现中可以依情况釆用任何其他适合的值作为衡量较小型矩阵的标准。
接着,在步骤515,在上述未处理的矩阵部分的维数大于第一阈值的情况下,判断其维数是否小于第二阈值。如果是,则转到步骤520,否则前进到步骤525。
其中,该第二阈值是根据上述多个加速器的本地存储器的容量总计而确定的值。更具体地,该第二阈值是基于在进行QR分解时能够将一次迭代运算所需的矩阵数据全部分发到该多个加速器的本地存储器中、而无需使该多个加速器在一次迭代运算的过程中从主存储器读取数据的考虑而设定的。例如,在具有8个SPU的CBE的情况下,由于每个SPU的本地存储器容量是256K字节,这8个SPU的本地存储器的容量总计将是256K^8-2048K字节,所以可以将该第二阈值设定为2K,使一次迭代运算所需的数据能够完全分布在这8个SPU的本地存储器中。
当然,本领域技术人员应该能够理解,2K仅是示例性而并非限制性的,根据本说明书的教导,在具体实现中可以依情况采用任何其他适合的值。
在步骤520,采用图7所示的第一方案,对该维数大于第一阈值而小于第二阈值的未处理矩阵部分进行QR分解。
在步骤525,上述未处理的矩阵部分的维数大于第二阔值,表明其是较大型矩阵,因而采用图IO所示的第二方案,对其进行QR分解。
图7是根据本发明实施例的在多处理器系统上对矩阵进行QR分解的笫一方案的流程图。
本实施例的该第一方案用于在诸如CBE的多处理器系统上对维数大于第一阈值、例如256而小于第二阈值、例如2K的矩阵进行当前工作条带的QR分解。
具体地,本实施例的该第一方案,在一次迭代运算中,如图7所示,首先在步骤705,将上述未处理的矩阵部分划分为多个块,其中每个块的大小可以是32 x32。
然后,在步骤710,与前述现有的条带QR分解方案同样,从上述未处理的矩阵部分中划分出由多个块构成的当前工作条带,以^更在其上进行QR分解。但是,所不同的是,本实施例的该第一方案是利用多个加速器来共同完成QR分解这一过程的,因此,在进行分解之前,首先要进行分解所需的数据的分发等步骤715 725。
在步骤715,将上述当前工作条带的QR分解运算所需的矩阵数据从该多处理器系统的主存储器全部分发到上述多个加速器的本地存储器中。
由于如上所述,第二阈值是基于在进行QR分解时能够将一次迭代运算所需的矩阵数据全部分发到该多个加速器的本地存储器中、而无需使该
多个加速器在一次迭代运算的过程中从主存储器读取数据的考虑而设定的,所以在该第二阈值的确保下,能够将上述当前工作条带的QR分解运算所需的数据全部分布在该多个加速器的本地存储器中。
此外,为了实现矩阵数据的分发,图8(a) (e)示出了对需要分发的矩阵部分进行划分(图8中所示出的是划分为4部分以分发给4个加速器的情况)的几种方式。其中,具有相同标记的矩阵部分将分发给同一加速器。具体地,图8(a)所示出的是列块划分方式,即按照加速器的数量将所需要分发的矩阵部分划分为均等列块;图8(b)所示出的是按列周期性划分方式;图8(c)所示出的是按列周期性块划分方式;图8(d)所示出的是行列周期性块划分方式;图8(e)所示出的是块倾斜划分(block skewed layout)方式。
在本实施例中,优选使用图8(d)所示出的行列周期性块划分方式对当前工作条带的QR分解计算所需要的矩阵数据进行划分以分发给上述多个加速器,由多个加速器同时对当前条带进行QR分解。当然,并不限于此,在具体实现中,也可以依情况采用图8(a)、 (b)、 (c)或(e)所示出的方式。
接着,在步骤"0,判断各个加速器进行计算所需的数据是否存在于其本地存储器内。如果不存在,则前进到步骤725,否则转到步骤730。
在该笫一方案中,由于利用多个加速器来共同执行当前工作条带的QR分解,所以每个加速器都要分担其中的一部分数据的计算,所以在各个加速器进行自身的计算之前,首先需要确保这各个加速器所负责计算的数据部分存在于其本地存储器内。
在步骤725,对于计算数据不存在于其本地存储器内的加速器,利用DMA方式搜索其他加速器的本地存储器以获取所需的计算数据。
在本发明的一个实施例中,如图9所示,可以将诸如SPU的每个加速器的本地存储器划分为A、 B两个部分,以分别存储从该多处理器系统的主存储器分发来的矩阵数据和通过DMA方式从其他加速器的本地存储器读取来的矩阵数据。
在步骤730,协调上述多个加速器利用从本地存储器或其他加速器的本地存储器获取的数据进行上述当前工作条带的QR分解运算。
在步骤735,根据步骤730的计算结果,协调上述多个加速器计算当前工作条带的三角因子。
在步骤740,利用当前工作条带以及当前工作条带的三角因子更新上述未处理的矩阵部分中、除了该当前工作条带之外的其余矩阵部分。
其中,在步骤730和735的计算过程中,在这各个加速器相互之间要进行计算结果的实时互通,以确保计算的统一性。
以上就是对本实施例的在多处理器系统上对矩阵进行QR分解的第一方案的详细描述。在该第一方案中,在矩阵维数小于第二阔值的情况下,将当前工作条带的QR分解计算所需的矩阵数据全部分发到各个加速器的本地存储器中,并且当所需数据不在本加速器的本地存储器中时,不是从系统主存中通过DMA读取数据,而是通过DMA从其他加速器的本地存储器读取数据。从而,由于诸如SPU的加速器之间互连的带宽为204.8GB/秒,其远大于SPU到主存储器的带宽25.6GB/秒,所以能够大幅度降低QR分解中的DMA开销,能够避免在QR分解过程中存储器带宽需求大于系统所能够提供的存储器带宽的问题。
图10是根据本发明实施例的用于在多处理器系统上对矩阵进行QR分解的第二方案的流程图,图ll是该第二方案的图示说明。
本实施例的该第二方案用于在诸如CBE的多处理器系统上对维数大于第二阈值、例如2K的较大型矩阵进行当前工作条带的QR分解。
具体地,本实施例的第二方案,在一次迭代中,如图10所示,首先在步骤100,将上述未处理的矩阵部分划分为mxn块,其中每一个块的大小为NbXNb。在本实施例中,该NbXNb例如是64 x64。
也就是说,与现有的条带QR分解方案相比,在本实施例的第二方案中,增大了矩阵的块大小。其原因在于,增加块的大小能够降低系统主存与各加速器之间的存储器带宽需求。因为,如上所述,在块大小为32x32的情况下,利用8个SPU进行QR分解运算的存储器带宽需求将是20.6GB/秒。而在块大小为64 x 64的情况下,存储器带宽需求将降低至18.4GB/秒,这对于能够维持大致20.5GB/秒存储器带宽的CBE这样的多处理器系统而言,是完全能够承受的。
接着,在进行块划分之后,在本实施例的第二方案中,根据
4i J12

22夕
0 i
22 乂
执行以下步骤101-103。
在步骤101,参照图6,在未处理矩阵部分A^的当前工作条带A/k)上进行QR分解,以将其分解为V部分和R部分。
具体地,在步骤101的子步骤101-1,从上述未处理矩阵部分A^划分出由mxnb块构成的条带A/k),作为当前工作条带,并如图ll(a)所示,进而将该当前工作条带A严划分为大小相等的左右两个子条带A,严和A12(k),并且如图ll(b)所示,协调上述多个加速器在左侧子条带An^上进行QR分解计算。在步骤101的子步骤101-2,根据步骤101-1的计算结果,协调上述多个加速器计算上述左侧子条带Au^的三角因子T。
在步骤101的子步骤101-3,将上述左侧子条带A严以及An^的三角因子T应用于右侧子条带A12(k),以更新该右侧子条带入12(14)的数据。
在步骤101的子步骤101-4,协调上述多个加速器在更新后的上述右侧子条带^严上进行QR分解计算。
在步骤102,根据步骤101的计算结果,协调上述多个加速器计算当前工作条带A/W的三角因子T。
在步骤103,将当前工作条带A/"以及A/"的三角因子T应用于A(k)的剩余的矩阵部分A2,以更新该矩阵部分入2(10的数据。并且,在更新后的矩阵中,如图ll(b)所示,深灰色的矩阵部分^"成为第k+l次迭代运算的对象。
也就是说,在本发明的第二方案中,将在现有的条带QR分解方案中作为第1步QR分解计算的对象的当前工作条带A,W进一步分为多个子条带,并分别在各个子条带上进行QR分解计算。
下面仍以3x3块的矩阵(只有一次迭代的情况)为例,说明本实施例的上述第二方案的过程。参照图12(a),本实施例的该第二方案将现有的条带QR分解方案的第1步进而分为4个子步骤,其中将作为该第1步QR分解计算的对象的左侧3 x l块的条带进一步划分为左右两个子条带,并首
先在左侧的子条带上进行QR分解计算,并用计算结果更新右侧的子条带,然后在更新后的右侧子条带上进行QR分解计算。然后,如图12(b)、 (e)所示,与现有的条带QR分解方案相同,在第2步计算当前工作条带的三角因子Tk,在第3步将当前工作条带及其三角因子Tk应用于剩余的矩阵部分以更新其数据。
以上就是对本实施例的在多处理器系统上对矩阵进行QR分解的第二方案的详细描述。在该第二方案中,通过增加块的大小,能够降低诸如SPU的加速器与主存储器之间的存储器带宽需求,并且通过在一次迭代中将作为QR分解计算的对象的当前工作条带进一步划分为多个子条带并分别在这多个子条带上进行qr分解计算,能够降低因块大小的增加而带来的qr 分解计算的复杂度、进而计算时间的增加。
需要说明的是,在本实施例的上迷第二方案中,在步骤101和102中 也涉及到从该多处理器系统的主存储器到上述多个加速器的矩阵数据的分 发,对此,也可以采用图8所示出的矩阵划分方式。
此外,还需要说明的是,在本实施例的上述第二方案中,虽然将当前 工作条带A严进一步划分为左右两个子条带A,严和A12(k),但是,并不 限于此,也可以将其划分为更多的子条带。并且,在上述实施例中,虽然 将当前工作条带A严划分为大小相等的左右两个子条带A!严和A12(k),但 是,并不限于此,也可以划分为大小不等的子条带。
还需要说明的是,虽然在图5所示出的方法中,根据未处理矩阵的维 数大小采取不同的qr分解方案,但是,也可以不判断未处理矩阵的维数 而在任何情况下都采取图10和11所示出的第二方案。
在同 一发明构思下,本发明提供一种在多处理器系统中对矩阵进行 qr分解的装置。下面结合附图对其进行描述。
图13是4艮据本发明实施例的在多处理器系统中对矩阵进行qr分解的 装置的方框图。其中,该多处理器系统具有至少一个核心处理器以及多个 加速器。具体地,该多处理器系统例如可以是前述具有一个ppu (核心处 理器)和8个spu (加速器)的cbe。
本实施例的在多处理器系统中对矩阵进行qr分解的装置,对于给定 的M x N矩阵A,通过迭代地每次在矩阵的一个条带上进行分解运算来最 终将该矩阵A分解为M x M正交矩阵q和M x N上三角矩阵r的积。
具体地,如图13所示,本实施例的在多处理器系统中对矩阵进行qr 分解的装置13包括选择单元131、常规qr分解单元132、第一方案模 块133、第二方案模块134。
其中,选择单元131在每一次迭代中判断上述矩阵A中未处理的矩阵 部分(输入矩阵)的维数是否小于第一阔值,如果是,则针对该未处理的 矩阵部分启动常规qr分解单元132;否则,判断该未处理的矩阵部分的
20维数是否大于第一阈值而小于第二阈值,如果是,则针对该未处理的矩阵
部分启动第一方案模块133;否则,启动第二方案才莫块134。
优选地,上述笫一阈值是根据上述多处理器系统中的多个加速器之间 的通信带宽的大小而确定的,其例如可以是256;第二阈值是根据上述多 个加速器的本地存储器的容量总计而确定的,其例如可以是2K。
常规QR分解单元132,针对维数小于第一阈值的上述未处理的矩阵 部分,按照第一预定的块大小、例如32 x32,将其划分为多个块,并仅启 用核心处理器对其中包括多个块的当前工作条带进行QR分解运算。即该 常规QR分解单元132是根据前述现有的条带QR分解方案来实现的。
第一方案模块113,对于维数大于第一阈值而小于第二阈值的上述未 处理的矩阵部分,采用第一方案对其进行QR分解运算。
如图13所示,该第一方案^^块133可以进一步包括块划分单元1331, 用于按照预定的块大小、例如32x32,将上述未处理的矩阵部分划分为多 个块;数据分发单元1332,用于将对上述未处理的矩阵部分中、包括多个 块的当前工作条带进行QR分解运算所需的矩阵数据从上述多处理器系统 的主存储器全部分发给上述多个加速器;判断单元1333,用于为上述多个 加速器的每一个,判断其进行计算所需的数据是否存在于该加速器本地; 数据获取单元1334,用于为上述多个加速器中进^f亍计算所需的数据不存在 于该加速器本地的加速器,搜索其他加速器以获取该所需的数据;以及QR 分解单元1335,用于协调上述多个加速器利用从其本地或其他的加速器获 取的数据进行上述当前工作条带的QR分解、三角因子的计算,并根据计 算结果更新当前工作条带之外的矩阵部分。
笫二方案模块134,对于维数大于第二阈值的上述未处理的矩阵部分, 采用第二方案对其进行QR分解运算。
图14是根据本发明实施例的在多处理器系统中对矩阵进行QR分解的 第二方案模块的方框图。
如图14所示,该第二方案才莫块134包括块划分单元1341、条带划 分单元1342、子条带处理单元1343、三角因子计算单元l344、矩阵更新单元1345。
块划分单元1341按照预定的块大小、例如64x 64,将上述未处理的 矩阵部分划分为多个块。
条带划分单元1342将上述未处理的矩阵部分中、包括多个块的当前处 理的条带划分为至少两个子条带。具体地,该条带划分单元1342可以将上 述当前处理的条带进一步划分为左侧子条带和右侧子条带。
子条带处理单元1343利用上述多个加速器逐一在上述至少两个子条 带上进行QR分解,并利用分解结果更新该至少两个子条带中还未进行QR 分解的子条带的数据。
在上述当前处理的条带被划分为左侧子条带和右侧子条带的情况下, 子条带处理单元1343可以进一步包括子条带QR分解单元13431,用于 利用上述多个加速器依次在上述左侧子条带和上述右侧子条带上进行QR 分解运算;子条带三角因子计算单元13432,用于在上述左侧子条带的QR 分解运算结束后,根据该分解运算的结果,计算该左侧子条带的三角因子; 以及子条带更新单元13433,用于利用该左侧子条带及其三角因子更新上 述右侧子条带的数据;其中上述子条带QR分解单元13431在更新后的上 述右侧子条带上进行QR分解运算。
三角因子计算单元1344,在上述至少两个子条带均进行了 QR分解运 算之后,计算作为该至少两个子条带的整体的、上述当前处理的条带的三 角因子。
矩阵更新单元1345,利用上述当前处理的条带及其三角因子更新上述 矩阵中还未进行迭代运算的部分的数据。
以上就是对本实施例的在多处理器系统中对矩阵进行QR分解的装置 的详细描述。其中,该装置13及其各个组成部分,可以由专用的电路或芯 片构成,也可以通过计算机(处理器)执行相应的程序来实现。
需要说明的是,虽然在图13所示出的装置13中,根据未处理矩阵的 维数大小启动不同的QR分解^^莫块,但是,也可以不判断未处理矩阵的维 数而在任何情况下都启动第二方案模块134。以上虽然通过一些示例性的实施例对本发明的在多处理器系统上对矩
阵进行QR分解的方法和装置进行了详细的描述,但是以上这些实施例并 不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化 和修改。因此,本发明并不限于这些实施例,本发明的范围仅以所附权利 要求为准。
权利要求
1. 一种在多处理器系统上对矩阵进行QR分解的方法,其中该多处理器系统包括至少一个核心处理器以及多个加速器(accelerator),该方法包括迭代地分解上述矩阵中的每个条带(panel)直到全部矩阵被分解;其中,在每一次迭代中包括按照预定的块大小,将上述矩阵中未处理的矩阵部分划分为多个块;将该未处理的矩阵部分中当前处理的条带划分为至少两个子条带,其中该当前处理的条带包括多个块;以及利用上述多个加速器逐一在上述至少两个子条带上进行QR分解,并利用分解结果更新该至少两个子条带中还未进行QR分解的子条带的数据。
2. 根据权利要求l所述的方法,其中上述预定的块大小是64x 64。
3. 根据权利要求l所述的方法,其中上迷将该未处理的矩阵部分中当 前处理的条带划分为至少两个子条带的步骤进一步包括将该未处理的矩阵部分中当前处理的条带进一步划分为左侧子条带和 右侧子条带。
4. 根椐权利要求3所述的方法,其中上述左侧子条带和右侧子条带的 大小不等。
5. 根据权利要求3所述的方法,其中上述左侧子条带和右侧子条带的 大小相等。
6. 根据权利要求3所述的方法,其中利用上迷多个加速器逐一在上述 至少两个子条带上进行QR分解,并利用分解结果更新该至少两个子条带 中还未进行QR分解的子条带的数据的步骤进一 步包括在上述左侧子条带上进行QR分解运算;根据上述QR分解运算的结果,计算上述左侧子条带的三角因子; 利用上述左侧子条带及其三角因子更新上述右侧子条带的数据;以及在更新后的上述右侧子条带上进行QR分解运算。
7. 根据权利要求1或6所述的方法,在每一次迭代中还包括 在上述至少两个子条带均进行了 QR分解运算之后,计算作为该至少两个子条带的整体的、上述当前处理的条带的三角因子;以及利用上述当前处理的条带及其三角因子更新上述未处理的矩阵部分中 还未进行迭代的矩阵部分的数椐。
8. 根据权利要求1所述的方法,其中利用上述多个加速器逐一在上述 至少两个子条带上进行QR分解,并利用分解结果更新该至少两个子条带 中还未进行QR分解的子条带的数据的步骤还包括以行列周期性块划分的方式,将该QR分解运算所需的矩阵数据从该 多处理器系统的主存储器分发给上述多个加速器。
9. 一种在多处理器系统上对矩阵进行QR分解的方法,其中该多处理 器系统包括至少 一个核心处理器以及多个加速器,该方法包括迭代地分解上述矩阵中的每个条带直到全部矩阵被分解; 其中,在每一次迭代中包括判断上迷矩阵中未处理的矩阵部分的维数是否小于第一阈值,若是,则按照第一预定的块大小,将上述未处理的矩阵部分划分为多个块;以及不启动上迷多个加速器,而利用上述核心处理器对该未处理 的矩阵部分中当前处理的条带进行QR分解,其中该当前处理的条带包括多个块;否则,判断上述未处理的矩阵部分的维数是否大于上述第一阈值而小于第二阈值,若是,则按照第一预定的块大小,将上迷未处理的矩阵部分划分为多个块;将对上述未处理的矩阵部分中当前处理的条带进行QR分解 所需的矩阵数据从上述多处理器系统的主存储器全部分发给上迷多个加速器,其中该当前处理的条带包括多个块;以及协调上述多个加速器的每一个从其本地或其他的加速器获取 所分发的数椐,以进行上述当前处理的条带的QR分解; 否则按照第二预定的块大小,将上述未处理的矩阵部分划分为多个块;将上述未处理的矩阵部分中当前处理的条带划分为至少两个 子条带,其中该当前处理的条带包括多个块;以及利用上述多个加速器逐一在上述至少两个子条带上进行QR 分解,并利用分解结果更新该至少两个子条带中还未进行QR分解的子条 带的数据。
10. 根据权利要求9所述的方法,其中上迷第一阈值是根据上述多个 加速器之间的通信带宽的大小而确定的值,上述第二阅值是根据上述多个 加速器的本地存储容量的总计而确定的值。
11. 根据权利要求9或IO所述的方法,其中上述第一阈值是256,上 述第二阈值是2K。
12. 根据权利要求9所迷的方法,其中上述第一预定的块大小是32x 32,上述第二预定的块大小是64x 64。
13. 根据权利要求9所述的方法,其中将对上述未处理的矩阵部分中 当前处理的条带进行QR分解所需的矩阵数据从上迷多处理器系统的主存 储器全部分发给上述多个加速器的步骤进一步包括以行列周期性块划分的方式,将该矩阵数椐从上述多处理器系统的主 存储器全部分发给上述多个加速器。
14. 根据权利要求9所述的方法,其中协调上述多个加速器的每一个 从其本地或其他的加速器获取所分发的数椐,以进行上述当前处理的条带 的QR分解的步骤进一步包括为上述多个加速器的每一个,判断其进行计算所需的数据是否存在于 该力口速器本地;为上述多个加速器中进行计算所需的数据不存在于该加速器本地的加速器,搜索其他加速器以获取该所需的数据;以及协调上述多个加速器利用从其本地或其他的加速器获取的数据进行上 述当前处理的条带的QR分解。
15. —种在多处理器系统中对矩阵进行QR分解的装置,其中该多处 理器系统包括至少一个核心处理器以及多个加速器,该装置迭代地分解上 述矩阵中的每个条带直到全部矩阵被分解,其包括块划分单元,用于在每一次迭代中,按照预定的块大小,将上述矩阵 中未处理的矩阵部分划分为多个块;条带划分单元,用于在每一次迭代中,将上述未处理的矩阵部分中当 前处理的条带划分为至少两个子条带,其中该当前处理的条带包括多个块; 以及子条带处理单元,用于在每一次迭代中,利用上迷多个加速器逐一在 上述至少两个子条带上进行QR分解,并利用分解结果更新该至少两个子 条带中还未进行QR分解的子条带的数据。
16. 根据权利要求15所述的装置,其中上述条带划分单元将上述当前 处理的条带进一步划分为左侧子条带和右側子条带;并且上述子条带处理单元进一步包括子条带QR分解单元,用于利用上述多个加速器依次在上述左侧子条 带和上述右侧子条带上进行QR分解运算;子条带三角因子计算单元,用于在上述左侧子条带的QR分解运算结 束后,根据该QR分解运算的结果,计算该左侧子条带的三角因子;以及子条带更新单元,用于利用该左侧子条带及其三角因子更新上述右側 子条带的数据;其中上述子条带QR分解单元在更新后的上述右侧子条带上进行QR 分解运算。
17,根据权利要求15或16所述的装置,还包括 三角因子计算单元,用于在每一次迭代中,在上迷至少两个子条带均进行了 QR分解运算之后,协调上迷多个加速器计算作为该至少两个子条 带的整体的、上述当前处理的条带的三角因子;以及矩阵更新单元,用于在每一次迭代中,利用上述当前处理的条带及其三角因子更新上述未处理的矩阵部分中还未进^f亍迭代的矩阵部分的数据。
18. —种在多处理器系统中对矩阵进行QR分解的装置,其中该多处 理器系统包括至少一个核心处理器以及多个加速器,该装置迭代地分解上 述矩阵中的每个条带直到全部矩阵被分解,其包括常规QR分解单元,用于按照第一预定的块大小,将上述矩阵中未处 理的矩阵部分划分为多个块,并且利用上述核心处理器对其中当前处理的 条带进行QR分解,其中该当前处理的条带包括多个块;第一方案模块,用于按照第一预定的块大小,将上述未处理的矩阵部 分划分为多个块,并将对其中当前处理的条带进行QR分解所需的矩阵数 据从上述多处理器系统的主存储器全部分发给上述多个加速器,并使上述 多个加速器的每一个从其本地或其他的加速器获取数据进行上述当前处理 的条带的QR分解,其中该当前处理的条带包括多个块;第二方案冲莫块,用于按照第二预定的块大小,将上述未处理的矩阵部 分划分为多个块,并且将其中当前处理的条带划分为至少两个子条带,利 用上述多个加速器逐一在上述至少两个子条带上进行QR分解,并利用分 解结果更新该至少两个子条带中还未进行QR分解的子条带的数据,其中 该当前处理的条带包括多个块;选择单元,用于在每一次迭代中判断上述矩阵中未处理的矩阵部分的 维数是否小于第一阈值,如果是,则针对该未处理的矩阵部分启动上述常 规QR分解单元;否则,判断该未处理的矩阵部分的维数是否大于该第一 闳值而小于第二阈值,如果是,则针对该未处理的矩阵部分启动上迷第一 方案模块;否则,针对该未处理的矩阵部分启动上述第二方案模块。
19. 根据权利要求18所述的装置,其中上迷笫一方案模块进一步包括: 数据分发单元,用于将对上述当前处理的条带进行QR分解所需的矩阵数据从上迷多处理器系统的主存储器全部分发给上迷多个加速器;判断单元,用于为上述多个加速器的每一个,判断其进行计算所需的数据是否存在于该加速器本地;数据获取单元,用于为上述多个加速器中进行计算所需的数据不存在 于该加速器本地的加速器,搜索其他加速器以获取该所需的数据;以及QR分解单元,用于协调上述多个加速器利用从其本地或其他的加速 器获取的数据进行上述当前处理的条带的QR分解、三角因子的计算,并 根据计算结果更新其余的矩阵部分。
全文摘要
本发明提供了一种在多处理器系统上对矩阵进行QR分解的方法和装置。其中该多处理器系统包括至少一个核心处理器以及多个加速器。该方法包括迭代地分解上述矩阵中的每个条带直到全部矩阵被分解;其中,在每一次迭代中包括按照预定的块大小,将上述矩阵中未处理的矩阵部分划分为多个块;将该未处理的矩阵部分中当前处理的条带划分为至少两个子条带,其中该当前处理的条带包括多个块;以及利用上述多个加速器逐一在上述至少两个子条带上进行QR分解,并利用分解结果更新该至少两个子条带中还未进行QR分解的子条带的数据。本发明使具有高计算能力的多处理器系统能够应用于计算任务量大的矩阵QR分解。
文档编号G06F17/16GK101533386SQ20081008607
公开日2009年9月16日 申请日期2008年3月14日 优先权日2008年3月14日
发明者晖 李, 王佰玲 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1