CN102567283A - 一种利用gpu对小矩阵求逆的方法 - Google Patents

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

Info

Publication number
CN102567283A
CN102567283A CN2011104073578A CN201110407357A CN102567283A CN 102567283 A CN102567283 A CN 102567283A CN 2011104073578 A CN2011104073578 A CN 2011104073578A CN 201110407357 A CN201110407357 A CN 201110407357A CN 102567283 A CN102567283 A CN 102567283A
Authority
CN
China
Prior art keywords
square formation
dimensional array
gpu
shared storage
dimension
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.)
Granted
Application number
CN2011104073578A
Other languages
English (en)
Other versions
CN102567283B (zh
Inventor
隋丹
李云洲
周春晖
赵熠飞
赵明
王京
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201110407357.8A priority Critical patent/CN102567283B/zh
Publication of CN102567283A publication Critical patent/CN102567283A/zh
Application granted granted Critical
Publication of CN102567283B publication Critical patent/CN102567283B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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对小矩阵求逆的方法
技术领域
本发明涉及无线通信技术领域,特别涉及一种利用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对比实验结果表
Figure BDA0000117775130000061
图2是本发明实施例所述的利用GPU对小矩阵求逆的方法加速效果图。该实验同样是针对维度为2×2、4×4、8×8的方阵,测试当方阵数量不同时,GPU对CPU的加速倍数。从图2中可以看出,对于同样个数的方阵而言,维度为2×2的方阵加速比最高,维度为8×8的方阵加速比最低。对于2×2的方阵,加速比随着处理方阵个数增加而快速提高,而对于维度为4×4、8×8的方阵,加速比受待处理方阵个数影响较小。
本发明实施例所述利用GPU对小矩阵求逆的方法,让每个计算线程处理方阵的一行(或一列)的多个元素,一个线程块同时处理多个方阵,既增加了并行的线程,又没有占用过多的共享存储器,且具有较好的可扩展性,显著提高了对小矩阵求逆运算的速度。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (6)

1.一种利用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阶方阵的求逆处理。
2.如权利要求1所述的方法,其特征在于,所述步骤D中,利用所述二维数组sm_is和sm_js,并采用全选主元高斯消去法,在所述共享存储器中并行完成对所述K个N阶方阵的求逆处理。
3.如权利要求1所述的方法,其特征在于,所述步骤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。
4.如权利要求1所述的方法,其特征在于,在所述步骤B之前还包括步骤A:选择由二维计算线程组成的线程块,所述线程块的第一维的数值对应待处理方阵的阶数,设定为N,第二维的数值对应待处理方阵的个数,设定为K。
5.如权利要求1所述的方法,其特征在于,在所述步骤D之后还包括步骤E:将所述K个N阶方阵的求逆结果从所述共享存储器转移到所述全局存储器。
6.如权利要求1所述的方法,其特征在于,所述N的取值为2、4或者8。
CN201110407357.8A 2011-12-08 2011-12-08 一种利用gpu对小矩阵求逆的方法 Expired - Fee Related CN102567283B (zh)

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 true CN102567283A (zh) 2012-07-11
CN102567283B 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)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880594A (zh) * 2012-10-17 2013-01-16 电子科技大学 基于多核dsp的并行矩阵全选主元高斯约旦求逆算法
CN107622037A (zh) * 2017-09-27 2018-01-23 郑州云海信息技术有限公司 一种提高图形处理单元的矩阵乘计算性能的方法和装置
CN108509386A (zh) * 2018-04-19 2018-09-07 武汉轻工大学 生成可逆模m矩阵的方法和装置
CN109347489A (zh) * 2018-11-23 2019-02-15 清华大学 一种用于通信的基于图形处理器的bch码并行译码方法
CN112837205A (zh) * 2021-03-05 2021-05-25 中国科学院计算机网络信息中心 一种图形处理器上基于延迟修正的批量矩阵求逆方法

Citations (4)

* Cited by examiner, † Cited by third party
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众核平台的矩阵并行转置方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
PABLO EZZATTI ET AL: "Improving the performance of the matrix inversion on a Tesla GPU", 《39JAIIO-HPC 2010》, 2 September 2010 (2010-09-02), pages 3211 - 3219 *
PETER BENNER ET AL: "High Performance Matrix Inversion of SPD Matrices on Graphics Processors", 《HIGH PERFORMANCE COMPUTING AND SIMULATION,2011 INT. CONF.》, 8 July 2011 (2011-07-08), pages 640 - 646 *
SHANE RYOO ET AL: "Optimization principles and application performance evaluation of a multithreaded GPU using CUDA", 《ACM PPOPP 2008》, 20 February 2008 (2008-02-20), pages 73 - 82 *
刘丽等: "基于GPU的矩阵求逆性能测试和分析", 《华东理工大学学报(自然科学版)》, vol. 36, no. 6, 20 December 2010 (2010-12-20), pages 812 - 817 *
徐士良: "《数值分析与算法》", 1 March 2007, article "2.6.2 全选主元矩阵求逆", pages: 99-106 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880594A (zh) * 2012-10-17 2013-01-16 电子科技大学 基于多核dsp的并行矩阵全选主元高斯约旦求逆算法
CN102880594B (zh) * 2012-10-17 2015-11-18 电子科技大学 基于多核dsp的并行矩阵全选主元高斯约旦求逆方法
CN107622037A (zh) * 2017-09-27 2018-01-23 郑州云海信息技术有限公司 一种提高图形处理单元的矩阵乘计算性能的方法和装置
CN108509386A (zh) * 2018-04-19 2018-09-07 武汉轻工大学 生成可逆模m矩阵的方法和装置
CN108509386B (zh) * 2018-04-19 2022-04-08 武汉轻工大学 生成可逆模m矩阵的方法和装置
CN109347489A (zh) * 2018-11-23 2019-02-15 清华大学 一种用于通信的基于图形处理器的bch码并行译码方法
CN109347489B (zh) * 2018-11-23 2021-07-27 清华大学 一种用于通信的基于图形处理器的bch码并行译码方法
CN112837205A (zh) * 2021-03-05 2021-05-25 中国科学院计算机网络信息中心 一种图形处理器上基于延迟修正的批量矩阵求逆方法
CN112837205B (zh) * 2021-03-05 2022-07-26 中国科学院计算机网络信息中心 一种图形处理器上基于延迟修正的批量矩阵求逆方法

Also Published As

Publication number Publication date
CN102567283B (zh) 2014-12-31

Similar Documents

Publication Publication Date Title
Samardzic et al. F1: A fast and programmable accelerator for fully homomorphic encryption
CN110447010B (zh) 在硬件中执行矩阵乘法
CN110622134B (zh) 专用神经网络训练芯片
KR102368970B1 (ko) 지능형 고 대역폭 메모리 장치
CN107729989A (zh) 一种用于执行人工神经网络正向运算的装置及方法
CN102567283B (zh) 一种利用gpu对小矩阵求逆的方法
US20160188337A1 (en) Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multimensional array
CN105335331B (zh) 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统
US9268691B2 (en) Fast mechanism for accessing 2n±1 interleaved memory system
US9304898B2 (en) Hardware-based array compression
US20130159665A1 (en) Specialized vector instruction and datapath for matrix multiplication
US10437562B2 (en) Apparatus and method for processing sparse data
CN111506520B (zh) 一种地址生成的方法、相关装置以及存储介质
US20230062352A1 (en) Efficient transforms and transposes for rate-distortion optimization and reconstruction in video encoders
CN107957975B (zh) 一种计算方法及相关产品
CN108108189B (zh) 一种计算方法及相关产品
CN102629238B (zh) 支持向量条件访存的方法和装置
CN107506173A (zh) 一种奇异值分解运算的加速方法、装置及系统
He et al. Efficient dense matrix‐vector multiplication on GPU
WO2016024508A1 (ja) マルチプロセッサ装置
EP3819788A1 (en) Data processing system and data processing method
CN102799564A (zh) 基于多核dsp平台的fft并行方法
CN101341471A (zh) 动态高速缓存管理的设备和方法
CN113052304A (zh) 用于具有部分读取/写入的脉动阵列的系统和方法
CN102012802B (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

Granted publication date: 20141231

Termination date: 20181208

CF01 Termination of patent right due to non-payment of annual fee