CN102567283B - 一种利用gpu对小矩阵求逆的方法 - Google Patents
一种利用gpu对小矩阵求逆的方法 Download PDFInfo
- Publication number
- CN102567283B CN102567283B CN201110407357.8A CN201110407357A CN102567283B CN 102567283 B CN102567283 B CN 102567283B CN 201110407357 A CN201110407357 A CN 201110407357A CN 102567283 B CN102567283 B CN 102567283B
- Authority
- CN
- China
- Prior art keywords
- square formation
- dimensional array
- gpu
- row
- matrix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012545 processing Methods 0.000 title abstract description 12
- 230000008030 elimination Effects 0.000 claims description 2
- 238000003379 elimination reaction Methods 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 claims 17
- 238000003491 array Methods 0.000 abstract description 5
- 238000004891 communication Methods 0.000 abstract description 4
- 230000001133 acceleration Effects 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种利用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阶方阵的求逆处理。所述方法既增加了并行的线程,又没有占用过多的共享存储器,且具有较好的可扩展性,显著提高了对小矩阵求逆运算的速度。
Description
技术领域
本发明涉及无线通信技术领域,特别涉及一种利用GPU对小矩阵求逆的方法。
背景技术
矩阵求逆是一种经常遇到的重要矩阵运算,在信号处理、神经网络、自动控制等领域都有广泛应用。特别是在4G无线通信标准中,多个关键功能模块,例如OFDM(Orthogonal Frequency DivisionMultiplexing,正交频分复用)系统信道估计、MIMO(Multiple-InputMultiple-Out-put,多输入输出天线系统)信号检测等,当采用迫零算法或最小均方误差算法时都可以归结为对信道矩阵的某种变换进行求逆操作,另外,对于码长较长的LDPC(Low Density Parity CheckCode,低密度奇偶校验码)码编码也需要进行大矩阵求逆。
矩阵求逆的处理速度直接影响了上述算法的执行速度,而矩阵求逆往往是非常费时的。现有的矩阵求逆大多是在CPU上通过软件实现的,能够满足较低数据传输速率的要求。也有部分在FPGA(Field-Programmable Gate Array,现场可编程门阵列)、DSP(Digital SignalProcessing,数字信号处理)硬件上实现矩阵求逆的,能够满足较高传输速率的要求,但灵活性、可配置性较差。近年来,随着GPU(Graphic Processing Unit,图形处理器)在非图形领域的科学计算中逐渐崭露头角,人们开始研究基于GPU的矩阵求逆算法。现有的基于GPU的矩阵求逆算法大多集中于高性能计算领域,针对维数较大(例如1024×1024)的矩阵,并且在一个应用中仅需进行一次大矩阵求逆。
而在无线通信系统中,需要对数量众多的小矩阵进行求逆处理。例如,LTE(Long Term Evolution,长期演进)标准中规定在带宽为5MHz时,可以采用2×2MIMO,或4×2MIMO,在20MHz带宽时,可以采用4×4MIMO,甚至8×8MIMO,此时信道矩阵的维度分别是2×2、4×2、4×4、8×8,经过变换后需要进行求逆处理的矩阵维度分别是2×2、4×4、8×8。而当带宽为5MHz、10MHz、15MHz、20MHz时,要求0.5ms的子帧周期内分别含有300、600、900、1200个OFDM符号,即要在0.5ms内分别完成300、600、900、1200个维度为2×2、4×4、8×8的矩阵的求逆处理。与对大矩阵的一次求逆相比,对大量小矩阵的求逆在算法流程、数据调度、计算线程和线程块的数据分发等方面都存在较大的不同。现有做法是,要么在一个计算线程中完成一个矩阵的求逆,要么在一个线程块中完成一个矩阵求逆。这两类做法相对比较直观,易于实现,但在GPU上的并行效率较低。这是因为,从GPU的硬件结构看,大量的CUDA(ComputeUnified Device Architecture,一种计算架构)核被分成若干个流多处理器(SMs),例如最新的NVIDIA Tesla C2050由14个SM组成,每个SM包含32个CUDA核。每个SM作为一个单指令多线程(SIMT)处理器进行工作,而每个SM还含有一定大小的共享存储器,在共享存储器上的数据处理速度非常快,并且延时很小。而如果用一个线程计算一个矩阵的逆,那么每个线程上消耗的共享存储器较多,从而限制了SM上并发的线程个数,进而降低其并行效率。另一方面,如果用一个线程块计算一个矩阵的逆,即线程块中的每个线程处理矩阵的一个元素,由于我们要处理的矩阵尺寸往往较小(例如,2×2,4×4,8×8),因此在一个线程块上的并行线程太小,也会影响其效率。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种利用GPU对小矩阵求逆的方法,以提高对小矩阵求逆运算的速度。
(二)技术方案
为解决上述技术问题,本发明提供一种利用GPU对小矩阵求逆的方法,其包括步骤:
B:在GPU的共享存储器上创建维度为K×(N×N)的二维数组sm_a,创建两个维度为K×N的二维数组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具体包括步骤:
D1:将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)×A(k,j);
A(i,k)=-A(i,k)/A(k,k);
其中,0≤i,j≤N-1,i≠k,j≠k,i≠j;
D5:对K个当前方阵,分别删除最上一行和最左一列,得到新的K个当前方阵,执行步骤D2。
优选地,在所述步骤B之前还包括步骤A:选择由二维计算线程组成的线程块,所述线程块的第一维的数值对应待处理方阵的阶数,设定为N,第二维的数值对应待处理方阵的个数,设定为K。
优选地,在所述步骤D之后还包括步骤E:将所述K个N阶方阵的求逆结果从所述共享存储器转移到所述全局存储器。
优选地,所述N的取值为2、4或者8。
(三)有益效果
本发明所述利用GPU对小矩阵求逆的方法,让每个计算线程处理方阵的一行(或一列)的多个元素,一个线程块同时处理多个方阵,既增加了并行的线程,又没有占用过多的共享存储器,且具有较好的可扩展性,显著提高了对小矩阵求逆运算的速度。
附图说明
图1是本发明实施例所述的利用GPU对小矩阵求逆的方法流程图;
图2是本发明实施例所述的利用GPU对小矩阵求逆的方法加速效果图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1是本发明实施例所述的利用GPU对小矩阵求逆的方法流程图。如图1所示,所述方法包括:
步骤A:选择由二维计算线程组成的线程块,所述线程块的第一维的数值对应待处理方阵的阶数,设定为N,第二维的数值对应待处理方阵的个数,设定为K。N和K为大于0的自然数,其中,N的优选地取值为2、4或者8。
步骤B:在GPU的共享存储器上创建维度为K×(N×N)的二维数组sm_a,创建两个维度为K×N的二维数组sm_is和sm_js。
步骤C:将GPU的全局存储器中的K个N阶方阵A并行存储到所述共享存储器的二维数组sm_a中。所述二维数组sm_a可以按照行优先或者列优先的策略存储所述K个N阶方阵A中的元素。
步骤D:利用所述二维数组sm_is和sm_js,并采用全选主元高斯消去法,在所述共享存储器中并行完成对所述K个N阶方阵A的求逆处理。
所述步骤D具体包括:
步骤D1:将K个N阶方阵A分别作为初始的当前方阵。
步骤D2:判断K个当前方阵是否是1阶方阵,如果是,退出;否则,将K个当前方阵中的最大元素的行下标分别存储到所述二维数组sm_is中,列下标分别存储到所述二维数组sm_js中。
步骤D3:对K个当前方阵,分别用所述行下标和列下标的组合对应的元素替换K个当前方阵中最上一行的对角线元素。假设其中一个方阵A为4阶方阵,第一次循环时,其在二维数组sm_is中存储的行下标依次为1,其在二维数组sm_js中存储的列下标依次为2。则第一次执行该步骤D3中,用方阵A中的元素A(1,2)替换元素A(0,0)。
步骤D4:对K个当前方阵中的非对角线元素根据如下公式按照从上至下并且从左至右的顺序进行更新:
A(k,j)=A(k,j)/A(k,k);
A(i,j)=A(i,j)-A(i,k)×A(k,j);
A(i,k)=-A(i,k)/A(k,k);
其中,0≤i,j≤N-1,i≠k,j≠k,i≠j。
步骤D5:对K个当前方阵,分别删除最上一行和最左一列,得到新的K个当前方阵,执行步骤D2。
经过所述步骤D4和D5替换处理后得到的方阵是所述K个N阶方阵的求逆结果。
步骤E:将所述K个N阶方阵的求逆结果从所述共享存储器转移到所述全局存储器。
本实施例所述方法让每个计算线程处理方阵A的一行(或一列)的N个元素,一个线程块处理K个方阵,这样既增加了并行的线程,又没有占用过多的共享存储器。并且,所述方法能够灵活适用于不同阶次的方阵,具有较好的可扩展性。
为了测试加速结果,本实施例分别选取维度为2×2、4×4、8×8的方阵进行实验。实验中所采用的硬件配置如下:CPU为Intel Corei7-950(主频3.07GHz,内存6GB);GPU为NVIDIATesla C2050(448个CUDA核处理器分为14个流多处理器,主频1.15GHz,显存3GB);操作系统是Win764位专业版;编程环境为Visual Studio 2008;CUDA版本为4.0。为了便于描述加速结果,用TCPU表示CPU进行矩阵求逆的运算时间,用TGPU表示相应程序在GPU上的执行时间(包括GPU上核函数的运行时间及CPU和GPU之间数据拷贝时间的总和),用TCPU/TGPU表示加速倍数。
表1是对比实验结果表。如表1所示,其给出了三种不同维度方阵进行10000次独立实验后统计得到的CPU与GPU运行时间比较结果,其中方阵数量均为60000。从表1中可以看出,对于三种维度的方阵,GPU的处理时间远远小于CPU的处理时间,并且方阵维度越小,加速比越高。
表1对比实验结果表
图2是本发明实施例所述的利用GPU对小矩阵求逆的方法加速效果图。该实验同样是针对维度为2×2、4×4、8×8的方阵,测试当方阵数量不同时,GPU对CPU的加速倍数。从图2中可以看出,对于同样个数的方阵而言,维度为2×2的方阵加速比最高,维度为8×8的方阵加速比最低。对于2×2的方阵,加速比随着处理方阵个数增加而快速提高,而对于维度为4×4、8×8的方阵,加速比受待处理方阵个数影响较小。
本发明实施例所述利用GPU对小矩阵求逆的方法,让每个计算线程处理方阵的一行(或一列)的多个元素,一个线程块同时处理多个方阵,既增加了并行的线程,又没有占用过多的共享存储器,且具有较好的可扩展性,显著提高了对小矩阵求逆运算的速度。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (1)
1.一种利用GPU对小矩阵求逆的方法,其特征在于,包括步骤:
A:选择由二维计算线程组成的线程块,所述线程块的第一维的数值对应待处理方阵的阶数,设定为N,第二维的数值对应待处理方阵的个数,设定为K;
B:在GPU的共享存储器上创建维度为K×(N×N)的二维数组sm_a,创建两个维度为K×N的二维数组sm_is和sm_js;K和N均为大于0的自然数;
C:将GPU的全局存储器中的K个N阶方阵并行存储到所述共享存储器的二维数组sm_a中;所述二维数组sm_a按照行优先或者列优先的策略存储所述K个N阶方阵中的元素;
D:利用所述二维数组sm_is和sm_js,在所述共享存储器中完成对所述K个N阶方阵的求逆处理;
所述步骤D具体包括步骤:
D1:将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)×A(k,j);
A(i,k)=-A(i,k)/A(k,k);
其中,0≤i,j≤N-1,i≠k,j≠k,i≠j;
D5:对K个当前方阵,分别删除最上一行和最左一列,得到新的K个当前方阵,执行步骤D2;
所述步骤D中,利用所述二维数组sm_is和sm_js,并采用全选主元高斯消去法,在所述共享存储器中并行完成对所述K个N阶方阵的求逆处理;
E:将所述K个N阶方阵的求逆结果从所述共享存储器转移到所述全局存储器;
所述N的取值为2、4或者8。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110407357.8A CN102567283B (zh) | 2011-12-08 | 2011-12-08 | 一种利用gpu对小矩阵求逆的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110407357.8A CN102567283B (zh) | 2011-12-08 | 2011-12-08 | 一种利用gpu对小矩阵求逆的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567283A CN102567283A (zh) | 2012-07-11 |
CN102567283B true CN102567283B (zh) | 2014-12-31 |
Family
ID=46412729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110407357.8A Expired - Fee Related CN102567283B (zh) | 2011-12-08 | 2011-12-08 | 一种利用gpu对小矩阵求逆的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567283B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880594B (zh) * | 2012-10-17 | 2015-11-18 | 电子科技大学 | 基于多核dsp的并行矩阵全选主元高斯约旦求逆方法 |
CN107622037A (zh) * | 2017-09-27 | 2018-01-23 | 郑州云海信息技术有限公司 | 一种提高图形处理单元的矩阵乘计算性能的方法和装置 |
CN108509386B (zh) * | 2018-04-19 | 2022-04-08 | 武汉轻工大学 | 生成可逆模m矩阵的方法和装置 |
CN109347489B (zh) * | 2018-11-23 | 2021-07-27 | 清华大学 | 一种用于通信的基于图形处理器的bch码并行译码方法 |
CN114065122B (zh) * | 2020-07-31 | 2025-04-08 | 深圳市中兴微电子技术有限公司 | 数据处理方法、设备和存储介质 |
CN112837205B (zh) * | 2021-03-05 | 2022-07-26 | 中国科学院计算机网络信息中心 | 一种图形处理器上基于延迟修正的批量矩阵求逆方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0260281B1 (en) * | 1986-03-05 | 1992-03-04 | Hughes Aircraft Company | Optical data processing systems and methods for matrix inversion, multiplication, and addition |
US5319586A (en) * | 1989-12-28 | 1994-06-07 | Texas Instruments Incorporated | Methods for using a processor array to perform matrix calculations |
CN101751376A (zh) * | 2009-12-30 | 2010-06-23 | 中国人民解放军国防科学技术大学 | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 |
CN101937425A (zh) * | 2009-07-02 | 2011-01-05 | 北京理工大学 | 基于gpu众核平台的矩阵并行转置方法 |
-
2011
- 2011-12-08 CN CN201110407357.8A patent/CN102567283B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0260281B1 (en) * | 1986-03-05 | 1992-03-04 | Hughes Aircraft Company | Optical data processing systems and methods for matrix inversion, multiplication, and addition |
US5319586A (en) * | 1989-12-28 | 1994-06-07 | Texas Instruments Incorporated | Methods for using a processor array to perform matrix calculations |
CN101937425A (zh) * | 2009-07-02 | 2011-01-05 | 北京理工大学 | 基于gpu众核平台的矩阵并行转置方法 |
CN101751376A (zh) * | 2009-12-30 | 2010-06-23 | 中国人民解放军国防科学技术大学 | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 |
Non-Patent Citations (5)
Title |
---|
High Performance Matrix Inversion of SPD Matrices on Graphics Processors;Peter Benner et al;《High performance computing and simulation,2011 Int. Conf.》;IEEE;20110708;640-646 * |
Improving the performance of the matrix inversion on a Tesla GPU;Pablo Ezzatti et al;《39JAIIO-HPC 2010》;20100902;3211-3219 * |
Optimization principles and application performance evaluation of a multithreaded GPU using CUDA;Shane Ryoo et al;《ACM ppopp 2008》;ACM;20080220;73-82 * |
刘丽等.基于GPU的矩阵求逆性能测试和分析.《华东理工大学学报(自然科学版)》.2010,第36卷(第6期),812-817. * |
徐士良.2.6.2 全选主元矩阵求逆.《数值分析与算法》.机械工业出版社,2007,99-106. * |
Also Published As
Publication number | Publication date |
---|---|
CN102567283A (zh) | 2012-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567283B (zh) | 一种利用gpu对小矩阵求逆的方法 | |
US20230169319A1 (en) | Spatially sparse neural network accelerator for multi-dimension visual analytics | |
US20190220199A1 (en) | Digital Signal Processing Data Transfer | |
CN111310910A (zh) | 一种计算装置及方法 | |
US11061742B2 (en) | System, apparatus and method for barrier synchronization in a multi-threaded processor | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
CN103902507B (zh) | 一种面向可编程代数处理器的矩阵乘法计算装置及方法 | |
CN105912501B (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 | |
CN109074259A (zh) | 用于块isa处理器的并行指令调度器 | |
US20130007415A1 (en) | Method and apparatus for scheduling of instructions in a multi-strand out-of-order processor | |
CN112445753A (zh) | 从多维阵列预取多维元素块的硬件装置和方法 | |
US20160026607A1 (en) | Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media | |
CN108228234A (zh) | 用于聚集-更新-分散操作的加速器 | |
US10749502B2 (en) | Apparatus and method for performing horizontal filter operations | |
WO2022022362A1 (zh) | 数据处理方法、设备和存储介质 | |
Zhang et al. | Locality based warp scheduling in GPGPUs | |
Chen et al. | Improving GPGPU performance via cache locality aware thread block scheduling | |
US10437562B2 (en) | Apparatus and method for processing sparse data | |
JP6551751B2 (ja) | マルチプロセッサ装置 | |
WO2021109665A1 (zh) | 一种数据处理装置、方法、基站和存储介质 | |
CN110837419A (zh) | 基于弹性批处理的推理引擎系统、方法及电子设备 | |
CN107943756B (zh) | 一种计算方法及相关产品 | |
CN108108189B (zh) | 一种计算方法及相关产品 | |
CN102298568A (zh) | 一种动态可重构阵列的配置信息切换方法及装置 | |
TWI775151B (zh) | 圖形處理器及其矩陣運算的加速方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141231 Termination date: 20181208 |