多处理器系统的三角线性方程组求解的方法和装置的制作方法

文档序号:6469934阅读:157来源:国知局
专利名称:多处理器系统的三角线性方程组求解的方法和装置的制作方法
技术领域
本发明涉及数据处理领域,具体地,涉及多处理器系统的三角线性方 程组求解的方法和装置。
LAPACK (Linear Algebra PACKage,线性代数包)是Oak Ridge国 家实验室、加州大学Davis分校和Illinois大学等联合开发的非常有效、强 大且广泛使用的线性代数函数库,用于在不同高性能计算环境上高效求解 数值线性代数问题,其已经有效地为HPC( High Performance Computing, 高性能计算)和计算科学组织工作了 20多年的时间。关于LAPACK的详 细内容,可参见http:〃netlib.amss.ac.cn/lapack/index.html0
作为专业的线性代数库,LAPACK提供了各种线性代数的子程序,其 中包括按照下述矩阵方程(l)、 (2)、 (3)或(4)进行三角线性方程组求解的例 程(LAPACK代数库中,该三角线性方程组求解的函数名为TRSM):
其中,alpha是标量;X和B是mXn矩阵;A是单位或非单位的上三角 或下三角矩阵。
图l是以A是下三角矩阵、alpha=l,即上述矩阵方程(l)成为A*X=B 的情况为例对TRSM函数的三角线性方程组求解的含义的图示说明。
从图1可以看出,按照上述矩阵方程(1)或(2)使用TRSM函数进行三
皆景技术
A*X=alpha*B X* A=alpha*B AT*X=alpha*B X* AT=alpha*B
(1)
(2)
(3)
(4)角线性方程组求解的例程,对于给定的m x n矩阵B,在给定的标量alpha 以及单位或非单位的上三角或下三角矩阵A下,求解出mxn矩阵x,并 且,所求解出的矩阵X被复写在矩阵B上。
Cell宽频引擎(Cell Broadband Engine, CBE)是一种单芯片多处理 器系统。如图2所示,CBE系统具有在一个共享的、相干的存储器上进行 操作的9个处理器,其中包括一个主处理器(Power Processing Unit, PPU) 和8个协处理器(Synergistic Processing unit, SPU)。在这样的系统结构 下,CBE能够提供杰出的计算能力。具体来说,Cell处理器在时钟频率 3.2GHz的情况下能够达到204G浮点运算数/秒。在这样高的计算能力的支 持下,对于具有高计算任务量的LAPACK中的例程来说,CBE是一个理 想的执行平台。
但是,如果要在CBE这样的多处理器系统上执行LAPACK中的例程, 则由于多个处理器的存在,需要进行例程的并行性设计。
上述用于使用TRSM函数实现三角线性方程组求解的例程针对CBE 这样的多处理器系统的一种现有的并行性实现方案是,首先将给定矩阵B 划分为多个64 x 64大小的子矩阵;然后按列将子矩阵分配给多个处理器, 使多个处理器并行地对其各自分配到的列的子矩阵进行计算更新。
也就是i兌,由于对于一个子矩阵的计算更新仅依赖于该子矩阵上方的 子矩阵更新后的数据,处于一列上的子矩阵需要按照顺序进行处理,而在 各列之间是可以并行地进行计算更新的,所以上述并行性实现方案通过按 列分配子矩阵,使每一个处理器负责对分配给它的那一列的子矩阵依次进 行计算更新,来实现多个处理器的并行性。
图3是上述现有的并行性实现方案的示例性图示说明,其示出的是多 处理器系统使用5个SPU对被划分为8行x6列个子矩阵的矩阵B使用 TRSM函数进行三角线性方程组求解的情况。
从图3可以看出,在该示例性情况下,在才艮据上述并行性实现方案的 求解过程中,首先对5个SPU、即SPU0-SPU4按顺序各分配一列的子矩 阵,使SPU0-SPU4并行地对各自的列的子矩阵依次进行计算更新;然后,
8在SPU0-SPU4完成其各自的第一列的子矩阵的计算更新之后,由于矩阵B 中还有最后一列子矩阵未处理,所以仅继续采用SPUO来完成该最后一列 子矩阵的计算更新,而其余的SPU1-SPU4则成为空闲状态。这样,在所 有6列的子矩阵的计算更新均完成时,SPUO共处理了两列、16个子矩阵, 而SPU1-SPU4则X3l处理了一列、8个子矩阵。这样,在整个求解过程中, SPU0-SPU4的负载是不平衡的。可以想象,如果矩阵B的行数远远大于列 数,则负载不平衡的状况将加剧。
这样,在上述并行性实现方案中,由于按列分配给定矩阵中的子矩阵, 而存在着因列的数量与处理器的数量不匹配而导致多个处理器所分配到的 负载不平衡的可能性。从而,由于多个处理器的负载不平衡,所以在负载 高的处理器进行工作时,负载低的处理器必然在一段时间内是空闲的,这 样,这多个处理器的计算能力就不能得到同时充分地利用来达到峰值性能。

发明内容
鉴于上述问题,本发明提供了一种在多处理器系统上进行三角线性方 程组求解的方法和装置,以确保在求解过程中向多个处理器分配的负载达 到平衡,从而充分利用这多个处理器的计算能力来达到峰值性能。
根据本发明的一个方面,提供了一种在多处理器系统上进行三角线性 方程组求解的方法,其中该多处理器系统包括至少一个核心处理器以及多 个加速器(accelerator),该方法包括按照预定的子矩阵大小,将要进 行三角线性方程组求解的矩阵划分为多个子矩阵;以及迭代地对上述多个 子矩阵进行计算更新;其中,在每一次迭代中包括从上述多个子矩阵中 还未进行计算更新的子矩阵开始,按照行方向并且按照为上述多个加速器
预先确定的先后顺序,向该多个加速器各分配一个子矩阵;以及使上述多
个加速器并行地对各自的子矩阵进行计算更新。
根据本发明的另 一个方面,提供了 一种在多处理器系统中进行三角线 性方程组求解的装置,其中该多处理器系统包括至少 一个核心处理器以及 多个加速器,该装置使上述多个加速器迭代地对要进行三角线性方程组求解的矩阵进行计算更新,其包括矩阵划分单元,用于按照预定的子矩阵 大小,将要进行三角线性方程组求解的矩阵划分为多个子矩阵;以及子矩 阵分配单元,用于在每一次迭代中,从上述多个子矩阵中还未进行计算更
新的子矩阵开始,按照行方向并且按照为上述多个加速器预先确定的先后 顺序,向该多个加速器各分配一个子矩阵;以及计算更新^f莫块,用于在每 一次迭代中,使上述多个加速器并行地对各自的子矩阵进行计算更新。


相信通过以下结合附图对本发明具体实施方式
的说明,能够使人们更 好地了解本发明上述的特点、优点和目的。
图1是以A是下三角矩阵、alpha=l的情况为例使用TRSM函数的三 角线性方程组求解的图示说明;
图2是CBE的系统框图3是现有的使用TRSM函数的三角线性方程组求解的并行性实现方 案的示例性图示i兌明;
图4是才艮据本发明实施例的在多处理器系统上进行三角线性方程组求 解的方法的流程图5是图4的方法的示例性图示说明;
图6是以一个加速器为例、图4的方法中多个加速器并行地对各自分 配到的子矩阵进行计算更新的步骤的详细流程图; 图7是图6的过程的示例性图示i兌明;
图8是根据本发明实施例的在多处理器系统中进行三角线性方程组求 解的装置的方框图;以及
图9是图8的装置中计算更新模块的详细方框图。
具体实施例方式
下面就结合附图对本发明的各个优选实施例进行详细说明。
图4是4艮据本发明实施例的在多处理器系统上进行三角线性方程组求解的方法的流程图。其中,该多处理器系统具有至少一个核心处理器以及
多个加速器(accelerator)。具体地,该多处理器系统例如可以是前述具 有一个PPU (核心处理器)和8个SPU (加速器)的CBE。
本实施例的在多处理器系统上进行三角线性方程组求解的方法,与前 述现有的并行性实现方案同样,首先将给定的m x n矩阵B划分为多个子 矩阵,然后将多个子矩阵分配给多个加速器,使多个加速器并行地对其各 自分配到的子矩阵进行计算更新。但是,不同的是,在本实施例中,不是 按列向多个加速器分配子矩阵,而是逐个子矩阵地来进行分配。
具体地,如图4所示,本实施例的在多处理器系统上进行三角线性方 程组求解的方法,首先在步骤405,按照预定的子矩阵大小,将主存储器 中要进行三角线性方程组求解的给定矩阵B划分为多个子矩阵。例如,在 一个实施例,该子矩阵大小是64x 64。
在步骤410,在该多处理器系统的核心处理器的本地存储区中,设置 用于为上述多个加速器存储子矩阵索引的索引存储区。该索引存储区用于 为上述多个加速器的每一个存储该加速器已经完成计算更新的子矩阵的 行、列索引,以便在各个加速器之间交换工作状态的信息。本领域技术人 员可以知道,设置索引存储区只是在各个加速器之间交换工作状态的信息 的一种方式,本领域技术人员也可以采用其它方式,例如在PPU中采用数 组、哈西表等方式。
并且,在本步骤中,初始将该索引存储区全部赋值为-1,这里-1只是 一个示意性的值,本领域技术人员可以知道,该值可以设为任何不影响后 续计算的值。
在一个实施例中,在本步骤中,在核心处理器(在CBE的情况下是 PPU)的原子区域中设置128字节的空间来作为索引存储区。但是,并不 限于此,也可以设置更大或更小的空间作为索引存储区。
并且,本领域技术人员可以理解,核心处理器中的原子区域是存储速 度相对较快的区域,利用该区域作为上述多个加速器的求解过程中的索引 存储区,能够提升各个加速器的索引读取速度。
ii在步骤415,从上述矩阵B中还未经过计算更新的子矩阵开始,按照 行方向并且按照为上述多个加速器预先确定的先后顺序,向该多个加速器 的每一个各分配一个子矩阵。其中,该预先确定的先后顺序是该多个加速 器被分配子矩阵的先后顺序,其可以通过预先为上述多个加速器设定编号 来确定。在步骤420,上述多个加速器并行地对各自分配到的子矩阵进行计算 更新,并且将更新后的子矩阵写回到主存储器中。在步骤425,对于上述多个加速器的每一个,在该加速器完成其分配 到的子矩阵的计算更新后,为该加速器更新上述索引存储区。在本实施例中,在上述索引存储区中,为上述多个加速器的每一个均 分配一个索引区,用于存储由该加速器完成计算更新的子矩阵的行、列索 引。并且,在一个实施例中,上述多个加速器的每一个的索引区仅存储该 加速器最近完成计算更新的那一个子矩阵的行、列索引。并且,该行、列 索引表示子矩阵在上述矩阵B中所处的、按照子矩阵计数的行、列位置, 以表明该子矩阵是矩阵B中第几行、第几列的位置上的子矩阵。从而,在本步骤中,为上述多个加速器的每一个更新上述索引存储区 的过程包括确定该加速器刚刚完成计算更新的子矩阵在上述矩阵B中的 行、列位置;将该行、列位置存储到上述索引存储区中与该加速器对应的 索引区中。此外,在进一步的实施例中,设定上述多个加速器的每一个的索引区 的大小是32位、即4字节,其中高16位用于存储子矩阵的行索引,低16 位用于存储子矩阵的列索引。从而,在行、列索引是32位长整型的情况下, 在向索引区中存储该行、列索引时,需要进行移位存储操作,即将行索引 存储到该索引区中,并使其向左移位16位,成为高16位,然后将列索引 存储到低16位中。在步骤430,判断上述矩阵B中是否还有未经过计算更新的子矩阵, 若有,则该过程返回到步骤415,继续对剩余的子矩阵进行计算更新,否 则,该过程结束。12图5是图4的上述过程的示例性图示说明,与图3同样,其示出的也 是多处理器系统使用5个SPU对被划分为8行x6列个子矩阵的矩阵B进 行三角线性方程组求解的情况。从图5可以看出,在该示例性情况下,在根据本实施例的求解过程中, 从第一行子矩阵开始按照顺序依次对SPU0-SPU4各分配一个子矩阵,使 SPU0-SPU4并行地对各自的子矩阵进行计算更新,并且,在SPU0-SPU4 完成其各自的子矩阵的计算更新之后,接着上一次分配的位置继续在行方向上依次对SPU0-SPU4各分配一个子矩阵,并在一行分配结束时继续分 配下一行的子矩阵,依此重复。从而,在所有子矩阵的计算更新均完成时,SPU0-SPU2的每一个均处 理了10个子矩阵,SPU3-SPU4的每一个均处理了 9个子矩阵。与图3相 对照,可以看出,本实施例的进行三角线性方程组求解的方案,与上述现 有的并行性实现方案相比,能够获得更好的负载平衡效果。并且,可以想 象,在矩阵的列数与加速器的数量不匹配并且矩阵的行数远远大于列数的 情况下,与上述现有的并行性实现方案相比,本实施例的方案所得到的负 载平衡效果将更加显著,因为在此情况下如果釆用上述现有的并行性实现 方案,则被用来额外进行剩余列的子矩阵的计算更新的加速器将在其它加 速器空闲的状态下处理更多的子矩阵,从而计算任务量与其它空闲加速器 相比要大很多,导致加速器的负载极其不平衡。下面,以一个加速器为例,详细描述上面的步骤420中上述多个加速 器并行地对各自分配到的子矩阵进行计算更新的过程。图6是该过程的详 细流程图。如图6所示,首先在步骤605,确定当前加速器所分配到的当前子矩 阵在上述矩阵B中的行、列位置。在此,将该当前子矩阵表示为W,y=i,2……)。在步骤610,判断该当前子矩阵^, 1,2......)是否是上述矩阵B中第一行的子矩阵。如果是,则转到步骤660,否则前进到步骤615。在步骤615,在上述子矩阵^(,',/ = 1,2......)不是上述矩阵B中第一行的子矩阵的情况下,使k-l,即从矩阵B中的第一行开始,对于与该子矩阵5, l,2......)同一列的、上方的子矩阵^,# = 1,2,....../-1,/ = 1,2),依次执行下面的步骤620-655。在步骤620,对于上方子矩阵^# = 1,2,......z-W = l,2......),确定被分配来对其进行计算更新的相应加速器。在本步骤中,可以根据上方子矩阵;^# = 1,2,......U",2......)的行、列位置确定到该上方子矩阵为止的总子矩阵数,然后对该总子矩阵数与上述多 个加速器的数量进行取模运算,所得到的结果便是与上方子矩阵 ;^,# = 1,2,....../-W = i,2......)对应的加速器的编号,以此来确定对该子矩阵进行计算更新的加速器。在步骤625,读取上述索引存储区中与所确定的相应加速器对应的索 引区,以获得该加速器最近完成计算更新的那一个子矩阵的行、列位置。在步骤630,根据所获得的上述行、列位置,判断上方子矩阵6, (A = 1,2,......,'-w = 1,2......)是否已经完成计算更新。这可以通过比较上述行、列位置和上方子矩阵义4# = 1,2,......!'-l,y = l,2……)的位置的前后关系来实现。如果上述行、列位置在该上方子矩阵 ZA,# = 1,2,....../-1J = 1,2......)的位置之前,则由于上述行、列位置处的子矩阵是上述所确定的相应加速器最后一个完成计算更新的子矩阵,所以表明在后的上方子矩阵;^# = 1,2,......,'-i,y = i,2......)还未被该加速器更新。反之,如果上述行、列位置在该子矩阵;^(* = 1,2,....../-w = i,2......)的位置之后,则表明在前的上方子矩阵X"(h1,2,......! -W = l,2......)已经,皮该加速器更新。并且,在本步骤中如果判断为上方子矩阵^,# = 1,2,......!-U=l,2......)已经完成计算更新,则前进到步骤640,否则在步骤635等待,直到该上方子 矩阵完成计算更新为止。在步骤640,从主存储器获取该上方子矩阵;^("1,2,....../-W = i,2……)的数据到当前加速器的本地存储区中。在步骤645,使当前加速器根据上述矩阵方程(l) 、 (2)、 (3)或(4),利 用所获取的上方子矩阵& # = 1,2,....../ - U' = 1,2......)的数据,对当前子矩阵14^ y = 1,2......)进行计算更新。
例如,如图1所示,在给定下三角矩阵A并且alpha-l,即上述矩阵 方程(l)的情况下,对当前子矩阵&(/,/ = 1,2......)进行^ -4,^,,的计算更新。
在步骤650,使k-k+l,继续下一行。
在步骤655,判断k《i-l是否成立,即判断该下一行是否仍是上述当 前子矩阵^,(/,y-l,2......)的上方的行。如果是,则返回到步骤620,针对该行
继续上述过程,否则前进到步骤660。
在步骤660,使上述加速器根据上述矩阵方程(1)或(2),直接对当前子 矩阵H—1,2......)进行计算更新。例如,如图l所示,在给定下三角矩阵A
并且op(A)-A、 alpha=l,即上述矩阵方程(l)成为A*X=B的情况下,对当 前子矩阵 (U'-l,2......)进行5"-《、的计算更新。然后,该过程结束。
以上就是对图4中上述多个加速器并行地对各自分配到的子矩阵进行 计算更新的步骤420的详细描述。
需要说明的是,在上面图6的过程中,虽然对于与当前要计算更新的 子矩阵&(U = l,2......)同 一 列的、上方的每 一 个子矩阵
^# = 1,2,....../-1,/ = 1,2......)均通过读取索引存储区来确定其是否已经完成计
算更新,但这仅是示例性的。在优选实施例中,可以不必为每一个上方子 矩阵A7= 1,2,......-1,_/ = 1,2......)均判断是否已经被计算更新,而是首先判断当
前的子矩阵^(/J-l,2......)上方的子矩阵J^(h1,2,....../-W = l,2......)的数量是否
大于等于加速器的数量,并且在大于等于加速器的数量时,仅对该当前子
矩阵l= 1,2......)上方[加速器的数量-1行的子矩阵判断计算更新与否即
可,即仅对该当前子矩阵5,= 1,2......)的上方并且当前加速器上一次在该
当前子矩阵& (W -1,2......)的列上计算更新的子矩阵的下方的所有子矩阵判
断计算更新与否即可。
举例来说明。如图7所示,仍以上述多处理器系统使用5个SPU对被 划分为8行x6列个子矩阵的矩阵B进行三角线性方程组求解的情况为例, 假设分配给SPU2的当前子矩阵5。(z》、1,2......)是该矩阵B中第6行、第3列的子矩阵6,则由于子矩阵6的上方的子矩阵的数量5等于SPU的数量 5,所以仅需对子矩阵6上方[SPU的数量-1=4行的子矩阵判断计算更新 与否,即仅对子矩阵6的上方、SPU2上一次在该列上计算更新的子矩阵1 的下方的子矩阵2-5来判断计算更新与否即可。而对于子矩阵l,则可以直 接读取其数据并利用该数据对子矩阵6进行计算更新,因为显然SPU2在 对子矩阵6进行计算更新时应该已经完成了前面的子矩阵1的计算更新。
以上就是对本实施例的在多处理器系统上进行三角线性方程组求解的 方法的详细描述。在本实施例中,通过按照行方向逐个子矩阵地来分配要 进行三角线性方程组求解的给定矩阵,与上述现有的并行性实现方案相比, 在矩阵的列数与加速器的数量不匹配的情况下,能够获得更好的加速器负 载的平衡效果。进而,在矩阵的行数远远大于列数的情况下,与上述现有 的并行性实现方案相比,所得到的加速器负载平衡效果更加显著,从而能 够充分利用这多个加速器的计算能力来达到求解计算的峰值性能。
需要说明的是,在本实施例中,虽然所说明的是将子矩阵大小设定为 64x 64的情况,但这仅是示例性的,本领域技术人员可以理解,在具体实 现中根据具体情况将子矩阵大小设定为32 x 32、 128 x 128等的情况下,本 实施例的方法也是同样适用的。
在同 一发明构思下,本发明提供一种在多处理器系统中进行三角线性 方程组求解的装置。下面结合附图对其进行描述。
图8是根据本发明实施例的在多处理器系统中进行三角线性方程组求 解的装置的方框图。其中,该多处理器系统具有至少一个核心处理器以及 多个加速器。具体地,该多处理器系统例如可以是前述具有一个PPU (核 心处理器)和8个SPU (加速器)的CBE。
本实施例的装置使上述多个加速器迭代地对要进行三角线性方程组求 解的矩阵进行计算更新。
具体地,如图8所示,本实施例的在多处理器系统中进行三角线性方 程组求解的装置8包括矩阵划分单元81、索引存储区设置单元82、子矩 阵分配单元83、计算更新模块84以及索引存储区更新单元85。
16矩阵划分单元81按照预定的子矩阵大小、例如64x64,将要进行三 角线性方程组求解的给定矩阵B划分为多个子矩阵。
索引存储区设置单元82在上述多处理器系统的核心处理器(例如CBE 的PPU)的本地存储区中,设置用于为上述多个加速器的每一个存储其已 经完成计算更新的子矩阵的索引的索引存储区。
在一个优选实施例中,索引存储区设置单元82在核心处理器的原子区 域中设置索引存储区。
子矩阵分配单元83在每一次迭代中,从上述多个子矩阵中还未进行计 算更新的子矩阵开始,按照行方向并且按照预先为上述多个加速器确定的 先后顺序,向该多个加速器各分配一个子矩阵。
计算更新模块84在每一次迭代中,使上述多个加速器并行地对其各自 的子矩阵进行计算更新。
索引存储区更新单元85在每一次迭代中,对于上述多个加速器的每一 个,在其完成所分配的子矩阵的计算更新之后,为该加速器更新上述索引 存储区。
在一个实施例中,在上述索引存储区中,仅存储上述多个加速器的每 一个最近完成计算更新的那一个子矩阵的索引。
图9示出了根据一个实施例的、图8中的计算更新模块84的详细方框 图。如图9所示,本实施例的计算更新模块84包括首行确定单元841、 单行计算更新单元842以及多行计算更新单元843。
首行确定单元841在每一次迭代中,为上述多个加速器的每一个,确 定其当前子矩阵~(/,_/ = 1,2......)是否是上述矩阵B中第一行的子矩阵。
单行计算更新单元842在每一次迭代中,使上述多个加速器的每一个, 在其当前子矩阵KW-l,2......)是上述矩阵B中第一行的子矩阵时,根据上
述矩阵方程(1)或(2),直接对该子矩阵进行计算更新。例如,如图1所示, 在给定下三角矩阵A并且alpha-l,即上述矩阵方程(l)的情况下,对子矩
卩车s, 7ay=i,2……)K亍5,.,乂=4;j5,,乂的i十算更新。
多行计算更新单元843在每一次迭代中,使上述多个加速器的每一个,
17在其当前子矩阵~(/,_/ = 1,2......)不是上述矩阵B中第一行的子矩阵时,利用
上述索引存储区中所存储的索引,为该当前子矩阵的同一列的上方子矩阵 确定其是否完成了计算更新,并据此进行该当前子矩阵的计算更新。
如图9所示,多行计算更新单元843进一步包括加速器确定单元 8431、索引获取单元8432、索引比较单元8433以及计算更新单元8434。
在每一次迭代中,为上述多个加速器的每一个,对于其当前子矩阵 S,々W = 1,2……)的同 一列的上方子矩P车J^.(A: = 1,2,……/ —W = 1,2……)
加速器确定单元8431根据该上方子矩阵^# = 1,2,....../-l,y=l,2......)的
行、列位置以及上述多个加速器的数量,确定被分配对该上方子矩阵进行 计算更新的相应加速器
索引获取单元8432从上述索引存储区中获取加速器确定单元8431所 确定的相应加速器最近完成计算更新的子矩阵的索引;
索引比较单元8433通过将所获取的索引与上述上方子矩阵 A# = l,2,......"l,_/ = l,2......)的行、列位置进行比较,确定其前后关系,从而确
定该上方子矩阵是否已经#_完成计算更新;
计算更新单元8434使当前加速器,在索引比较单元8433确定为上述 上方子矩阵;^7# = 1,2,......卜i,y = i,2......)已经^f皮完成计算更新时,直接利用该上
方子矩阵的数据对当前子矩阵0',;' = 1,2......)进行计算更新,在确定为该上
方子矩阵未完成计算更新时,等待到该上方子矩阵完成计算更新时,才利 用该上方子矩阵的数据对当前子矩阵= 1,2......)进行计算更新。
在优选实施例中,对于上述多个加速器的每一个,在首行确定单元841 确定其当前子矩阵万,力》、1,2......)不是上述矩阵B中第一行的子矩阵的情况
下,进而判断当前子矩阵~(/,_/ = 1,2......)的上方子矩阵
;^("i,2,....../-U = i,2......)的数量是否大于等于上述多个加速器的数量,并且
在大于等于上述多个加速器的数量时,仅对于该当前子矩阵、(U、1,2......)
上方且该加速器上一次在该列上计算更新的子矩阵的下方的所有子矩阵,
启用多行计算更新单元843中的加速器确定单元8431、索引获取单元8432 和索引比较单元8433。以上就是对本实施例的在多处理器系统中进行三角线性方程组求解的
装置的详细描述。其中,该装置8及其各个组成部分,可以由专用的电路 或芯片构成,也可以通过计算机(处理器)执行相应的程序来实现。
以上虽然通过一些示例性的实施例对本发明的在多处理器系统上进行 三角线性方程组求解的方法和装置进行了详细的描述,但是以上这些实施 例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种 变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅以所附 权利要求为准。
权利要求
1.一种多处理器系统的三角线性方程组求解的方法,其中该多处理器系统包括至少一个核心处理器以及多个加速器(accelerator),该方法包括按照预定的子矩阵大小,将要进行三角线性方程组求解的矩阵划分为多个子矩阵;以及迭代地对上述多个子矩阵进行计算更新;其中,在每一次迭代中包括从上述多个子矩阵中还未进行计算更新的子矩阵开始,按照行方向并且按照为上述多个加速器预先确定的先后顺序,向该多个加速器各分配一个子矩阵;以及使上述多个加速器并行地对各自的子矩阵进行计算更新。
2. 根据权利要求l所述的方法,其中在迭代地对上述多个子矩阵进行 计算更新的步骤之前还包括在上述核心处理器的本地存储区中,设置用于为上述多个加速器的每 一个存储其已经完成计算更新的子矩阵的索引的索引存储区。
3. 根据权利要求2所述的方法,其中在每一次迭代中还包括 对于上述多个加速器的每一个,在其完成所分配的子矩阵的计算更新之后,为该加速器更新上述索引存储区。
4. 根据权利要求3所述的方法,其中上述为该加速器更新上述索引存 储区的步骤进一步包括确定由该加速器完成了计算更新的上述子矩阵在上述矩阵中的行、列 位置;以及将上述行、列位置存储到上述索引存储区中与该加速器对应的索引区。
5. 根据权利要求4所述的方法,其中上述行、列位置是按子矩阵计数 的行、列位置。
6. 根据权利要求4或5所述的方法,其中在上述索引存储区中,上述多个加速器的每一个所对应的索引区包含32位;并且将上述行、列位置存储到上述索引存储区中与该加速器对应的索引区 的步骤进一步包括将上述行位置存储到与该加速器对应的索引区并使之移位到高16位;以及将上述列位置存储到上述索引区的低16位。
7. 根据权利要求2所述的方法,其中使上述多个加速器并行地对各自 的子矩阵进行计算更新的步骤进一步包括使上述多个加速器的每一个确定其当前子矩阵是否是上述矩阵中第一行的子矩阵; 在其当前子矩阵是上述矩阵中第一行的子矩阵时,直接对该子矩阵进行计算更新;在其当前子矩阵不是上述矩阵中第一行的子矩阵时,为该当前子矩阵的同一列的上方子矩阵,利用上述索引存储区中所存储的索引确定是否完成了计算更新,并据此进行该当前子矩阵的计算更新。
8, 根据权利要求7所述的方法,其中为该当前子矩阵的同一列的上方 子矩阵,利用上述索引存储区中所存储的索引确定是否完成了计算更新, 并据此进行该当前子矩阵的计算更新的步骤进一步包括确定该当前子矩阵的同 一列的上方子矩阵的数量;如果上述上方子矩阵的数量小于上述多个加速器的数量,则对于该当 前子矩阵的同一列的上方子矩阵,利用上迷索引存储区中所存储的索引确 定其是否完成了计算更新,并据此进行该当前子矩阵的计算更新;如果上述上方子矩阵的数量大于等于上述多个加速器的数量,则 确定与该当前子矩阵对应的加速器上一次在该列上计算更新的子矩阵;对于所确定的上述子矩阵及其上方的所有子矩阵,直接利用其数 据进行上述当前子矩阵的计算更新;以及对于所确定的上述子矩阵的下方且上述当前子矩阵上方的所有子矩阵,利用上述索引存储区中所存储的索引确定其是否完成了计算更 新,并据此进行该当前子矩阵的计算更新。
9. 根据权利要求7或8所述的方法,其中利用上述索引存储区中所存 储的索引确定其是否完成了计算更新,并据此进行该当前子矩阵的计算更 新的步骤进一步包括根据该上方子矩阵的行、列位置以及上述多个加速器的数量,确定被分配对该上方子矩阵进行计算更新的相应加速器;从上述索引存储区中获取所确定的相应加速器最近完成计算更新的子 矩阵的索引;通过将所获取的索引与上述上方子矩阵的行、列位置进行比较,确定 该上方子矩阵是否已经完成计算更新;在上述上方子矩阵已经完成计算更新时,直接利用该上方子矩阵的数 据对上述当前子矩阵进行计算更新;以及在上述上方子矩阵未完成计算更新时,等待到该上方子矩阵完成计算 更新时,才利用该上方子矩阵的数据对上述当前子矩阵进^f亍计算更新。
10. 根据权利要求2所述的方法,其中在上述索引存储区中,仅存储 上述多个加速器的每一个最近完成计算更新的那一个子矩阵的索引。
11. 根据权利要求2所述的方法,其中上述索引存储区设置在上述核 心处理器的原子区域中。
12. —种多处理器系统的三角线性方程组求解的装置,其中该多处理 器系统包括至少一个核心处理器以及多个加速器,该装置使上述多个加速 器迭代地对要进行三角线性方程组求解的矩阵进行计算更新,其包括矩阵划分单元,用于按照预定的子矩阵大小,将要进行三角线性方程 组求解的矩阵划分为多个子矩阵;以及子矩阵分配单元,用于在每一次迭代中,从上述多个子矩阵中还未进 行计算更新的子矩阵开始,按照行方向并且按照为上述多个加速器预先确 定的先后顺序,向该多个加速器各分配一个子矩阵;以及计算更新模块,用于在每一次迭代中,使上述多个加速器并行地对各自的子矩阵进行计算更新。
13. 根据权利要求12所述的装置,还包括索引存储区设置单元,用于在上述核心处理器的本地存储区中,设置 用于为上述多个加速器的每一个存储其已经完成计算更新的子矩阵的索引 的索引存储区;以及索引存储区更新单元,用于在每一次迭代中,对于上述多个加速器的 每一个,在其完成所分配的子矩阵的计算更新之后,为该加速器更新上述 索引存储区。
14. 根据权利要求13所述的装置,其中在上述索引存储区中,仅存储 上述多个加速器的每一个最近完成计算更新的那一个子矩阵的索引。
15. 根据权利要求13所述的装置,其中上述计算更新模块进一步包括 首行确定单元,用于为上述多个加速器的每一个,确定其当前子矩阵是否是上述矩阵中第一行的子矩阵;单行计算更新单元,用于使上述多个加速器的每一个,在其当前子矩 阵是上述矩阵中第一行的子矩阵时,直接对该子矩阵进行计算更新;以及多行计算更新单元,用于使上述多个加速器的每一个,在其当前子矩 阵不是上述矩阵中第一行的子矩阵时,对于该当前子矩阵的同一列的上方 子矩阵,利用上述索引存储区中所存储的索引确定其是否完成了计算更新, 并据此进行该当前子矩阵的计算更新。
16. 根据权利要求15所述的装置,其中上述多行计算更新单元进一步 包括加速器确定单元、索引获取单元、索引比较单元以及计算更新单元, 其中,在每一次迭代中,为上述多个加速器的每一个,对于其当前子矩阵 的同 一列的上方子矩阵的每一个上述加速器确定单元根据该上方子矩阵的行、列位置以及上述多个加 速器的数量,确定被分配对该上方子矩阵进行计算更新的相应加速器;上述索引获取单元从上述索引存储区中获取上述加速器确定单元所确 定的相应加速器最近完成计算更新的子矩阵的索引;上述索引比较单元通过将所获取的索引与上述上方子矩阵的行、列位置进行比较,确定该上方子矩阵是否已经完成计算更新;以及上述计算更新单元使上述加速器,在上述上方子矩阵已经完成计算更 新时,直接利用该上方子矩阵的数据对上述当前子矩阵进行计算更新,在 上述上方子矩阵未完成计算更新时,等待到该上方子矩阵完成计算更新时, 才利用该上方子矩阵的数据对上述当前子矩阵进行计算更新。
17.根据权利要求16所述的装置,其中对于上述多个加速器的每一个, 在其当前子矩阵的上方子矩阵的数量大于等于上述多个加速器的数量时, 仅对于该加速器上一次在该当前子矩阵的列上计算更新的子矩阵的下方且 上述当前子矩阵的上方的所有子矩阵,启用上述加速器确定单元、索引获 取单元和索引比较单元。
全文摘要
本发明提供了一种多处理器系统的三角线性方程组求解的方法和装置。其中该多处理器系统包括至少一个核心处理器以及多个加速器。该方法包括按照预定的子矩阵大小,将要进行三角线性方程组求解的矩阵划分为多个子矩阵;迭代地对该多个子矩阵进行计算更新;其中,在每一次迭代中包括从该多个子矩阵中还未进行计算更新的子矩阵开始,按照行方向并且按照为上述多个加速器预先确定的先后顺序,向该多个加速器各分配一个子矩阵;使该多个加速器并行地对各自的子矩阵进行计算更新。本发明通过逐个子矩阵地分配要进行求解的矩阵,能够使多个加速器的负载达到平衡,从而充分利用这多个加速器的计算能力来达到计算更新的峰值性能。
文档编号G06F17/16GK101661457SQ20081021252
公开日2010年3月3日 申请日期2008年8月29日 优先权日2008年8月29日
发明者航 刘, 彭红波, 王佰玲, 琼 魏 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1