一种利用gpu对小矩阵求逆的方法

文档序号:6351686阅读:1800来源:国知局
专利名称:一种利用gpu对小矩阵求逆的方法
技术领域
本发明涉及无线通信技术领域,特别涉及一种利用GPU对小矩阵求逆的方法。
背景技术
矩阵求逆是一种经常遇到的重要矩阵运算,在信号处理、神经网络、自动控制等领域都有广泛应用。特别是在4G无线通信标准中,多个关键功能模块,例如OFDM (Orthogonal Frequency Division Multiplexing,正交频分复用)系统信道估计、ΜΙΜΟ (Multiple-Input Multiple-Out-put,多输入输出天线系统)信号检测等,当采用迫零算法或最小均方误差算法时都可以归结为对信道矩阵的某种变换进行求逆操作,另外,对于码长较长的 LDPC(Low Density Parity Check Code,低密度奇偶校验码)码编码也需要进行大矩阵求逆。矩阵求逆的处理速度直接影响了上述算法的执行速度,而矩阵求逆往往是非常费时的。现有的矩阵求逆大多是在CPU上通过软件实现的,能够满足较低数据传输速率的要求。也有部分在FPGA(Field-Programmable Gate Array,现场可编程门阵列)、DSP(Digital Signal Processing,数字信号处理)硬件上实现矩阵求逆的,能够满足较高传输速率的要求,但灵活性、可配置性较差。近年来,随着GPU(Graphic Processing Unit,图形处理器) 在非图形领域的科学计算中逐渐崭露头角,人们开始研究基于GPU的矩阵求逆算法。现有的基于GPU的矩阵求逆算法大多集中于高性能计算领域,针对维数较大(例如10MX 10M) 的矩阵,并且在一个应用中仅需进行一次大矩阵求逆。而在无线通信系统中,需要对数量众多的小矩阵进行求逆处理。例如,LTE(Long Term Evolution,长期演进)标准中规定在带宽为5MHz时,可以采用2X2MIM0,或 4 X 2MIM0,在20MHz带宽时,可以采用4 X 4MIM0,甚至8 X 8MIM0,此时信道矩阵的维度分别是2X2、4X2、4X4、8X8,经过变换后需要进行求逆处理的矩阵维度分别是2X2、4X4、 8X8。而当带宽为5MHz、1 OMHz、15MHz、20MHz时,要求0. 5ms的子帧周期内分别含有300、 600、900、1200个OFDM符号,即要在0. 5ms内分别完成300、600、900、1200个维度为2X2、 4X4、8X8的矩阵的求逆处理。与对大矩阵的一次求逆相比,对大量小矩阵的求逆在算法流程、数据调度、计算线程和线程块的数据分发等方面都存在较大的不同。现有做法是,要么在一个计算线程中完成一个矩阵的求逆,要么在一个线程块中完成一个矩阵求逆。这两类做法相对比较直观,易于实现,但在GPU上的并行效率较低。这是因为,从GPU的硬件结构看,大量的CUDA (Compute Unified Device Architecture,一种计算架构)核被分成若干个流多处理器(SMs),例如最新的NVIDIA Tesla C2050由14个SM组成,每个SM包含32个 CUDA核。每个SM作为一个单指令多线程(SIMT)处理器进行工作,而每个SM还含有一定大小的共享存储器,在共享存储器上的数据处理速度非常快,并且延时很小。而如果用一个线程计算一个矩阵的逆,那么每个线程上消耗的共享存储器较多,从而限制了 SM上并发的线程个数,进而降低其并行效率。另一方面,如果用一个线程块计算一个矩阵的逆,即线程块中的每个线程处理矩阵的一个元素,由于我们要处理的矩阵尺寸往往较小(例如,2X2,4X4,8X8),因此在一个线程块上的并行线程太小,也会影响其效率。

发明内容
(一)要解决的技术问题本发明要解决的技术问题是如何提供一种利用GPU对小矩阵求逆的方法,以提高对小矩阵求逆运算的速度。( 二 )技术方案为解决上述技术问题,本发明提供一种利用GPU对小矩阵求逆的方法,其包括步骤B 在GPU的共享存储器上创建维度为KX (NXN)的二维数组sm_a,创建两个维度为KXN的二维数组sm_is和sm_js ;K和N均为大于0的自然数;C 将GPU的全局存储器中的K个N阶方阵并行存储到所述共享存储器的二维数组 sm_a 中;D 利用所述二维数组sm_is和sm_js,在所述共享存储器中完成对所述K个N阶方阵的求逆处理。优选地,所述步骤D中,利用所述二维数组sm_is和sm_js,并采用全选主元高斯消去法,在所述共享存储器中并行完成对所述K个N阶方阵的求逆处理。优选地,所述步骤D具体包括步骤Dl 将K个N阶方阵A分别作为初始的当前方阵;D2 判断K个当前方阵是否是1阶方阵,如果是,退出;否则,将K个当前方阵中的最大元素的行下标分别存储到所述二维数组sm_is中,列下标分别存储到所述二维数组 sm_js 中;D3:对K个当前方阵,分别用所述行下标和列下标的组合对应的元素替换K个当前方阵中最上一行的对角线元素;D4:对K个当前方阵中的非对角线元素根据如下公式按照从上至下并且从左至右的顺序进行更新A(k, j) = A(k, j)/A(k, k);A(i,j) = A(i,j)-A(i, k) XA(k,j);A (i,k) = -A (i,k) /A (k, k);其中
权利要求
1.一种利用GPU对小矩阵求逆的方法,其特征在于,包括步骤B 在GPU的共享存储器上创建维度为KX (NXN)的二维数组sm_a,创建两个维度为 KXN的二维数组sm_is和sm_js ;K和N均为大于0的自然数;C 将GPU的全局存储器中的K个N阶方阵并行存储到所述共享存储器的二维数组sm_ a中;D 利用所述二维数组sm_is和sm_js,在所述共享存储器中完成对所述K个N阶方阵的求逆处理。
2.如权利要求1所述的方法,其特征在于,所述步骤D中,利用所述二维数组sm_is和 sm_js,并采用全选主元高斯消去法,在所述共享存储器中并行完成对所述K个N阶方阵的求逆处理。
3.如权利要求1所述的方法,其特征在于,所述步骤D具体包括步骤 Dl 将K个N阶方阵A分别作为初始的当前方阵;D2 判断K个当前方阵是否是1阶方阵,如果是,退出;否则,将K个当前方阵中的最大元素的行下标分别存储到所述二维数组sm_is中,列下标分别存储到所述二维数组sm_js 中;D3 对K个当前方阵,分别用所述行下标和列下标的组合对应的元素替换K个当前方阵中最上一行的对角线元素;D4:对K个当前方阵中的非对角线元素根据如下公式按照从上至下并且从左至右的顺序进行更新A(k,j) = A(k, j)/A(k,k);A(i, j) =A(i,j)-A(i,k)XA(k,j);A(i,k) =-A(i,k)/A(k,k);其中,0彡i,j彡N-I, i乒k,j乒k,i乒j ;D5:对K个当前方阵,分别删除最上一行和最左一列,得到新的K个当前方阵,执行步骤D20
4.如权利要求1所述的方法,其特征在于,在所述步骤B之前还包括步骤Α:选择由二维计算线程组成的线程块,所述线程块的第一维的数值对应待处理方阵的阶数,设定为N, 第二维的数值对应待处理方阵的个数,设定为K。
5.如权利要求1所述的方法,其特征在于,在所述步骤D之后还包括步骤E将所述K 个N阶方阵的求逆结果从所述共享存储器转移到所述全局存储器。
6.如权利要求1所述的方法,其特征在于,所述N的取值为2、4或者8。
全文摘要
本发明公开了一种利用GPU对小矩阵求逆的方法,涉及无线通信领域。所述方法包括步骤在GPU的共享存储器上创建维度为K×(N×N)的二维数组sm_a,创建两个维度为K×N的二维数组sm_is和sm_js;K和N均为大于0的自然数;将GPU的全局存储器中的K个N阶方阵并行存储到所述共享存储器的二维数组sm_a中;利用所述二维数组sm_is和sm_js,在所述共享存储器中完成对所述K个N阶方阵的求逆处理。所述方法既增加了并行的线程,又没有占用过多的共享存储器,且具有较好的可扩展性,显著提高了对小矩阵求逆运算的速度。
文档编号G06F17/16GK102567283SQ20111040735
公开日2012年7月11日 申请日期2011年12月8日 优先权日2011年12月8日
发明者周春晖, 李云洲, 王京, 赵明, 赵熠飞, 隋丹 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1