用于在多执行单元处理系统上进行并行的基于QRD的操作的方法和装置与流程

文档序号:11291038阅读:403来源:国知局
用于在多执行单元处理系统上进行并行的基于QRD的操作的方法和装置与流程

相关申请

本专利申请要求2015年1月30日提交的、发明名称为“用于在多执行单元处理系统上进行并行的基于qrd的操作的方法和装置”,申请号为14/610,365的美国专利申请的优先权,所述申请的内容在此通过引用完全并入本申请。

本公开总体上涉及并行处理,并且更具体地涉及在多核心处理器中基于qr分解的处理。



背景技术:

线性最小二乘算法在信号处理中有着广泛的运用,例如信道估计、定时同步等。最小二乘问题通常用qr分解(qrd)法求解。qr分解是一种线性代数的方法,其将给定矩阵a分解为乘积q·r,使得有a=qr。

存在若干种执行qr分解的技术。这包括gram-schmidt正交化、householder变换和givens旋转。

一些现有的基于qrd的算法的局限在于不适合于在并行处理系统中,例如多核处理器中,并行执行。目前正在探索在基于qrd的算法中增加并行度的方式。



技术实现要素:

在至少一个方面中,本公开针对一种用于在信号处理中适配滤波器的方法,所述方法包括:基于输入信号中的ui值生成vi值,所述vi值被并行生成,其中i=0,1,2,...,n,un=d,其中d是从所述滤波器接收的输出信号;基于所述vi值递归生成γi值;基于si值和所述γi值生成d(i)和l(i)值,所述d(i)和l(i)值并行生成,其中所述si值是所述ui值的共轭或复共轭;并且根据所述ui、d(i)和l(i)值,生成信号w。

在至少另一个方面中,本公开针对一种用于在信号处理中适配滤波器的装置,所述装置包括:处理模块,包括:第一模块,用于从所述滤波器接收d值以及输入信号中的ui值;以及第二模块,用于生成信号w,并包括多个执行单元,所述第二模块被配置为:基于ui值生成vi值,所述vi值使用所述多个执行单元中的至少一些并行生成,其中i=0,1,2,...,n,un=d;基于所述vi值递归生成γi值;基于si值和所述γi值生成d(i)和l(i)值,所述d(i)和l(i)值使用所述多个执行单元中的至少一些并行生成,其中所述值si是所述ui值的共轭或复共轭;并且根据所述ui、d(i)和l(i)值,生成信号w。

在至少另一个方面中,本公开针对一种存储有指令的计算机可读存储介质,当所述指令被多个执行单元执行时,使得所述多个执行单元执行操作以在信号处理中适配滤波器,所述操作包括:基于输入信号中的ui值生成vi值,所述vi值使用所述多个执行单元中的至少一些并行生成,其中i=0,1,2,...,n,un=d,其中d是从所述滤波器接收的输出信号;基于所述vi值递归生成γi值;基于si值和所述γi值生成d(i)和l(i)值,所述d(i)和l(i)值使用所述多个执行单元中的至少一些并行生成,其中所述si值是所述ui值的共轭或复共轭;并且根据所述ui、d(i)和l(i)值,生成信号w。

附图说明

通过结合附图,将可更好地理解本公开,其中:

图1a为一个示例性自适应信号处理架构的描述;

图1b为一个可用于qr分解的示例性脉动阵列的描述;

图2a为描述示例性多核处理器的方框图;

图2b为描述示例性处理系统的方框图;

图3a为用于执行示例性循环的通用源代码;

图3b为示出了一个在至少一个实施例中的多执行单元处理系统上使用的并行化软件模型的方框图;

图4为根据至少一个实施例来并行执行qr分解和反代换(backsubstitution)的过程的流程图;

图5a为根据至少另一个实施例来并行执行qr分解和反代换的流程图;

图5b为根据至少另一个实施例的过程的流程图。

图6为一处理系统实施例的方框图;以及

图7为一通信装置实施例的方框图。

具体实施方式

本公开在至少一个方面针对用于在多执行单元处理系统上执行的基于qr分解的方法和系统。所述方法可实施基于最小二乘的方案,以求解方程组。所述方法可在多个执行单元上进行高度并行化以改进执行延迟。

许多通信应用都必须求解或估算方程组。在下面的方程(1)中,显示了一个以线性系ax=b表示的示例性线性方程的方程组。

在方程(1)中,矩阵a(a11,a12,...)是观察矩阵,可假定其为有噪声的;b是代表已知序列(如训练序列等)的矢量,x是要用最小二乘法计算的矢量,且e是残差或误差的矢量。这可用如下矩阵表示法更为紧凑地描述为:ax=b+e。如果方程的个数与未知数的个数相同(即有n=m),则方程组有唯一解。但是,如果方程的个数多于未知数的个数(即有n>m),则方程组是超定的,故而没有单独的唯一解。例如,这通常发生在高采样率通信应用中。可使用最小二乘法,通过让残差e最小来求解这个问题。

具体的,最小二乘法可用于求解超定线性系ax=b,其中a为mxn矩阵,有m>n。最小二乘解x使得残差矢量r(x)=b-ax的欧几里德范数的平方最小,从而有:

最小二乘解可通过运用基于2步法qr分解的过程求得。

求解过程中的基本概念起始于这个观察结果:当矩阵a是上三角矩阵时,即当i<j时有aij=0,则通过称为“反向代换”(backwardsubstitution)的过程,更容易对方程组求解。反向代换是一个递归的过程,其中要求解方程组,首先求解最后一个变量,然后,该过程继续求解倒数第二个变量,依次类推。

如此,在基于2步法qr分解的过程中,第一步可涉及使用qr分解将线性系ax=b转换为三角系rx=qtb。q是正交矩阵(q·qt=im),且r是上三角矩阵(i<j时rij=0)。在第二步,使用反代换求解三角系。

最小二乘问题可以用一种不同的记法改写为:

其中,是代表输入信号的矢量,是待估算的n个未知参数的矢量,d是基准信号,且是欧几里德距离。

在第一步中,可构造一个矩阵来求解最小二乘问题:

再一次地,其中u0,u1,...,un-1是来自输入信号矢量u的值,且d是基准信号。

然后即可根据m=qr,用qr分解将矩阵m分解,其中q是正交矩阵,且r是上三角矩阵。

在求解最小二乘问题的第二步中,可根据wopt=r-1执行反向代换,其中r-1是矩阵r的逆矩阵,且wopt是最优解。

图1a为一个示例性自适应信号处理架构150的描述,架构中包括自适应滤波器152和处理模块或系统154。图1a的架构仅为示例,并非旨在限制。自适应滤波系统一般可具有由一个或多个可变参数控制的传输功能,并有办法根据优化算法来调整所述一个或多个可变参数。在示例架构150中,可将输入信号ui馈入滤波器152和处理模块154中之一或二者。滤波器152可基于输入信号ui产生并输出信号d。然后,可将输出信号d馈入处理模块154。在这个意义上,输出信号d可以是处理模块154的基准信号。基于输入信号和来自滤波器152的输出信号d,处理模块154生成信号w,其可包括用于自适应滤波器152控制的一个或多个滤波系数或权重(或系数的改变量δ)。

根据本公开的实施例可搭配使用或关联自适应信号处理系统或自适应滤波器,包括但不限于类似于图1a的示例架构的系统。根据本公开的实施例和教示也可用在其他基于或使用qr分解的应用中。因此,本公开并不限于信号处理系统中的自适应滤波。

在第四代网络如长期演进(lte)和目前正处开发中的第五代(5g)网络中,多倾向于用浮点运算来实现最小二乘算法。相比前代而言,一些第四和第五代应用要求有更高的精度,例如32位真浮点复信号。此外,所用矢量一般较长,因为所用频率更高。

如前所述,存在若干种执行qr分解的技术。这包括gram-schmidt、householder和givens旋转法。

householder反射(或变换)法运用变换来得到上三角矩阵r。使用反射矩阵,有时称householder矩阵,将矢量中除第一个元素之外的所有元素全部抵消。第一个元素就被指定为该矢量的范数。于是,对输入矩阵的各列进行迭代处理,得到上三角r矩阵。

givens旋转法使用多次“givens”旋转来执行qr分解。每次旋转都在输入矩阵的一条次对角线上归零一个元素,从而得到三角形的r。正交q矩阵则通过将所有givens旋转串联(concatenation)而得。

一些现有的qrd手段是在硬件上实现的,这是由于在传统上,硬件上所能实现的运算时间快于软件上所能实现的运算时间。

一些基于硬件的qrd实施方式是基于givens旋转算法。这些广泛运用于处理大型矩阵求逆和qr分解,尤其用于定点运算实施方式,如基于坐标旋转数字计算机(cordic)的矩阵求逆。

这些硬件实施方式通常基于givens旋转算法,这是因为相比基于gram-schmidt和householder的方法而言,该算法提供的数值稳定性通常更好,硬件并行性也更高。基于householder算法的一些实施方式提供了类似的数值稳定度,但所允许的硬件并行性较低。

基于givens旋转法的一些现有硬件qrd方法采用了前述的2步法。更具体地,先用脉动阵列执行qr分解,然后用反代换求解三角系。然而,由于基于givens旋转的qr分解是递归的,故而能够实现的并行性也是有限的。

现在参照图1b,其为一个可用于一些现有的qr分解实施方式中的示例脉动阵列100的描述。阵列100中包括边界单元格102和内部单元格104。输入矢量或矩阵的各个行(u0、u1、u2、...、un-1)被作为输入,加上数值d,从顶部开始馈入到阵列的单元格中。每个单元格可以作为一个cordic块实施。所有单元格中的值都同时例如按时钟周期转移到邻接单元格中。因此,可能的最快时钟周期可决定于最慢的单元格。一旦所有输入都通过该阵列,每个单元格中的r值(如r11、r12、r22等)和z值(如z1、z2、...、zm-i)即为qr分解的输出。之后,这些值用以用反代换来导出各系数。

在givens旋转的实施方式中,每个单元格上的旋转可计算如下。使用givens旋转,将零引入矩阵中。givens旋转矩阵将矢量v的第i和第j个元素旋转角度θ,从而有cosθ=c且sinθ=s。此处示出了一个givens旋转矩阵,其中“*”表示复共轭。

因此,要确定givens旋转矩阵,就要计算c值和s值。在本示例中对于边界单元格102,这些值,以及r矩阵的r值的计算方法如下:

脉动阵列100中内部单元格104的值可如下计算:

因此,可以观察到,边界单元格102由来自北方(如阵列顶部)的输入信号u触发,而内部单元格104则由来自北方的输入信号u和来自西方(如阵列左侧)的r值触发。

在一些使用脉动阵列如图1b的示例脉动阵列的实施方式中,存在着一个或多个障碍,限制了所能达到的执行并行程度。例如,高延迟的平方根运算和边界单元格102中所执行的求倒数运算(reciprocaloperation)通常无法并行执行。相应地,这些高延迟的运算需要顺序执行,导致整体执行延迟非常高。

在另选方式中,qr分解可采用基于householder的方法执行。可使用householder反射将矩阵m三角化,而householder反射通过householder反射矩阵pn实现。因此,qr分解中的r矩阵可通过r=p·m确定,其中p=πpn。对于大小为nxn的矩阵m,有:

r=pn-1·pn-2·pn-3·...p1·m。

此方法中包括递归,因为pi是通过使用pi-1·m计算的。因此,通常要到所有pi-1,pi-2,pi-3,...,p1都计算完毕,才能计算反射矩阵pi。反射矩阵p的计算中的递归性,为这些计算的并行执行带来了障碍。

进一步的,反代换过程通常也必须等到qr分解过程完毕才能开始。附加的,为了在反代换得以开始之前缓存一个或多个r矩阵,往往要求有足够的存储空间。

相应地,现有的基于householder的脉动阵列方法在能够达到的处理并行度方面受限。

虽然许多现有的qrd方法通常都已在硬件中实现以得到较好的性能,但硬件上的进步,包括并行处理系统如多核处理器(如多至8核或16核)和众核处理器(如16核以上),已使得用基于软件的方法达到类似硬件的性能成为可能。可以使用基于软件的解决方案来替代基于硬件的解决方案,例如用以提供更好的灵活性和可编程性、更低的成本和对最终用户更快的交付中的一点或多点。

虽然此处使用了术语“多核”和“众核”,但它们的含义并不局限于任何具体的核心数量。在一些例子中,这两个术语可以互换使用。

通过使用多核或众核处理器所能获得的性能改进往往取决于所用的软件的算法和算法的实施方式。性能上的获益通常局限于软件中能够在多个核心上同时并行执行的部分。

图2a为描述示例性多核或众核处理器200或处理系统的方框图,可配合本公开一个或多个实施例使用或在其中使用。为求简洁,仅示出了处理器200的一些组件。处理器200通常可包括指令存储器和调度器202、n+1个核心210(如核0、1、2、...、n-1、n)或其他执行单元,以及存储器、高速缓存或访问总线220。核心210可具有一个或多个运算逻辑单元(alu)(未示出)。附加地,核心210中的一些或全部可具有某些资源的专门访问,如寄存器文件、存储器端口及其他资源(未示出)。在一些实施例中,核心210中的一些或全部可以同步,以确保在相同的时钟沿上启动和完成。

可将指令例如从调度器202提供给一个或多个核心210。在一些例子中,所述指令可以仅在核心相关指数上有差异。如此,可以将一个指令并行提取到多个处理核心,且核心的处理单元可以执行这同一个指令,但是具有不同的核心相关指数。这样的处理可用在,例如,具有循环、且循环的每次迭代都独立于其前次迭代的程序中。

再者,图2a的多核处理器200仅为与根据本公开的方法一起使用的并行处理装置的示例。可考虑接受的是,本教示意在可结合其他并行处理装置和系统使用。

根据本公开的至少一个方面,提供了基于qr分解的最小二乘算法,其相比许多现有方法而言,可以以增加的并行性进行实现。增加的并行性允许该算法发挥多处理硬件如多核处理器的优势,达成增强的性能。性能上增强的形式可以是更短的执行延迟。

相比单核处理器(即便该单核处理器利用了流水线技术)也可以采用一个示例来演示使用众核处理器所能达成的性能改进。

图3a是用于执行示例循环过程的通用源代码。该过程循环2,048次,并执行各种运算。在本例中,每次循环中的运算都独立于该循环其他迭代中的运算。具体的,循环块中的第一个运算提供两个其他值的加和的结果(r7[i]=r8[i]+r9[i])。第二个运算包括第一个运算的和乘以一个值(r10[i]=r7[i]*r9[i])。此外,每次循环中的运算(如第一个和第二个运算)都独立于该循环其他迭代中的运算。

当图3a的循环在单执行单元处理器如单核处理器中执行时,在任意给定时间只能执行一个指令。即便单核处理器实施了流水线技术,依然只能一次执行一个指令。当要执行多个指令时,例如在有多次迭代的循环中,总体执行延迟可能较高。

图3b为众核处理器的示例的描述。在该例中,处理器有2048个核心(或其他执行单元)。一个独立迭代的循环,如图3a的循环,可以拆解为多个独立的指令流。每个指令流都可以加载到不同的核心中,从而让不同流中的指令可以并行执行。在示例中,可将循环的每次迭代视作单独的指令流,故而假定至少核心数与迭代次数相同时,循环的每次迭代可分别加载到不同的核心中。故而对于第一次迭代,其中i=0,则指令r7[0]=r8[0]+r9[0]和r10[0]=r7[0]*r9[0]可加载到第一核心302。与此同时,对于第二次迭代,其中i=1,则指令r7[1]=r8[1]+r9[1]和r10[1]=r7[1]*r9[1]可加载到第二核心304,以此类推。这样,该循环的一些或全部迭代就可并行执行。

在处理器所具有的核心(或其他执行单元)数少于指令流数的情况中,处理仍然可以并行发生。可执行第一批或第一组指令流,然后在时间上继续一组或多组其他指令流。

因此,在本公开的至少一个实施例中,可将qr分解相关过程中的迭代独立循环拆解或分离为多个独立循环体。这些循环体可作为单独的指令流,按并行方式处理。

在本公开的至少一个实施例中,qr分解基于householder法,而非在一些现有的qr分解方法中所用的givens旋转法。在所述至少一个实施例中,将householder法中的递归部分或成分与其他操作分离。这就允许该方法中的其他操作并行化。进一步的,在一些实施例中,householder方法中的递归部分可以简化,例如简化为加法或累加运算。由此,在一些实施例中,所要求的存储空间大小和内存访问次数相比一些现有手段得到了降低。

为使用qr分解来求解方程组,可生成矩阵m:

其中u=[u0,u1,...,un-1]是代表输入信号的矢量,且d代表基准信号。

在该例中,m的维度为(n+1)x(n+1),且为稀疏矩阵。同样的,除了最后一个对角元素的值是d之外,所有对角元素的值都是1。

然后即可根据m=qr,用qr分解将矩阵m分解,其中q是正交矩阵,且r是上三角矩阵。矩阵r的维度为(n+1)x(n+1),不过我们仅对矩阵r-1中的nxn部分感兴趣,因为最后一行和一列与基准信号d有关。附加的,矩阵r-1的对角元素可以是实数值。

一旦矩阵m分解完毕,则根据wopt=r-1,可以使用反向代换得到系数矩阵w,其中r-1是矩阵r的逆矩阵,且wopt是代表解的系数矩阵。

现在描述根据本公开的至少一个实施例、并基于householder反射的过程。在qr分解中,矩阵r可按如下计算:

方程(11)可用矩阵表示法表示为:

方程(12)中的矩阵m可以从r=pm改写为r=p(i+eu),其中i为单位矩阵,e是除最后一个元素值为1之外全部为零的矢量,且u是数值矢量[u0,u1,...,un-1]:

其中,un=d-1。

方程r=p(i+eu)可改写为r=pi+peu的形式。

相应地,矩阵r的值为:

矩阵w实为矩阵r的逆矩阵,即为r-1,其可用反代换计算。在示例中,这可按如下计算:

观察到在方程(15)中,r-1可通过值p(j,j),即p的对角元素,以及值p(:,n),即p中最后一列的元素,来计算。因此,r-1的确定就可减少为计算p(j,j)和p(:,n)的值。故而方程(15)可改写为:

其中w(i,0)被初始化为零。另,

d(i)代表p的对角元素(“d”表示对角)的值,且l(i)代表p的最后一列(“l”表示最后)。

在基于householder法的qr分解算法中,所要求的大部分运算可能都是用于生成这n个householder反射矩阵pn,pn-1,pn-2,pn-3,...,p1。

矩阵p的计算涉及递归,因为如前所讨论,给定的反射矩阵pi通常只有在之前的pi-1、pi-2、pi-3、...、p1全部计算完毕之后方可开始计算。由此,反射矩阵p在计算中的递归性,为计算的并行执行带来了障碍。

在至少一个实施例中,将householder法中的递归部分与其他操作分离。这可允许该方法中的其他操作并行化。

在至少一个实施例中,方程(16)和(17)中的d(i)值和l(i)值中的一个或两个可以并行计算。

请参考如下householder反射矩阵p1和p2:

其中,

其中α0=1,且||u0||2是输入信号u的欧几里德距离输入值u0的平方,且其中:

其中,

因此,在householder矩阵p1、p2、p3、...等的生成中,唯一的递归成分是α。

在一般形式中,对于反射矩阵pn:

其仅依赖于输入值un-1和全部的之前的α,即αn-1,αn-2,...,α1。

采用α的这个计算,则d(i)和l(i)值的计算为:

再者,其中:

方程(24)中对αn的计算是递归的,因此不可能展开。此外,所述计算中包含求倒数、求平方根和连乘(continualmultiplication)。这种对αn的总体计算具有较长延迟。

αn的递归计算可改写为:

引入了新变量γ,可定义为:

使得有:

因此,qr分解的递归元素可以简化如下,其中包括求和或累加运算:

γn=γn-1+||un-1||2,γ0=1(28)

在方程(28)中,||un-1||2项基于输入值un-1,故而可并行进行预计算。因此,方程(28)中的递归得到了简化,使得递归中的每个实例都是求和或累加指令,即γn=γn-1+值。将这种累加指令的简洁与速度与运算速度与缓慢得多的方程(24)的计算进行对比。虽然方程(28)使用了求和或累加,但在其他实施例中,该递归可包含一个或多个其他运算或由其组成,例如一个或多个求和、累加、减法、乘法或其他低延迟运算等。在至少一个实施例中,方程(28)可使用浮点实值累加运算来实施。

图4为根据本公开至少一个实施例来并行执行qr分解和反代换的过程的一般化的流程图。此过程可使用具有多个执行单元的多处理硬件加以实现,例如多核或众核处理器,或具有多个运算逻辑单元(alu)的处理器。在图4的示例中,参照多核处理器描述了该过程。

该过程在方框400开始,进行到方框402,在那里,在多核处理器可接收到数据。所接到的数据可以是符号或其他值,并可通过多个流接收。所述数据可形成方程组的一部分,并可表示为或组织为矩阵m。

然后,该过程从方框402进行到方框404,在那里开始处理,尝试计算出该方程组的一个解。求解可按照任意合适的方式来计算,例如使用基于最小二乘的方法。

然后,该过程从方框404进行到方框406,在那里可开始将矩阵m分解为单位矩阵q和上三角矩阵r,以使m=qr。

然后,该过程从方框406进行到方框408,在那里,可以基于矩阵m中至少一些值计算第一组值,其中所述第一组值中的至少两个值可以用处理器中两个或更多个核心(或其他执行单元)并行计算。

然后,该过程从方框408进行到方框410,在那里,可以在qr分解的递归成分中计算第二组值。第二组值可基于第一组中至少一些值进行计算。在至少一个实施例中,第二组中的值可以使用方程(28)或类似或等价的方程进行计算。由于所述计算中的递归性,在一个实施例中,此计算仅可使用处理器中的一个核执行。

然后,该过程从方框410进行到方框412,在那里,可基于第二组值中至少一些值进行第三组值的计算。第三组值中的两个或更多个值可以用处理器中两个或更多个核心(或其他执行单元)并行计算。在至少一个实施例中,第三组中的值可包括d(i)值和l(i)值中之一或二者,这两个值可以根据方程(23)或类似或等价的方程进行计算。此外,在至少一个实施例中,第三组中至少一些值可用于计算上三角矩阵r。

然后,该过程从方框412进行到方框414,在那里,可基于第三组中至少一些值,并使用反代换进行系数矩阵w中的值的计算。矩阵w中的两个或更多个值可以用处理器中两个或更多个核心(或其他执行单元)并行计算。在至少一个实施例中,所述反代换可包括用处理器中至少两个或更多个核心(或其他执行单元)并行计算矩阵w中至少两行的值。与矩阵w中所有值不同的是,矩阵w中的各个行可以使用单独的数据或指令流来并行处理,因为每个行内的值的计算可能是递归的。换言之,在一些实施例中,矩阵w中第i行的值可能需要按递归方式进行计算。

一旦反代换完成,矩阵w中最后一列的值即可为w个系数,其可给出前文参照方框402所描述的方程组的一个解。

然后,该过程从方框414进行到方框416并结束。

图5a是根据本公开至少一个实施例来并行执行qr分解和反代换过程的流程图。图5a的示例可类似于图4的示例,并进行更详细的描述。图5a的过程可使用具有多个执行单元的多处理硬件加以实现,例如多核或众核处理器,或具有多个运算逻辑单元(alu)的处理器。

该过程在方框500开始,进行到方框502,其中,引入值vi和si来进行qr分解。这些值可定义如下:

vi=||ui||2(29)

si=ui*(30)

其中i=0,1,2,...,n,un=d,且*表示共轭或复共轭。

值vi与si(i=0,1,2,...,n)通过计算求得。两个或多个vi、si对(如具有相同的i值)可以在独立的循环体中计算。如前所述,两个或多个所述循环体可以单独但并行地,使用不同的执行单元处理。在一个实施例中,这些循环体中的两个或多个可馈入到多核处理器的不同核心或alu中。例如,v0和s0可馈入到多核处理器的第一核心,v1和s1可馈入到第二核心,v2和s2可馈入到第三核心,以此类推。不过,在至少另一个实施例中,vi和si的计算可馈入不同的核心中,进行同时的并行处理,例如v0可馈入第一核心,s0可馈入到第二核心,v1可馈入到第三核心,s1可馈入到第四核心,以此类推。

因此,在例如要计算16个vi和si对的示例中,每对都可馈入不同的核心,并行计算。此处假定有16个核心可用。如果仅有8个核心可用,则可先并行计算前8个vi和si对,然后计算余下的8个vi和si对。用多处理系统计算这些值的其他选项也是可能的。此处所述对数和核心数仅为示例,并非旨在限制。

该过程从方框502进行到方框504,其中,可执行qr分解的递归循环。这里,循环中可包括前文方程(28)所提出的基本加法(或累加)运算。如此,本过程中的递归循环可根据下式执行:

γi=γi-1+vi-1(31)

其中γ0=1,且i=1,2,3,...,n。

此循环中的递归性意味着可以顺序执行,例如仅使用多核处理器中一个核心或alu执行。

然后,该过程从方框504进行到方框506,在那里引入值ai和bi,二者可定义如下:

其中,i=0,1,2,3,...,n。

因此,一旦求出γi值,即可计算ai和bi值。虽然平方根计算(用于ai)和求倒数计算(用于bi)所用时间相比更简单的计算而言更长,且因而是高延迟指令,但这些对计算中的一些或全部可以并行执行。例如,类似于前述vi与si对的计算,每对ai和bi(如具有相同的i值)可以在独立的循环体中计算。两个或多个所述循环体可以单独但并行地使用多个执行单元计算。在一个实施例中,这些循环体中的两个或多个可馈入到处理器的不同核心或alu中。因此,不是用单个执行单元为每对ai和bi执行这些长运算,而是将一些或全部计算或成对计算并行执行,以缩短总体处理时间。

然后,该过程从方框506进行到方框508,在那里可用ai和bi值按下式计算d(i)和l(i)值:

d(i)=aibi+1

l(i)=sibibi+1

(33)

其中,i=0,1,2,3,...,n。

以上联系方程(23)描述了d(i)和l(i)值。

以类似于方框502和506中所执行的计算的方式,d(i)和l(i)对(如具有相同的i值)可以在独立的循环体中计算。如前所述,两个或多个所述循环体可以并行地使用处理器的多个执行单元进行处理。

然后,该过程从方框508进行到方框510,在那里可用计算而得的d(i)和l(i)值按下式执行反代换:

方程(34)与前文所提供的方程(16)相同。

如前所述,反代换计算包括递归成分。因此在一些实施例中,反代换不能完全展开来完全并行地计算所有w(i,j)值。不过,通过把对矩阵r的每个矩阵行i的计算展开到不同的指令流,可将反代换过程部分并行化。然后,矩阵r的给定行的每个指令流可以并行执行。另一种描述方式是:通过将矩阵w的每个矩阵行i展开到不同的指令流,可将反代换过程部分并行化。

一旦反代换完成,矩阵w中最后一列的值即可为w个系数,其为所述方程组或超定方程组的一个解。然后,该过程从方框510进行到方框512并结束。

图5b是根据本公开至少一个实施例的另一个过程的流程图。图5b的示例可至少一定程度上类似于图5a的示例过程,并且也可使用具有多个执行单元的多处理硬件实现。

该过程在方框520开始,进行到方框522,在那里,可生成或计算qr分解的vi值。所述vi值的生成可类似于在图5a的过程中联系方框502所描述的方式。所述vi值中的至少一部分或全部可以用至少两个多执行单元并行生成或计算。

该过程从522进行到方框524,在那里,可执行qr分解的递归循环。γi值的计算的执行可类似于在图5a的过程中参照方框504所描述的方式。

然后,该过程从方框524进行到方框526,在那里可生成d(i)和l(i)值。d(i)和l(i)值中一者或二者的生成的执行可类似于前文在图5a的过程中联系方框508所描述的方式。所述d(i)和l(i)值中的至少一部分或全部可以用至少两个多执行单元并行生成。

然后,该过程从方框526进行到方框528,在那里可根据ui、d(i)和l(i)值中的一些或全部生成或计算信号w。另外,信号w的计算方式可类似于前文联系图5a的方框510所描述的方式。

然后,该过程从方框528进行到方框530并结束。

虽然图4、图5a和图5b的实施例每个都在其各自的过程中示出了具体的数字和步骤顺序,但这并非意在限制。例如,步骤的顺序、步骤的个数以及步骤的本身在其他实施例中都可能有所不同。图4、图5a和图5b的实施例仅为示例,并非意在限制。

图2b是代表根据本公开的示例性处理模块或系统254的方框图。模块或系统254可配合一个或多个实施例使用或在其中使用。例如,模块254的处理可用于自适应滤波器架构中,包括但不限于图1a的架构。比如,图1a中的处理器方框154可包括与图2b中模块254类似的模块或系统。附加的,示例性处理模块或系统254可用于实施类似于或等同于在图4、5a或5b中所示出和描述的方法或过程。不过,应当理解的是,根据本公开的处理模块或系统可用于其他架构和其他应用中。

参照图2b,处理模块或系统254可包括一个或多个子模块,例如模块256和258。根据至少一个实施例,处理模块或系统254可包括第一模块256和第二模块258。第一模块256可被配置用于从滤波器接收d值以及输入信号中的ui值。第二模块258可被配置用于生成信号w,并包括多个执行单元。第二模块258还可被配置为使用所述多个执行单元中的至少一些个,根据ui值并行生成对应的vi值,其中i=0,1,2,...,n,un=d.。在至少一个实施例中,所有vi值可并行生成。不过在其他实施例中,仅有一些vi值可并行生成。

第二模块258还可被配置为根据vi值递归生成对应的γi值。对应值d(i)和l(i)可根据γi值和si值,使用所述多个执行单元中的至少一些并行生成,其中si值为ui值的共轭或复共轭。附加的,第二模块258可根据ui、d(i)和l(i)值生成信号w。信号w可以输出,例如供滤波器接收。

虽然处理模块或系统254被示出为具有两个模块256和258,但这并非旨在限制。模块254可具有更少或更多的模块或子模块。进一步的,虽然上述功能被描述为由两个子模块256和258中的一个执行,但这也并非旨在限制。

本公开所描述的方法、装置和系统可用于或配合任意计算系统或装置,包括但不限于用户设备、移动设备、节点b、基站、网元、传输点、机器、芯片等。例如,图6是一个可配合本公开的方法和装置使用的处理系统600的方框图。具体的装置既可以利用图示的所有组件,也可以仅用组件的一个子集,且不同装置的集成度可以不同。此外,一个装置还可以包含某个组件的多个实例,例如多个处理单元、处理器、存储器、发送器、接收器等。所述处理系统600可以包括处理单元,所述处理单元可以配备一个或多个输入/输出装置,例如扬声器、麦克风、鼠标、触摸屏、小键盘、键盘、打印机、显示器或诸如此类。所述处理系统可以包括处理器610、存储器620、大容量存储装置630、视频适配器640和连接着总线660的i/o接口650中的一个或多个。在至少一个实施例中,处理器610可以是多核或众核处理器,或具有多个执行单元的任意其他处理器,例如用于执行本公开的方法中的一个或多个。

所述总线660可以是若干种总线架构中的一种或几种,包括存储器总线或存储控制器、外围总线、视频总线或诸如此类。所述存储器620可以包括任意类型的系统存储器,如静态随机存取存储器(sram)、动态随机存取存储器(dram)、同步dram(sdram)、只读存储器(rom)或它们的组合或诸如此类。在一个实施例中,存储器可以包含开机时所用的rom、以及执行程序时存储程序和数据的dram。

所述大容量存储装置630可以包括任何类型的、被配置用于存储数据、程序和其他信息、并使得这些数据、程序和其他信息能够通过总线访问的存储装置。所述大容量存储装置630可以包括,例如,一个或多个固态驱动器、硬盘驱动器、磁盘驱动器、光盘驱动器等等。

所述视频适配器640和i/o接口650提供将外部输入和输出装置耦合到处理系统的接口。正如示出的,所述输入和输出装置的示例包括耦合到视频适配器的显示器642,以及耦合到i/o接口的鼠标/键盘/打印机652。也可将其他装置耦合到处理系统,并且可以利用更多或更少的接口卡。例如,可以用诸如通用串行总线(usb)(未示出)等串联接口为打印机提供接口。

处理系统600也包含一个或多个网络接口670,具体可包括有线连接(如以太网线等)、和/或无线链接,以访问节点或不同的网络。网络接口670可允许处理系统通过网络与远程单元或系统通信。例如,网络接口670可以通过一个或多个发送器/发射天线和一个或多个接收器/接收天线来提供无线通信。在一个实施例中,处理系统600可连接到一个或多个网络,例如示出为网络672的局域网或广域网,来进行数据处理和与远程装置如其他处理系统、互联网、远程存储设施等通信。

图7示出了通信装置或系统700的实施例的方框图,所述装置或系统可等价于前文所讨论的一个或多个装置(如用户设备、节点b、基站、网元、传输点、机器、芯片等)。所述通信装置700可包括一个或多个处理器704,例如多核或众核处理器,或任意其他多执行单元处理器或处理系统。通信装置700还可包括存储器706、蜂窝或其他无线接口710、附加无线接口712和附加接口714,其可按(或不按)图7所示布置。处理器704可以是任意能够执行计算和/或其他与处理有关的任务的组件,且存储器706可以是任意能够存储用于处理器704的程序和/或指令的组件。蜂窝接口710可以是允许通信装置700用蜂窝或其他无线信号进行通信的任何组件或组件的集合,并可用于在蜂窝或蜂窝的其他连接或其他网络上接收和/或发送信号。附加无线接口712可以是允许通信装置700通过一个或多个其他无线协议,如wi-fi或蓝牙协议或控制协议,进行通信的任何组件或组件的集合。装置700可使用蜂窝接口710和/或附加无线接口712与任意无线启用的组件如基站、传输点、网元、中继、移动设备、机器等进行通信。附加接口714可以是允许通信装置700通过包括有线线路协议的附加协议进行通信的任何组件或组件的集合。在实施例中,附加接口714可允许装置700与另一个组件如回传网络组件进行通信。

通过前述实施例的描述,本公开的教示可以仅用硬件实现,或用软件和硬件的组合实现。软件或其他用于实现一个或多个实施例的计算机可执行指令,或其一个或多个部分,可存储在任何适当的计算机可读存储介质之上。所述计算机可读存储介质可以是有形的或暂时性/非暂时性介质,如光的(如cd、dvd、蓝光等)、磁的、硬盘的、易失性或非易失性的、固态的或本领域公知的其他任意类型的存储介质。

此外,虽然在多核处理器和众核处理器的上下文中描述了实施例,但本公开的范围并非旨在限制于这种处理器。本公开的教示可用于或应用于其他应用中和其他领域中。因此,本公开的教示可一般地应用于其他类型的具有多个执行单元的处理系统。

本领域技术人员将理解本公开的附加特征和优点。

本文描述的并在附图中示出的特定实施例的结构、特征、附件和替代方案旨在一般性地并在相容的范围之内适用于本公开的所有教示,包括本文中描述和示出的所有实施例。换言之,特定实施例的结构、特征、附件和替代方案并非旨在限定于该特定实施例,除非确有如此表示。

此外,前文提供的详细描述用于让本领域技术人员能够制作或使用符合本公开的一个或多个实施例。对本领域技术人员而言,那些实施例的各种修改将是显而易见的,且在不背离本文所提供的教示的精神或范围的情况下,本文所定义的通用原则可应用于其他实施例。故此,本方法、系统和/或装置并非旨在限制于于此所公开的实施例。本权利要求的范围不应局限于这些实施例,而应以符合本说明书整体的方式加以最宽泛的解读。以单数提及的元素,如使用“一个”、“一”等冠词,并非旨在表示“一个且仅有一个”,除非明确如此说明,否则应指“一个或更多个”。凡与本公开全篇所描述的各种实施例的元素在结构上和功能上等价的,无论是已经为本领域技术人员所知晓或将来获知,均旨在包含于本权利要求书的元素之中。

此外,本公开任何内容均非旨在认可其为现有技术或公知常识。附加的,本申请中所援引或表明的任意文件均非认可此类文件作为现有技术而可用,也不认可任何参考形成了本领域公知常识中的一部分。此外,本文所公开的任何内容,无论此种公开是否在权利要求书中明确记载,均非旨在贡献给大众。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1