面向gpdsp的矩阵lu分解向量化计算的方法_3

文档序号:8319127阅读:来源:国知局
向量寄存器z 5中。
[0091]S3.6:DSP核的向量处理阵列使用向量加法操作将向量寄存器Z4的向量数值加p。
[0092]上述步骤中向量寄存器Z4存储所处理列相对应的列元素序号。如列Ii的元素Ili,i+1、li+2,i对应的列元素序号为0,I, 2,每次循环加P更新列元素序号。
[0093]重复步骤S3.1至步骤S3.6,直到完成该列的所有元素计算,最终得到p个列元素值以及对应的P个列元素序号值。
[0094]S3.7:DSP核的向量处理阵列对上述P个列元素值进行数值大小的比较,计算出绝对值最大的列元素值作为列^的列主元,标记为P i,对应的列元素序号值标记为Vi。
[0095]在具体应用实例中,上述步骤S4的详细流程为:
[0096]S4.1:根据列主元PdA列元素序号值V i,以及矩阵A在片内共享存储阵列中的首地址AA。。,计算得出列主元PjZf在行的首地址AP i= AA oo+u* (Vi+i) *N。
[0097]S4.2:根据列首元Im的列元素序号值,以及矩阵A在片内共享存储阵列中的首地址AAcic!,计算得出列首元1[:1]所在行的首地址Al ti]= AA m+u*i*N。
[0098]S4.3:将片内向量阵列存储器划分为上下两片半区,半区的大小为q/2字节,DSP核使用DMA将列主元PiK在行共N个元素从片内共享存储阵列中传输至片内向量阵列存储器的上半区。
[0099]S4.4:DSP核使用DMA将列首元I ti]所在行共N个元素从片内共享存储阵列中传输至片内向量阵列存储器的下半区。
[0100]S4.5:DSP核使用DMA将上述片内向量阵列存储器的下半区的N个元素数据传输至片内共享存储阵列中以APi为首地址的位置。
[0101]S4.6:DSP核使用DMA将上述片内向量阵列存储器的上半区的N个元素数据传输至片内共享存储阵列中以Alm为首地址的位置。
[0102]在具体应用实例中,上述步骤S5的详细流程为:
[0103]S5.1:DSP核使用DMA将列Ii除列首元素I⑴以外的共N_i_l个元素数据从片内共享存储阵列传输到片内向量阵列存储器。
[0104]S5.2:DSP核使用标量LOAD指令读取片内共享存储阵列内的列首元素Im,存入标量寄存器S。。
[0105]S5.3:DSP核使用标量浮点除法指令计算1/1⑴值,结果存入标量寄存器S ^,并使用标量广播指令将Stl的数据广播至向量寄存器Z OO
[0106]S5.4:DSP核使用向量LOAD指令依次加载上述已经传输至片内向量阵列存储器的该列的其他元素数据,每次加载P个元素,存入向量寄存器Z1。
[0107]S5.5:DSP核使用向量乘法指令将向量数据Z1与向量数据Z。相乘,结果存入向量寄存器Z1。
[0108]S5.6:DSP核使用向量STORE指令将Z1中的向量数据结果存入片内向量阵列存储器中的原位置。
[0109]重复步骤S5.4到步骤S5.6,直至列Ii的列消元计算完成。
[0110]S5.7:DSP核使用DMA将片内向量阵列存储器中更新后的列Ii传输至片内共享存储阵列中的原位置。
[0111]在具体应用实例中,如图4所示,上述步骤S6的详细流程为:
[0112]将片内共享存储阵列矩阵A中,列首元Im右下方的矩阵记为L’ i,矩阵A中第i行位于上三角C的部分记为Ui,列首元1^右方包括u 1部分的矩阵记为L i,列^不包括列首元Im的部分记为列I’ i。
[0113]S6.1:DSP核使用DMA将列I’ N_i_l个元素从片内共享存储阵列传输到片内标量存储器。
[0114]S6.2:将矩阵1^按照规模Vl X v2划分为w个分块矩阵,分块矩阵分别记为L
Li, I,Li 2,…,Li, H,DSP核分w次循环,将每块分块矩阵传输至片内向量阵列存储器中进行计算,将计算结果传回片内共享存储阵列的原存储位置。
[0115]上述矩阵1^的分块规模vl,v2值的确定方法是:vl = N-1,v2 = p。
[0116]上述循环次数w的确定方法是:w = INT[(N-1_l)/p],其中INT表示对方括号中的值向上取整数。
[0117]将计算分为w次循环,第j+Ι次计算的分块矩阵记为Lu,矩阵Lu内包括矩阵L’ i的分块矩阵记为L’ i;J,以及行Ui的部分记为U’ i,将DSP核的片内向量阵列存储器分为上下两片缓冲区,缓冲区的大小为q/2字节,DSP核采用DMA双缓冲策略在片内向量阵列存储器和片内共享存储阵列之间进行数据传输及计算。
[0118]S6.2.1:DSP核使用DMA将分块矩阵Ly从片内共享存储阵列传输到片内向量存储器的一个缓冲区中。
[0119]S6.2.2:DSP核启动DMA将下一块矩阵1^_+1从片内共享存储阵列传输到片内向量存储器的另一个缓冲区中。
[0120]S6.2.3:DSP核在步骤S6.2.2启动DMA的同时,按照L’ i;J= L’ ^-1#,i计算更新矩阵L’
[0121]上述步骤6.2.3按照如下步骤执行更新矩阵L’ u的计算。
[0122]S6.2.3.1:DSP核使用标量LOAD指获取片内标量存储器列Ii元素,存入标量寄存器S0。
[0123]S6.2.3.2:DSP核使用标量广播指令将S。数据广播至向量寄存器Z。中。
[0124]S6.2.3.3:DSP核使用向量LOAD指令加载的P个u’ 1向量数据,存入向量寄存器Zp
[0125]S6.2.3.4:DSP核使用向量LOAD指令加载的p个L’ ^向量数据,存入向量寄存器
Z2O
[0126]S6.2.3.5:DSP核使用向量乘减指令执行Z2-ZfZc^
[0127]S6.2.3.6:DSP核使用向量STORE指令将将计算结果Z2存入片内向量存储器的原位置。
[0128]重复步骤S6.2.3.1至步骤S6.2.3.5,直至完成矩阵L’ ^更新计算。
[0129]S6.2.4:DSP核启动DMA将更新后的矩阵L’i;j从片内向量存储器的缓冲区中传输到片内共享存储阵列的原位置。
[0130]重复步骤S6.2.1至步骤S6.2.4,直至完成矩阵L’ i更新计算。
[0131]以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
【主权项】
1.一种面向GPDSP的矩阵LU分解向量化计算的方法,其特征在于,步骤为: 51:根据GPDSP的体系结构特征确定最佳的LU分解的矩阵规模N值; 52:GPDSP的DSP核通过DMA从片外DDR存储器将需要处理的矩阵数据传输到片内共享存储阵列中; 53:GPDSP的DSP核按照列选主元方法,计算第i列的主元值以及对应的列元素序号值,初始i = O ; 54:GPDSP的DSP核根据上述计算得到的列Ii的列主元P i以及对应的列元素序号值V i对矩阵A内列主SPi所在的行与列首元I m所在的行进行交换; 55:GPDSP的DSP核对列1^按照公式Ii=I i/lm进行列消元计算,更新列I i; 56:GPDSP的DSP核按照IZi=L,「I,^ui进行更新矩阵panel的计算; 57:判断i是否等于N-1,若不是,令i = i+Ι,转步骤S3,若是转步骤S8 ; 58:矩阵A的LU分解计算完毕;DSP核使用DMA将矩阵A从片内共享存储阵列传输到片外DDR存储器的原存储位置。
2.根据权利要求1所述的面向GPDSP的矩阵LU分解向量化计算的方法,其特征在于,在步骤SI中,设所处理的LU分解的矩阵规模为NXN阶非奇异矩阵,每个矩阵元素的数据为u字节;上述矩阵规模的N值的确定方法是:设条件(I) 2*u*p*s*N ( q ; (2)u*N*N ( r ;按照满足条件(I) (2)取得的最大N值为所需要的N值。
3.根据权利要求2所述的面向GPDSP的矩阵LU分解向量化计算的方法,其特征在于,在步骤S2中,所述片内共享存储阵列中的矩阵标记为矩阵A,其规模为NXN阶,首地址记为AAcitl;沿左上至右下的对角线方向,将矩阵A划分为上三角区域,标记为C,以及下三角区±或,标记为D ;将下三角矩阵D按照从左至右的方向按列分别记为111,
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1