在处理系统上对矩阵进行奇异值、特征值分解的方法和装置的制作方法

文档序号:6462214阅读:192来源:国知局
专利名称:在处理系统上对矩阵进行奇异值、特征值分解的方法和装置的制作方法
技术领域
本发明涉及数据处理领域,具体地,涉及在处理系统上对矩阵进行奇 异值分解的方法和装置以及对矩阵进行特征值分解的方法和装置。
背景技术
LAPACK (Linear Algebra PACKage,线性代数包)是Oak Ridge国 家实验室、加州大学Davis分校和Illinois大学等联合开发的非常有效、强 大且广泛使用的线性代数函数库,用于在不同高性能计算环境上高效求解 数值线性代数问题,其已经有效地为HPC( High Performance Computing, 高性能计算)和计算科学組织工作了 20多年的时间。关于LAPACK的详 细内容,可参见http:〃netlib.amss.ac.cn/lapack/index.html。
作为专业的线性代数库,LAPACK提供了各种线性代数的子程序,其
矩阵的奇异值分解的含义是对于给定的矩阵A,找出分解
A=UA*S*VAT,
其中,ua是正交矩阵,其是A的左奇异向量矩阵;S是对角矩阵,其是A 的奇异值矩阵,其对角线上的元素就是A的奇异值;Va是正交矩陣,其是 a的右奇异向量矩阵。
矩阵的特征值分解的含义是对于给定的矩阵A,找出分解
A=UA*Z*UAT,
其中,Ua是正交矩降,其是A的特征向量矩阵;Z是对角矩阵,其是A 的特征值矩阵,其对角线上的元素就是A的特征值。现有的LAPACK中的奇异值分解过程是对于给定的矩阵A,首先 将其转换为双对角矩阵B,同时得到中间矩阵U和V,以满足下面的公式
然后,迭代地找出并转换该双对角矩阵B中、副对角线上的元素不为0的 子矩阵,使该双对角矩阵B逐渐收敛为对角矩阵S;其中,在每一次迭代 中都会在当前副对角线上的元素不为0的子矩阵的QR迭代过程中生成两 个Givens旋转参数组,并且利用这两个Givens旋转参数组分别对中间矩 阵U和V进行Givens旋转,以使中间矩阵U和V最终分别被转换为矩阵 A的左奇异向量矩阵UA和右奇异向量矩阵VA。
图1示出了上述现有的奇异值分解过程的详细流程。如图1所示,首 先,在步骤105,对于给定的矩阵A,将其双对角化,即将矩阵A转换为 如图2(a)或2(b)所示的形式的双对角矩阵B,同时得到中间矩阵U和V。 其中在该双对角矩阵B中,除主对角线以及副对角线之外的所有元素均为 零。
接着,迭代地执行以下的步骤110~130,以使双对角矩阵B逐渐收敛 为对角矩阵S,并且分别将中间矩阵U和V转换为矩阵A的左奇异向量矩
阵UA和右奇异向量矩阵VA。
具体地,在步骤IIO,判断当前的双对角矩阵B是否已经收敛为对角 矩阵。如果是,则该过程结束,否则,前进到步骤115。
在步骤115,从双对角矩阵B中找出当前其副对角线上的元素均不为 0的子矩阵B1,而在该子矩阵B1之前的对角线上的元素均已收敛为0。
在步骤120,对所找出的子矩阵B1进行QR迭代。
在该步骤中,对于子矩阵Bl进行QR迭代的迭代步数是该子矩阵Bl 的阶数n减去1。其中,在每一步迭代中都会生成一个如图3(a)所示的形 式的Givens 3走转矩阵込,伙=1,...,"-1}和一个如图3(b)所示的形式的Givens 旋转矩阵。如图3(a)和3(b)所示,Givens旋转矩阵 込,{& = 1,,,.," —1}和尸4,{& = 1,".,"—1}中分别包括一对Givens旋转参数c和s。并 且,在每一步迭代之后,都会利用所生成的a,伙-l,...,"-1}和^,{"1,...,"-1}按照如下^^式更新双对角矩阵B:
从而,在对子矩阵Bl进行n-l步迭代之后,便会生成n-l个Givens 旋转矩阵込,^ = 1,..""-1}和n-l个Givens旋转矩阵= 1,1}。在此,用 Cu、 Su对来表示所生成的这n-l个Givens旋转矩阵^,{"1,...,"-1},其中
C —C,,C2,…C"一,),4=0^2,…Vi)。该Cu、 Su对l更称作对应于a,(A^l,…,"-1}的
一个Givens礎:转参数组。同理,n-l个Givens ;旋转矩阵/^" = 1,...,"-1}也存 在着一个对应的Givens旋转参数组,即Cv、 Sv对。
并且,在该步骤中,与对应于a,^-i,…,"-i〉的Cu、 Su对和对应于 &,伙=1,...,"-1}的Cv、 Sv对一起,将子矩阵B1的左右边界位置记录下来, 该边界位置在矩阵U和V上所界定的U的子矩阵和V的子矩阵将分别根 据Cu、 Su和Cv、 Sv更新。
在步骤125,利用对应于&,{& = 1,...,"-1}的Cu、 Su对及其相应子矩阵的 左右边界位置,对中间矩阵U进行Givens旋转。
具体地,根据f/=t/er 、 e^Q込込…a—,或必-3..必以及
+气/+1。和",,+1 ="u+1。-气^,对中间矩阵U中相应子矩阵的元素"。进 行Givens i走转计算,即对中间矩阵U进行n-l次Givens旋转,从而利用 该Cu、 Su对更新中间矩阵U。
在步骤130,利用对应于^,{"1,...,"-1}的Cv、 Sv对及其相应子矩阵的 左右边界位置,对中间矩阵V进行Givens旋转。
具体地,才艮才居Kr=JP7r、 尸=尸,尸2尸3…尸"一 或尸-i^:2尸"一3…S 以及
=v,+uc, —v,,,和n+w, +v,yC,,对中间矩阵V中相应子矩阵的元素v"进
行Givens旋转计算,即对中间矩阵V进行n-l次Givens旋转,从而利用 该Cv、 Sv对更新中间矩阵V。
然后,该过程返回到步骤IIO,直到双对角矩阵B完全收敛为对角矩 阵S,即副对角线上的元素均收敛为0。并且,在B完全收敛为对角矩阵 时,中间矩阵U也转换为矩阵A的左奇异向量矩阵UA,而中间矩阵V则 转换为矩阵A的右奇异向量矩阵VA。
10此外,现有的LAPACK中的特征值分解过程是对于给定的矩阵A, 首先将其转换为三对角矩阵B,同时得到一个中间矩阵U;然后,迭代地 找出并转换该三对角矩阵B中、两条副对角线上的元素不为0的子矩阵, 使该三对角矩阵B逐渐收敛为对角矩阵Z;其中,在每一次迭代中都会在 当前两条副对角线上的元素不为0的子矩阵的QR迭代过程中生成一个 Givens旋转参数组,并且利用该Givens i走转参数组对中间矩阵U进行 Givens旋转,以使该中间矩阵U最终被转换为矩阵A的特征向量矩阵UA。
图4示出了上述现有的特征值分解过程的详细流程。如图4所示,首 先,在步骤405,对于给定的矩阵A,将其三对角化,即将矩阵A转换为 如图5所示的形式的三对角矩阵B,同时得到一个中间矩阵U。其中在该 三对角矩阵B中,除主对角线以及上下两条副对角线之外的所有元素均为 零,并且两条副对角线上的元素是对称的。
接着,迭代地执行以下的步骤410-425,以使三对角矩阵B逐渐收敛 为对角矩阵Z,并且将中间矩阵U转换为矩阵A的特征向量矩阵UA。
具体地,在步骤410,判断当前的三对角矩阵B是否已经收敛为对角 矩阵。如果是,则该过程结束,否则,该过程前进到步骤415。
在步骤415,从三对角矩阵B中找出当前其两条副对角线上的元素均 不为0的子矩阵B1,而在该子矩阵B1之前的两条副对角线上的元素均已 收敛为0。
在步骤420,对所找出的子矩阵B1进行QR迭代。
在该步骤中,对于子矩阵Bl进行QR迭代的迭代步数是该子矩阵Bl 的阶数n减去l。其中,在每一步迭代中都会生成一个如图3(a)所示的形 式的Givens旋转矩阵込,{* = 1,...,"-1}。并且,在每一步迭代之后,都会利用 所生成的= l,...,n -1}按照如下公式更新三对角矩阵B:
从而,在对子矩阵B1进行n-l步迭代之后,便会生成n-l个Givens 旋转矩阵込,{& = 1,...,"-1}。同样,可用一个Givens旋转参数组、即C、 S对 来表示所生成的这n-l个Givens旋转矩阵= 1,1},其中<formula>formula see original document page 12</formula>
并且,在该步骤中,与该C、 S对一起,将子矩阵B1的左右边界位置 记录下来,作为中间矩阵U中要应用该C、 S对进^f亍更新的相应子矩阵的 左右边界位置。
在步骤425,利用该C、 S对及其相应子矩阵的左右边界位置,对中间 矩阵U进行Givens旋转。
具体地,根据"=i72r 、 2:G込込…a-!或2 ="—以及 ",,,。+",7+1~和~+1 =",J+1。 -",.a ,对中间矩阵U中相应子矩阵的元素",j进 行Givens旋转计算,即对中间矩阵U进行n-l次Givens旋转,从而利用 该C、 S对更新中间矩阵U。
然后,该过程返回到步骤410,直到三对角矩阵B完全收敛为对角矩 阵Z,即两条副对角线上的元素均收敛为0。并且,在B完全收敛为对角 矩阵时,中间矩阵U也转换为矩阵A的特征向量矩阵UA。
LAPACK中根据上述图1和图4的过程所设计的奇异值分解例程和特 征值分解例程,会存在大量的矩阵运算操作,对于这样的例程而言,性能 是非常关键的。
Cell宽频引擎(Cell Broadband Engine, CBE )是一种单芯片多处理 器系统。如图6所示,CBE系统具有在一个共享的、相干的存储器上进行 操作的9个处理器,其中包括一个主处理器(Power Processing Unit, PPU) 和8个协处理器(Synergistic Processing unit, SPU)。在这样的系统结构 下,CBE能够提供杰出的计算能力。具体来说,Cell处理器在时钟频率 3.2GHz的情况下能够达到204G浮点运算数/秒。具有这样高的计算能力, 对于高计算任务量的矩阵奇异值分解和特征值分解来说,CBE显然是一个 理想的执行平台。
但是,如果将上述图1和图4的方案直接应用在CBE上,则会存在因 存储器带宽限制而导致的计算性能降低的问题。
因为,由于在每一次迭代中都会利用在QR迭代过程中所生成的 Givens旋转参数组对中间矩阵进行Givens旋转,所以,在每一次迭代中都需要将中间矩阵中相应子矩阵的数据传输到SPU的本地存储区中,并在 SPU对其完成Givens旋转计算之后,再将该子矩阵数据传回到主存储器 中。
具体来说,假设要传输的子矩阵的大小是nxn,则在双精度矩阵的情 况下,就需要从主存储器传输112个双精度数据到SPU的本地存储区中。 并且,根据 可知,为了对一个数据进行更
新,SPU需要进行6次浮点运算,从而,对于112个双精度数据共要进行 6n"欠浮点运算。并且,在SPU完成6n"欠浮点运算之后,还需要将这些 数据传回到主存储器中。从而,由于每一个双精度数据占用8字节,所以 此时的计算传输比将为6n2/(2n2*8)=3/8。而对于CBE来说,由于其最大 存储器带宽是25.6GB/秒,所以在计算传输比为3/8的情况下,该存储器带 宽仅能够维持SPU在每秒内进行9.6G次浮点运算,这样的计算性能远远 低于CBE所能够达到的最大204G浮点运算数/秒的计算能力。这导致了 CBE的计算性能的急剧降低。
可以看出,对于CBE这样具有存储器带宽限制的处理系统而言,如果 采用图1和图4的方案,则每次迭代中的Givens旋转计算便成为导致计算 性能降低的主要因素。
因此,需JH殳计出 一种适合于具有存储器带宽限制的处理系统的奇异 值分解方案和特征值分解方案。

发明内容
鉴于上述问题,本发明提供了一种在处理系统上对矩阵进行奇异值分 解的方法和装置以及对矩阵进行特征值分解的方法和装置,以解决由于该 处理系统中的存储器带宽限制而导致的计算性能下降问题。
根据本发明的一个方面,提供了 一种在处理系统上对矩阵进行奇异值 分解的方法,包括将上述矩阵双对角化,以将该矩阵转换为双对角矩阵, 同时得到将要转换为该矩阵的奇异向量矩阵的中间矩阵;以及迭代地找出 并转换上述双对角矩阵中、副对角线上的元素不为0的子矩阵,以使该双对角矩阵逐渐收敛为对角矩阵,并将上述中间矩阵转换为上述矩阵的奇异 向量矩阵;其中,在每一次迭代中包括将在上述双对角矩阵的、当前副
对角线上的元素不为0的子矩阵的QR迭代过程中所生成的Givens旋转参 数组以及上述中间矩阵中要应用该Givens 3走转参数组的相应子矩阵的左 右边界位置累积在存储器中;以及在所累积的上述Givens旋转参数组的个 数达到指定阈值时,利用这多个Givens旋转参数组的每一个及其相应子矩 阵的左右边界位置,对上述中间矩阵进行Givens旋转,其中上述指定阈值 是大于等于2的整数。


相信通过以下结合附图对本发明具体实施方式
的说明,能够使人们更 好地了解本发明上述的特点、优点和目的。 图l是现有的奇异值分解过程的流程图; 图2是双对角矩阵的图示说明; 图3是Givens旋转矩阵的图示说明; 图4是现有的特征值分解过程的流程图; 图5是三对角矩阵的图示说明; 图6是CBE的系统4匡图7是才艮据本发明实施例的在处理系统上对矩阵进行奇异值分解的方 法的流程图8是才艮据本发明实施例的在处理系统上对矩阵进行特征值分解的方 法的流程图9是根据本发明实施例的图7和图8的方法中Givens旋转步骤的详 细流程图10是图9中的Givens旋转过程的图示说明;
图11是根据本发明实施例的在处理系统中对矩阵进行奇异值分解的 装置的方框图12是根据本发明实施例的在处理系统中对矩阵进行特征值分解的装置的方框图;以及
图13是图11和图12的装置中Givens旋转模块的详细方框图。
具体实施例方式
本发明的总体构思是,在奇异值分解和特征值分解这样包括矩阵的 Givens旋转的矩阵分解过程中,不是在每次迭代中均利用所生成的Givens 旋转参数组对中间矩阵进行Givens旋转,而是将该Givens旋转参数组累 积在存储器中,并且在所累积的Givens旋转参数组的个数达到指定阈值 时,才利用这多个Givens旋转参数组集中地对中间矩阵进行Givens旋转。
下面就结合附图对本发明的各个优选实施例进行详细说明。
图7是根据本发明实施例的在处理系统上对矩阵进行奇异值分解的方 法的流程图。如图7所示,首先,在步骤705,对于给定的矩阵A,将其 双对角化,即将矩阵A转换为图2(a)或2(b)所示的形式的双对角矩阵B, 同时得到中间矩阵U和V,以满足s = [/~r。
接着,迭代地执行以下的步骤710 740,以使双对角矩阵B逐渐收敛 为对角矩阵,从而成为矩阵A的奇异值矩阵S,并且分别将中间矩阵U和 V转换为矩阵A的左奇异向量矩阵UA和右奇异向量矩阵VA。
具体地,在步骤710,判断当前的双对角矩阵B是否已经收敛为对角 矩阵。如果是,则该过程转到步骤745,否则,前进到步骤715。
在步骤715,从双对角矩阵B中找出当前其副对角线上的元素均不为 0的子矩阵B1,而在该子矩阵B1之前的对角线上的元素均已收敛为0。
在步骤720,对所找出的子矩阵B1进行QR迭代。在该步骤中,与前 面图1中的步骤120相同,除了对双对角矩阵B进行更新之外,还会生成 一个要应用于中间矩阵U的Givens旋转参数组、即Cu、 Su对和一个要应 用于中间矩阵V的Givens旋转参数组、即Cv、 Sv对,并且,将子矩阵Bl 的左右边界位置记录下来,作为中间矩阵IJ中要应用Cu、 Su对进行更新 的相应子矩阵的左右边界位置以及中间矩阵V中要应用Cv、Sv对进行更新 的相应子矩阵的左右边界位置。
15在步骤725 ,将在步骤720中生成的矩阵U和矩阵V对应的两组Givens 旋转参数组和边界位置累积在存储器中。
在步骤730,判断所累积的、要应用于中间矩阵U的Givens旋转参数 组的个数和要应用于中间矩阵V的Givens旋转参数组的个数是否分别达 到指定阈值。其中,该指定阈值是大于等于2的整数,并且其具体数值是 根据该处理系统中处理器的本地存储区大小而设定的。在CBE的情况下, 考虑到各SPU的本地存储区大小存在256K的限制,可以将该指定阈值设 定为16。但是,并不限于此,如果处理器的本地存储区能够存储更多的 Givens旋转参数组,也可以将该指定阈值设定为更大的值。也就是说,如 果处理器的本地存储区的空间允许,则指定阈值设定得越大,所得到的性 能提升效果就会越显著。
在该步骤中,如果判断为所累积的、要应用于中间矩阵U的Givens 旋转参数组的个数和要应用于中间矩阵V的Givens旋转参数组的个数分 别达到了指定阈值,则该过程前进到步骤735,否则返回到步骤710重复 上述过程。
在步骤735,利用所累积的、要应用于中间矩阵U的多个Givens旋转 参数组的每一个及其相应子矩阵的左右边界位置,对中间矩阵U进行 Givens旋转。
具体地,对于该多个Givens旋转参数组的每一个,都根据 7 = [/^、
2=e,aa…化—!或e=a—必—2a—以及""=和",,川=",J+1。 -M,,对
中间矩阵U进行n-l次Givens旋转,以利用该Givens旋转参数组更新中 间矩阵U。
在步骤740,利用所累积的、要应用于中间矩阵V的多个Givens旋转 参数组的每一个及其相应子矩阵的左右边界位置,对中间矩阵V进行 Givens旋转。
具体地,对于该多个Givens旋转参数组的每一个,都根据r、P"、
尸=S尸2尸3…尸"一,或P =尸 —,尸 —2尸"—3…S以及V,旬=和、=,对中
间矩阵V进行n-l次Givens旋转,以利用该Givens旋转参数组更新中间
16矩阵V。
然后,该过程返回到步骤710,直到双对角矩阵B完全收敛为对角矩 阵S,即副对角线上的元素均收敛为0。
在步骤745,在双对角矩阵B完全收敛为对角矩阵S之后,判断在处 理器的本地存储区中是否还存在所累积的剩余Givens旋转参数组未应用 到中间矩阵U或V上。如果存在,则该过程前进到步骤750,否则该过程 结束。
在该步骤中,之所以在迭代过程结束之后判断在处理器的本地存储区 中是否还存在所累积的剩余Givens旋转参数组,是基于这样的考虑在使 双对角矩阵B收敛为对角矩阵的最后一次迭代中,可能所累积的、要应用 于中间矩阵U的Givens旋转参数组的个数以及要应用于中间矩阵V的 Givens旋转参数组的个数未达到指定阈值,从而在此次迭代中未对中间矩 阵U和V进行Givens 3走转。
接着,在步骤750,利用处理器的本地存储区中所累积的、要应用于 中间矩阵U的剩余Givens旋转参数组的每一个及其相应子矩阵的左右边 界位置,对中间矩阵U进行Givens旋转。该步骤可参照前面的步骤735 来实现。
在步骤755,利用处理器的本地存储区中所累积的、要应用于中间矩 阵V的剩余Givens旋转参数组的每一个及其相应子矩阵的左右边界位置, 对中间矩阵V进行Givens旋转。该步骤可参照前面的步骤740来实现。 此后,该过程结束。
在上述图7的过程结束时,中间矩阵U便转换为矩阵A的左奇异向量 矩阵UA,而中间矩阵V则转换为矩阵A的右奇异向量矩阵VA。
图8是根据本发明实施例的在处理系统上对矩阵进行特征值分解的方 法的流程图。如图8所示,首先,在步骤805,对于给定的矩阵A,将其 三对角化,即将矩阵A转换为如图5所示的形式的三对角矩阵B,同时得 到中间矩阵U。
接着,迭代地执行以下的步骤810 835,以使三对角矩阵B逐渐收敛为对角矩阵,从而成为矩阵A的特征值矩阵Z,并且将中间矩阵U转换为 矩阵A的特征向量矩阵UA。
具体地,在步骤810,判断当前的三对角矩阵B是否已经收敛为对角 矩阵。如果是,则该过程转到步骤840,否则,前进到步骤815。
在步骤815,从三对角矩阵B中找出当前其两条副对角线上的元素均 不为O的子矩阵Bl,而在该子矩阵B1之前的两条副对角线上的元素均已 收敛为0。
在步骤820,对所找出的子矩阵B1进行QR迭代。在该步骤中,与前 面图4中的步骤420相同,除了对三对角矩阵B进行更新之外,还会生成 一个Givens旋转参数组、即C、 S对,并且,将子矩阵Bl的左右边界位 置记录下来,作为中间矩阵U中要应用该C、 S对进行更新的相应子矩阵 的左右边界位置。
在步骤825,将在步骤820中生成的上述Givens旋转参数组以及中间 矩阵U中要应用该C、 S对进行更新的相应子矩阵的左右边界位置累积在 存储器中。
在步骤830,判断所累积的Givens旋转参数组的个数是否达到指定阈 值。关于该指定阈值,可参照在前面图7的步骤730中所说明的内容。并 且,同样,在本实施例中,该指定阈值是大于等于2的整数,并且对于CBE 来说,该指定阈值可以设定为16。
在该步骤中,如果判断为所累积的Givens旋转参数组的个数达到指定 阈值,则该过程前进到步骤835,否则返回到步骤810重复上述过程。
在步骤835,利用所累积的多个Givens旋转参数组的每一个及其相应 子矩阵的左右边界位置,对中间矩阵U进行Givens旋转。
具体地,对于该多个Givens旋转参数組的每一个,都根据"=/^、
2二2,込込…2"—!或2二2"—!2"-2a—3…Q以及"',,和"o+i =",,川。—,对 中间矩阵U进行n-l次Givens旋转,以利用该Givens旋转参数组更新中
间矩阵U。
然后,该过程返回到步骤810,直到三对角矩阵B完全收敛为对角矩阵Z,即两条副对角线上的元素均收敛为0。
在步骤840,在三对角矩阵B完全收敛为对角矩阵Z之后,判断在处 理器的本地存储区中是否还存在所累积的剩余Givens旋转参数组未应用 到中间矩阵U上。如果存在,则该过程前进到步骤845,否则该过程结束。
在步骤845,利用处理器的本地存储区中所累积的剩余Givens旋转参 数组的每一个及其相应子矩阵的左右边界位置对中间矩阵U进行Givens 旋转。该步骤可参照前面的步骤835来实现。此后,该过程结束。
在上述图8的过程结束时,中间矩阵U便转换为矩阵A的特征向量矩
此外,在上面图7或图8的方法中,由于是在累积了多个Givens旋转 参数组之后集中地在步骤735、 740或步骤835对中间矩阵进行Givens旋 转,所以该Givens旋转的实现过程与现有的实现方式是不相同的。下面以 中间矩阵U为例,来详细描述图7中的步骤735、 740或图8中的步骤835 的Givens 4t转过禾呈。
图9是根据本发明实施例的图7和图8的方法中的Givens旋转步骤的 详细流程图。如图9所示,首先在步骤卯5,根据所累积的多个Givens旋 转参数组的每一个的相应子矩阵的左右边界位置,在中间矩阵U中确定包 括这每一个相应子矩阵的并集矩阵Ul。
在步骤910,按照预定的块大小,将并集矩阵U1划分为多个块。其中, 该预定的块大小是根据处理器的本地存储区大小而设定的,并且该预定的 块大小中的列数是上述指定阈值的整数倍。在如前所述针对CBE将上述指 定阈值设定为16的情况下,该预定的块大小可以设定为256 x 16。
接着,在CBE那样具有至少一个核心处理器以及多个加速器 (accelerator)的多处理器系统的情况下,执行下面的步骤915。而在单处 理器系统的情况下,则跳过该步骤915。
在步骤915,如图10(a)所示,将上述并集矩阵U1中按块划分成的各 行分配给多个加速器,其中每一个加速器被分配一行或多行。并且,被分 配给一个加速器的多4亍可以是相互连续的。在步骤920,使处理器对于每一行(在上述多处理器系统的情况下使 多个加速器的每一个对于分配给其的每一行),初始从该处理系统的主存 储器中、从该行的开始部分取出两个相邻的块、即块i和块i+l到该处理 器(或加速器)的本地存储区中。
在步骤925,对于上述多个Givens旋转参数组的每一个,根据其相应 子矩阵的左右边界位置,确定块i和块i+l中处于该左右边界位置之间的 元素,并且对于这些元素利用该Givens旋转参数组进行Givens旋转计算, 同时记录块i+l中未应用该Givens旋转参数组进行完全更新的列的位置。
以16个Givens旋转参数组、256 x 16的块大小的情况为例来进行说 明。如图10(b)所示,在步骤925的每一次执行中,由于处理器的本地存储 区中存储有两个块,所以共有32列、256行数据。
由前述的公式M, 乂. = M0。 + 和M, J+1 = M, — 可知,在利用 一 个
Givens旋转参数组对块i和块i+l进行Givens旋转计算时,块i和块i+l 中的每个元素都要被更新两次。在此,将经过两次更新的元素称为完全更 新。而且可知,欲完全更新元素^,需要有元素",,,和",,7+,的值。从而,在 处理器的本地存储区中有32列、256行数据的情况下,如图10(b)所示, 在第一个Givens旋转参数组的更新Tl中,由于未存储第32列的下一列 数据的值,使得针对该第32列的元素不能完成^ =",,;。+~+1~部分的计算、 从而不能完全更新该第32列的元素,所以仅第1列到第31列的元素得到 完全更新。从而,连锁地,在第二个Givens旋转参数组的更新T2中,仅 能够完全更新第1列到第30列的元素,而这时第31列的数据还没有经过 完全更新。与此类推,到第16个Givens旋转参数组的更新T16中,仅能 够完全更新前16列、第i块的元素。如图10(b)所示,在各次更新中,经 过完全更新的元素变为下一个字母,而经过部分更新的元素则用方框来表 示,其中Tk表示第k个Givens旋转参数组的更新。
从而,如图10(b)所示,在应用了所有16个Givens旋转参数组之后, 块i中的全部数据都经过了完全更新,可以写回到主存储器中。块i+l中 的部分数据经过了完全更新、而部分数据则仅经过了部分更新,从而,需
20要记录块i+l中未进行完全更新的列的位置,以便在取入下一个块之后、 利用该下一个块的数据将其完全更新。
在步骤930,将利用上述多个Givens旋转参数组进行了完全更新后的 块i写回到主存储器中。
在步骤935,判断该行是否结束。如果是,则该过程结束,否则前进 到步骤940。
在步骤940,从主存储器中获取该行中的下一个块i+2 (新的块i+l) 到本地存储区中,从而与上一个未返回到主存储器中的块i+l (新的块i) 构成新的两个相邻块。
在步骤945,对于上述多个Givens旋转参数组的每一个,根据其相应 子矩阵的左右边界位置,确定上述新的块i和新的块i+l中处于该左右边 界位置之间的元素,并且利用该Givens旋转参数组对于这些元素、从所记 录的块i+l (新的块i)中未应用该Givens旋转参数组进行完全更新的列的 位置处开始进4亍Givens i走转计算,同时记录新的块i+l中未应用该Givens 旋转参数组进行完全更新的列的位置。然后,该过程返回到步骤930。
需要说明的是,在步骤945中,对于所记录的块i+l (新的块i)中未 应用相应的Givens旋转参数组进行完全更新的列的Givens旋转计算,仅 是应用该相应的Givens 4t转参数组完成在上一循环中未完成的部分的 Givens旋转计算。
以上就是对本实施例的在处理系统上对矩阵进行奇异值分解的方法和 对矩阵进行特征值分解的方法的详细描述。在本实施例中,在奇异值分解 和特征值分解的过程中,不是在每次一得到Givens旋转参数组后便利用其 对中间矩阵进行Givens旋转,而是在积累了多组Givens旋转参数组后, 集中地进行Givens旋转计算。这样,可以极大地减少处理系统中的主存储 器与处理器的本地存储区之间的数据传输量,能够提高计算传输比,从而 极大地改善计算性能。
具体来说,如果采用本实施例,则在双精度矩阵的情况下,计算传输 比将从3/8上升到3/(8/m,+8/k),其中k是指定阈值,m,是块中的行数。以指定阈值为16、块大小为256x 16的情况为例,计算传输比将是5.6。
可以理解,上述图7-10的方法不仅适用于双精度矩阵,而且对于单精 度矩阵和复数矩阵来说,也都是适用的。
此外,还可以理解,本实施例不仅在类似于CBE这样具有存储器带宽 限制的体系结构中具有实际意义,即使在通用处理器体系(包括单核或多 核)下,由于緩存的存在,也会大大提升计算性能。
在同 一发明构思下,本发明提供一种在处理系统中对矩阵进行奇异值 分解的装置和对矩阵进行特征值分解的装置。下面结合附图对其进行描述。
图11是根据本发明实施例的在处理系统中对矩阵进行奇异值分解的 装置的方框图。如图ll所示,本实施例的在处理系统中对矩阵进行奇异值 分解的装置10包括双对角化单元11和奇异值分解单元12。
双对角化单元ii用于将给定的矩阵A双对角化,以将该矩阵转换为 双对角矩阵B,同时得到中间矩阵U和V。
奇异值分解单元12用于迭代地找出并转换上述双对角矩阵B中、副 对角线上的元素不为0的子矩阵Bl,以使该双对角矩阵B逐渐收敛为对角 矩阵,从而成为矩阵A的奇异值矩阵S,并将中间矩阵U和V分别转换为 矩阵A的左奇异向量矩阵Ua和右奇弄向量矩降Va。
如图11所示,该奇异值分解单元12可以进一步包括子矩阵确定单 元121、 QR迭代单元122、参数累积单元123、判断单元124和Givens 旋转模块30。
子矩阵确定单元121用于在每一次迭代中,从双对角矩阵B中找出其 当前副对角线上的元素均不为0的子矩阵Bl。
QR迭代单元122用于在每一次迭代中,对子矩阵确定单元121所确 定的子矩阵Bl进行QR迭代。其中,在QR迭代过程中,QR迭代单元 122除了对双对角矩阵B进行更新之外,还生成一个要应用于中间矩阵U 的Givens旋转参数组和一个要应用于中间矩阵V的Givens旋转参数组, 并且记录子矩阵B1的左右边界位置,作为中间矩阵U中要应用其相应的 Givens旋转参数组进行更新的相应子矩阵的左右边界位置以及中间矩阵V
22中要应用其相应的Givens旋转参数组进行更新的相应子矩阵的左右边界位置。
参数累积单元123用于在每一次迭代中,将QR迭代单元122所生成 的要应用于中间矩阵U的Givens旋转参数组、要应用于中间矩阵V的 Givens旋转参数组以及中间矩阵U和V中要应该其相应的Givens旋转参 数组进行更新的相应子矩阵的左右边界位置累积在存储器中。
判断单元124用于在每一次迭代中,判断所累积的、要应用于中间矩 阵U的Givens旋转参数组的个数和要应用于中间矩阵V的Givens旋转参 数组的个数是否分别达到指定阈值。如果达到,则针对所累积的、要应用 于中间矩阵U的多个Givens旋转参数组启用Givens旋转模块30以对中 间矩阵U进行Givens旋转,并针对所累积的、要应用于中间矩阵V的多 个Givens旋转参数组启用Givens旋转模块30以对中间矩阵V进行Givens 旋转。并且,在双对角矩阵B收敛为对角矩阵S之后,判断单元124还判 断是否还存在所累积的剩余Givens旋转参数组未应用到中间矩阵U或V 上。如果存在,则针对要应用于中间矩阵U的剩余Givens旋转参数组启 用Givens旋转模块30以对中间矩阵U进行Givens旋转,并针对要应用 于中间矩阵V的剩余Givens旋转参数组启用Givens旋转模块30以对中 间矩阵V进行Givens旋转。
Givens旋转模块30用于利用所累积的多个Givens旋转参数组的每一 个及其相应子矩阵的左右边界位置,对中间矩阵进行Givens旋转。
图12是根据本发明实施例的在处理系统中对矩阵进行特征值分解的 装置的方框图。如图12所示,本实施例的在处理系统中对矩阵进行特征值 分解的装置20包括三对角化单元21和特征值分解单元22。
三对角化单元21用于将给定的矩阵A三对角化,以将该矩阵转换为 三对角矩阵B,同时得到中间矩阵U。
特征值分解单元22用于迭代地找出并转换三对角矩阵B中、两条副 对角线上的元素均不为0的子矩阵Bl,以使该三对角矩阵B逐渐收敛为对 角矩阵,从而成为矩阵A的特征值矩阵Z,并将中间矩阵IJ转换为矩阵A
23的特征向量矩阵UA。
如图12所示,特征值分解单元22可以进一步包括子矩阵确定单元 221、 QR迭代单元222、参数累积单元223、判断单元224和Givens旋转 模块30。
子矩阵确定单元221用于在每一次迭代中,从三对角矩阵B中找出其 当前两条副对角线上的元素均不为0的子矩阵B1。
QR迭代单元222用于在每一次迭代中,对子矩阵确定单元221所确 定的子矩阵Bl进行QR迭代。其中,在QR迭代过程中,QR迭代单元 222除了对三对角矩阵B进行更新之外,还生成一个Givens旋转参数组, 并且记录子矩阵B1的左右边界位置,作为中间矩阵U中要应用该Givens 旋转参数组进行更新的相应子矩阵的左右边界位置。
参数累积单元223用于在每一次迭代中,将QR迭代单元222所生成 的Givens旋转参数组以及中间矩阵U中要应该Givens旋转参数组进行更 新的相应子矩阵的左右边界位置累积在存储器中。
判断单元224用于在每一次迭代中,判断所累积的Givens旋转参数组 的个数是否达到指定阈值。如果达到,则针对所累积的这些Givens旋转参 数组启用Givens旋转模块30以对中间矩阵U进行Givens旋转。并且, 在三对角矩阵B收敛为对角矩阵Z之后,判断单元224还判断是否还存在 所累积的剩佘Givens旋转参数组未应用到中间矩阵U上。如果存在,则 针对这些剩余Givens旋转参数组启用Givens旋转模块30以对中间矩阵U 进行Givens旋转。
Givens旋转模块30用于利用所累积的多个Givens旋转参数组的每一 个及其相应子矩阵的左右边界位置,对中间矩阵进行Givens旋转。
图13示出了根据本发明实施例的图11和图12的装置中的Givens旋 转模块30的详细方框图。如图13所示,Givens旋转模块30包括并集 矩阵确定单元31、矩阵划分单元32和Givens旋转单元33。
并集矩阵确定单元31用于根据所累积的多个Givens旋转参数组的每 一个的相应子矩阵的左右边界位置,在中间矩阵U中确定包括该每一个相应子矩阵的并集矩阵U1。
矩阵划分单元32用于按照预定的块大小,将上述并集矩阵U1划分为 多个块。在包括至少一个核心处理器以及多个加速器的多处理器系统(诸 如CBE )的情况下,矩阵划分单元32还将并集矩阵Ul中按块划分成的各 行分配给该多个加速器,其中每一个加速器被分配一行或多行。
Givens旋转单元33用于使处理器对于上述并集矩阵Ul中按块划分成 的每一行(在上述多处理器系统的情况下使多个加速器的每一个对于分配 给其的每一行),以初始多个相邻块、后续依次用未计算的相邻块替换前 面已计算完成的块的方式,从该处理系统的主存储器中获取该行中的多个 块到其本地存储区中,并利用上述多个Givens旋转参数组的每一个及其相 应子矩阵的左右边界位置,对该多个块中相应位置的元素进行Givens旋转 计算。
如图13所示,Givens旋转单元33可以进一步包括块传输单元331 和Givens旋转计算单元332。
块传输单元331用于为上述处理器(或多个加速器的每一个)实现其 本地存储区与该处理系统的主存储器之间的块传输。
Givens旋转计算单元332用于使上述处理器(或多个加速器的每一个) 利用上述所累积的多个Givens旋转参数组的每一个及其相应子矩阵的左 右边界位置,对其本地存储区中的块进行Givens旋转计算。
其中,在上述处理器对于每一行(或多个加速器的每一个对于分配给 其的每一行)进行Givens旋转计算时
块传输单元331使该处理器(或加速器)初始从主存储器中、从该行 的开始部分取出两个相邻的块到其本地存储区中;
Givens旋转计算单元332使该处理器(或加速器)对于上述多个Givens 旋转参数组的每一个根据其相应子矩阵的左右边界位置,确定上述两个 相邻块中处于该左右边界位置之间的元素,并且对于这些元素利用该 Givens旋转参数组进行Givens旋转计算,同时记录这两个相邻块中的后 一块中未应用该Givens旋转参数组进行完全更新的列的位置;块传输单元331将上述两个相邻块中进行了完全更新后的前一块写回 到上述主存储器中,并且从该主存储器中获取上述行中的下一个相邻块到 该处理器(或加速器)的本地存储区中;
Givens旋转计算单元332对新的相邻块重复上述计算过程。其中,在 此次重复计算过程中,Givens旋转计算单元332使该处理器(或加速器) 对于上述多个Givens旋转参数组的每一个,从上一次所记录的两个相邻块 中的后一块(当前两个相邻块中的前一块)中未应用该Givens旋转参数组 进行完全更新的列的位置处开始对当前的两个相邻块进行Givens旋转计
算;
块传输单元331和Givens旋转计算单元332重复上述过程直到该行结束。
以上就是对本实施例的在处理系统中对矩阵进行奇异值分解的装置和 对矩阵进行特征值分解的装置的详细描述。其中,该装置10和20及其各 个组成部分,可以由专用的电路或芯片构成,也可以通过计算机(处理器) 执行相应的程序来实现。
以上虽然通过一些示例性的实施例对本发明的在处理系统上对矩阵进 行奇异值分解的方法和装置以及对矩阵进行特征值分解的方法和装置进行 了详细的描述,但是以上这些实施例并不是穷举的,本领域技术人员可以 在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这 些实施例,本发明的范围仅以所附权利要求为准。
2权利要求
1.一种在处理系统上对矩阵进行奇异值分解的方法,包括将上述矩阵双对角化,以将该矩阵转换为双对角矩阵,同时得到将要转换为该矩阵的奇异向量矩阵的中间矩阵;以及迭代地找出并转换上述双对角矩阵中、副对角线上的元素不为0的子矩阵,以使该双对角矩阵逐渐收敛为对角矩阵,并将上述中间矩阵转换为上述矩阵的奇异向量矩阵;其中,在每一次迭代中包括将在上述双对角矩阵的、当前副对角线上的元素不为0的子矩阵的QR迭代过程中所生成的Givens旋转参数组以及上述中间矩阵中要应用该Givens旋转参数组的相应子矩阵的左右边界位置累积在存储器中;以及在所累积的上述Givens旋转参数组的个数达到指定阈值时,利用这多个Givens旋转参数组的每一个及其相应子矩阵的左右边界位置,对上述中间矩阵进行Givens旋转,其中上述指定阈值是大于等于2的整数。
2. —种在处理系统上对矩阵进行特征值分解的方法,包括 将上述矩阵三对角化,以将该矩阵转换为三对角矩阵,同时得到将要转换为该矩阵的特征向量矩阵的中间矩阵;以及迭代地找出并转换上述三对角矩阵中、两条副对角线上的元素不为0 的子矩阵,以使该三对角矩阵逐渐收敛为对角矩阵,并将上述中间矩阵转 换为上述矩阵的特征向量矩阵;其中,在每一次迭代中包括将在上述三对角矩阵的、当前两条副对角线上的元素不为0的子矩阵 的QR迭代过程中所生成的Givens旋转参数组以及上述中间矩阵中要应用 该Givens旋转参数组的相应子矩阵的左右边界位置累积在存储器中;以及在所累积的上述Givens旋转参数组的个数达到指定阈值时,利用这多 个Givens旋转参数组的每一个及其相应子矩阵的左右边界位置,对上述中 间矩阵进行Givens旋转,其中上述指定阈值是大于等于2的整数。
3. 根据权利要求1或2所述的方法,其中上述指定阈值是才艮据上述处 理系统中处理器的本地存储区大小而确定的。
4. 根据权利要求1或2所述的方法,其中上述利用这多个Givens旋 转参数组的每一个及其相应子矩阵的左右边界位置,对上述中间矩阵进行 Givens旋转的步骤进一步包括根据上述多个Givens旋转参数组的每一个的相应子矩阵的左右边界 位置,在上述中间矩阵中确定包括该多个Givens旋转参数组的每一个的相 应子矩阵的并集矩阵;按照预定的块大小,将上述并集矩阵划分为多个块;以及 对于上述并集矩阵中按块划分成的每一行,以初始多个相邻块、后续 依次用未计算的相邻块替换前面已计算完成的块的方式,使上述处理系统 中的处理器依次从该处理系统的主存储器中获取该行中的多个块到其本地 存储区中,并利用上述多个Givens旋转参数组的每一个及其相应子矩阵的 左右边界位置,对该多个块中相应位置的元素进行Givens旋转计算。
5. 根据权利要求4所述的方法,其中上述处理系统是包括至少一个核 心处理器以及多个加速器(accelerator)的多处理器系统;在上述按照预定的块大小,将上述并集矩阵划分为多个块的步骤之后 进一步包括将上述并集矩阵中按块划分成的各行分配给上述多个加速器,其中每 一个加速器被分配一行或多行。
6. 根据权利要求4所述的方法,其中使上述处理系统中的处理器依次 从该处理系统的主存储器中获取该行中的多个块到其本地存储区中,并利 用上述多个Givens旋转参数组的每一个及其相应子矩阵的左右边界位置, 对该多个块中相应位置的元素进行Givens旋转计算的步骤进一步包括使上述处理器对于每一行初始从上述主存储器中、从该行的开始部分取出两个相邻的块到该加 速器的本地存储区中;利用上述多个Givens旋转参数组的每一个及其相应子矩阵的左右边界位置,对上述两个相邻块中相应位置的元素进行Givens旋转计算,并对 于上述多个Givens旋转参数组的每一个记录这两个相邻块中的后一块中 未应用该Givens旋转参数组进行完全更新的列的位置;将上述两个相邻块中的前一块写回到上述主存储器中;以及 从上述主存储器中获取上述行中的下一个相邻块到本地存储区中; 重复上述过程直到该行结束,其中,在对于该行的每一次重复过程中, 对于上述多个Givens旋转参数组的每一个,从上一次所记录的两个相邻块 中的后一块中未应用该Givens旋转参数组进行完全更新的列的位置处开 始对本地存储区中当前的两个相邻块进行Givens旋转计算。
7. 根据权利要求6所述的方法,其中对上述两个相邻块中相应位置的 元素进行Givens旋转计算的步骤进一步包括对于上述多个Givens旋转参数组的每一个根据该Givens旋转参数组的相应子矩阵的左右边界位置,确定上述两 个相邻块中处于该左右边界位置之间的元素;以及对于处于上述左右边界位置之间的元素,利用该Givens旋转参数组进 行Givens旋转计算。
8. 根据权利要求4所述的方法,其中上述预定的块大小是根据上述处 理系统中处理器的本地存储区大小而确定的,并且该预定的块大小中的列 数是上述指定阈值的整数倍。
9. 一种在处理系统中对矩阵进行奇异值分解的装置,包括 双对角化单元,用于将上述矩阵双对角化,以将该矩阵转换为双对角矩阵,同时得到将要转换为该矩阵的奇异向量矩阵的中间矩阵;以及 奇异值分解单元,用于迭代地找出并转换上述双对角矩阵中、副对角线上的元素不为0的子矩阵,以使该双对角矩阵逐渐收敛为对角矩阵,并将上述中间矩阵转换为上述矩阵的奇异向量矩阵; 该奇异值分解单元进一步包括参数累积单元,用于在每一次迭代中,将在上述双对角矩阵的、当前 副对角线上的元素不为0的子矩阵的QR迭代过程中所生成的Givens旋转参数组以及上述中间矩阵中要应用该Givens i走转参数组的相应子矩阵的 左右边界位置累积在存储器中;以及Givens旋转模块,用于利用所累积的多个Givens旋转参数组的每一 个及其相应子矩阵的左右边界位置,对上述中间矩阵进行Givens旋转;其中,在所累积的上述多个Givens旋转参数组的个数达到指定阁值 时,启用上述Givens旋转模块,该指定阈值是大于等于2的整数。
10. —种在处理系统中对矩阵进行特征值分解的装置,包括三对角化单元,用于将上述矩阵三对角化,以将该矩阵转换为三对角 矩阵,同时得到将要转换为该矩阵的特征向量矩阵的中间矩阵;以及特征值分解单元,用于迭代地找出并转换上述三对角矩阵中、两条副 对角线上的元素不为0的子矩阵,以使该三对角矩阵逐渐收敛为对角矩阵, 并将上述中间矩阵转换为上述矩阵的特征向量矩阵;该特征值分解单元进一步包括参数累积单元,用于在每一次迭代中,将在上述三对角矩阵的、当前 两条副对角线上的元素不为0的子矩阵的QR迭^过程中所生成的Givens 旋转参数组以及上述中间矩阵中要应用该Givens旋转参数组的相应子矩阵的左右边^M立置累积在存储器中;Givens旋转模块,用于利用所累积的多个Givens旋转参数组的每一 个及其相应子矩阵的左右边界位置,对上述中间矩阵进行Givens旋转;其中,在所累积的上述多个Givens旋转参数组的个数达到指定阈值 时,启用上述Givens旋转模块,该指定阈值是大于等于2的整数。
11. 根据权利要求9或10所述的装置,其中上述指定阈值是根据上述 处理系统中处理器的本地存储区大小而确定的。
12. 根据权利要求9或10所述的装置,其中上述Givens旋转模块进 一步包括并集矩阵确定单元,用于根据上述多个Givens旋转参数组的每一个的 相应子矩阵的左右边界位置,在上述中间矩阵中确定包括该多个Givens 旋转参数组的每一个的相应子矩阵的并集矩阵;矩阵划分单元,用于按照预定的块大小,将上述并集矩阵划分为多个块;以及Givens旋转单元,用于对于上述并集矩阵中按块划分成的每一行,以 初始多个相邻块、后续依次用未计算的相邻块替换前面已计算完成的块的 方式,使上述处理系统中的处理器依次从该处理系统的主存储器中获取该 行中的多个块到其本地存储区中,并利用上述多个Givens旋转参数组的每 一个及其相应子矩阵的左右边界位置,对该多个块中相应位置的元素进行 Givens旋转计算。
13. 根据权利要求12所述的装置,其中上述处理系统是包括至少一个 核心处理器以及多个加速器的多处理器系统;其中上述矩阵划分单元将上述并集矩阵中按块划分成的各行分配给上述多 个加速器,其中每一个加速器被分配一行或多行。
14. 根据权利要求12所述的装置,其中上述Givens旋转单元进一步 包括块传输单元,用于为上述处理器实现其本地存储区与该处理系统的主 存储器之间的块传输;Givens旋转计算单元,用于使上述处理器利用上述多个Givens旋转 参数組的每一个及其相应子矩阵的左右边界位置,对其本地存储区中的块 进行Givens旋转计算;其中,在上述处理器对于每一行进行Givens旋转计算时上述块传输单元使该处理器初始从上述主存储器中、从该行的开始部 分取出两个相邻的块到其本地存储区中;上述Givens旋转计算单元使该处理器利用上述多个Givens旋转参数 组的每一个及其相应子矩阵的左右边界位置,对上述两个相邻块中相应位 置的元素进行Givens旋转计算,并对于上述多个Givens旋转参数组的每 一个记录这两个相邻块中的后一块中未应用该Givens旋转参数组进行完 全更新的列的位置;在上述Givens旋转计算单元完成计算后,上述块传输单元使该处理器将上述两个相邻块中的前一块写回到上述主存储器中,并且从该主存储器中获取上述行中的下一个相邻块到本地存储区中;上述Givens旋转计算单元对本地存储区中当前的两个相邻块重复上 述计算过程,其中,在该重复过程中,使该处理器对于上述多个Givens 旋转参数组的每一个,从上一次所记录的两个相邻块中的后一块中未应用 该Givens旋转参数组进行完全更新的列的位置处开始对上述当前的两个 相邻块进行Givens旋转计算;上述块传输单元和上述Givens旋转计算单元重复上述过程直到该行 结束。
全文摘要
本发明提供了一种在处理系统上对矩阵进行奇异值、特征值分解的方法和装置。该奇异值分解的方法包括将上述矩阵转换为双对角矩阵,同时得到将要转换为奇异向量矩阵的中间矩阵;迭代地找出并转换该双对角矩阵中、副对角线上的元素不为0的子矩阵,以使该双对角矩阵收敛为对角矩阵,并将中间矩阵转换为奇异向量矩阵;在每一次迭代中将在子矩阵的QR迭代过程中所生成的Givens旋转参数组以及中间矩阵中要应用该Givens旋转参数组的相应子矩阵的左右边界位置累积在存储器中;在所累积的Givens旋转参数组的个数达到指定阈值时,利用这多个Givens旋转参数组对中间矩阵进行Givens旋转,其中上述指定阈值是大于等于2的整数。
文档编号G06F17/16GK101561797SQ200810091689
公开日2009年10月21日 申请日期2008年4月14日 优先权日2008年4月14日
发明者潘家铭, 龚志刚 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1