基于gpu架构的qc-ldpc码的加速译码方法

文档序号:7518953阅读:190来源:国知局
专利名称:基于gpu架构的qc-ldpc码的加速译码方法
技术领域
本发明涉及一种数字信号处理技术领域的译码系统,具体是一种准循环低密度奇偶校验码(QC LDPC)的加速译码方法。
背景技术
低密度奇偶校验码(LowDensity Parity Check Codes, LDPC Codes)是 1963 年 Gallager首先提出的一种纠错编码,具有接近香农极限的性能,广泛地应用到各种无线通信领域的标准中,包括中国的数字电视地面传输标准、欧洲第二代卫星数字视频广播标准、 IEEE 802. I In、IEEE 802. 16e等,该技术还被广泛应用于磁存储系统及光纤通信。
准循环低密度奇偶校验码(Quasi-Cyclic LDPC, QC LDPC)是一类由小的零方阵和小的循环矩阵构成校验矩阵的LDPC码,是LDPC的一个重要分支,也是目前LDPC码构造中的一种最具实用性的结构。其结构使得其编码可以通过简单的移位寄存器实现,具有实现复杂度低的特点。除此之外,QC结构非常适合分层的译码算法,扩展因子Z_f 的存在对“层” 的概念产生自然的分割。进一步地,QC结构还非常适合实现部分并行的译码器结构,从而获得吞吐率和硬件复杂度方面的折中。最后,同一层内的Z_f个校验方程涉及到的比特节点是完全不同的,这是并行计算的底层基础。在此之上,编码器和译码器的层内并行运算得以实现,编译码的吞吐率都得以提高。
而针对市场迫切需要实时、高清晰度的3D图形,可编程的GPU已发展成为一种高度并行化、多线程、多核心的处理器,并具有杰出的计算功率和极高的存储器带宽。更具体地说,GPU可以专用于解决数据的并行计算问题,并能够极高效率地执行在许多数据元素上并行执行的程序,数据的并行处理会将数据元素映射到并行处理的线程中。许多处理大型数据集的应用程序都可以使用数据并行编程模型来加速计算。
经对现有技术的文献检索发现,专利申请号为201210045900. 9的中国专利,专利名称为“基于FPGA的准循环低密度校验码译码器及译码方法”,公开了一种基于FPGA的低存储量高速QC-LDPC码译码器和译码方法,主要解决现有技术中译码器的节点更新处理单元和RAM存储资源利用效率不高的问题。这也代表了现今LDPC码译码的主要加速手段。由于该方法用到了 FPGA硬件实现,需要考虑较多的时序问题以及资源分配等问题,具有较高的复杂度和成本并需要较长的开发周期;而且通用性以及可配置性不高。发明内容
本发明针对现有技术的不足,提出了一种基于GPU架构的QC-LDPC码加速译码方法,针对QC LDPC码字的特点,实现在不同的GPU平台下不同码率通用的加速译码方法。此方法可以极大地提高QC LDPC译码效率。QC LDPC码具有以下特点其一,由于在每个块中每一列都是左边一列循环下一移位的结果。所以,对于每个块实现时需要保存的仅仅是其中的一列(行)的信息,其他的列(行)都可以由这一行(列)经过循环移位来得到,这样就节省了大量的ROM资源。其二,QC结构非常适合分层的译码算法,扩展因子Z_f 的存在对“层”的概念产生自然的分割。进一步地,QC结构还非常适合实现部分并行的译码器结构,从而获得吞吐率和硬件复杂度方面的折中。其三,同一层内的Z_f个校验方程涉及到的比特节点是完全不同的,这是并行计算的底层基础。本发明利用这些特点,在GPU上独立并行地运行很多个LDPC译码器,实现加速译码。
本发明提供了一种在不同的GPU平台下不同码率的QC LDPC码加速译码方法,包括如下步骤
步骤A =CPU作为控制器,利用输入码的母矩阵,计算输入码的码字信息,并将码字信息放入GPU的常数存储器,并在完成所有初始化过程后,发起运行GPU核函数的命令;
步骤B :合理地配置GPU的各项参数,在每一个线程块中实现整个译码系统,通过线程间合作完成基于分层修正最小和算法(LMMSA)的LDPC译码实现。
优选地,所述步骤A包括如下步骤
-读取码字母矩阵信息,计算码字参数,包括校验矩阵最大行重maX_r0W_Wt、最大列重 max_col_wt、码长 code_length、QC 扩展因子 Z_f ;
-初始化各项译码参数,包括GPU计算能力、线程块数目、每个线程块上线程数目、 译码过程中的寄存器分配及存储信息;
-将信息比特放入GPU的全局存储器;
-将上述译码参数信息放入GPU的常数存储器,并在完成所有初始化过程后,发起运行GPU核函数的命令。
优选地,所述步骤B包括如下步骤
-根据GPU的常数存储器中的参数信息将GPU分成P*Q’个并行运行的线程块,其中P表示所使用GPU上的流多处理器(Stream Multi-processor, SM)的个数,Q’是GPU上每个SM上使用的流处理器(Stream Processor, SP)的个数;
-在每一个GPU线程块中,分配Z_f个线程,这些线程合作完成译码任务。译码过程包括完成信息节点后验对数似然比LLRSUM和校验节点传递给信息节点的对数似然比 LLREX的读取、更新和写回操作;
-将最后的译码结果由GPU的全局存储器返回给CPU。
优选地,上述译码过程中的译码核心在GPU上并行化实现,本发明对其各项参数进行了合理地优化。在GPU上的LDPC并行译码算法流程如下
I)从GPU的常数储存器中读出校验矩阵H以及生成矩阵G ;
2)并行执行P*Q’个GPU线程块,其中P和Q’的值有相应的约束条件,会在稍后叙述;
3)每个GPU线程块中并行执行Z_f个GPU线程,Z_f个线程合作完成步骤4)和步骤5)中的分层修正最小和算法(LMMSA)的译码过程。
4)根据参数中的迭代次数进行迭代译码,利用线程间合作从GPU全局存储器中读出信息节点后验对数似然比LLRSUM和校验节点传递给信息节点的对数似然比LLREX ;
5) Z_f个线程分别负责该层内Z_f个校验节点的计算。具体核心流程为线程依次处理该层内非负的矩阵元素(也就是扩展后为循环移位单位阵的那些矩阵元素),计算出校验节点的对数似然比LLR的最大值和次小值。因而该层Z_f行LLRSUM和LLREX的更新值被分别在GPU的共享存储器和寄存器中更新。此核心流程循环执行,直到所有的层都经过处理(一次矩阵迭代),然后输出判决结果和迭代中止的判定;如果译码没有完成,则继续译码核心流程,作下一次的矩阵迭代。
6)最后把P*Q’个LDPC码块的译码结果写回全局存储器;将控制权交给CPU。
其中,本发明的并行译码方法对不同规格的GPU和不同码率的QC LDPC码字通用, 其具体参数设置以及优化方法也是本发明的所包含的重要内容。
给定以下参数
I)给定GPU的规格如下流多处理器SM的数目为P,每个流多处理器SM上流处理器个数SP的数目为Q,为了管理运行各种不同程序的数百个线程,流多处理器SM利用了一种称为SMT(单指令、多线程)的架构。多处理器SMT单元以32个并行线程为一组来创建、管理、调度和执行线程,这样的线程组称为warp块,每个SM的warp块的数目为W,warp_ size大小为K,每个SM上的共享存储器为S字节,每个SM上的32_bit寄存器为R个。
2)给定核函数的设计参数如下网格内线程块的数量为B,每个线程块的线程数为T。对核函数进行编译分析,得到声明给每个线程块的共享存储器(_Shared_标记的变量)为S’字节,声明给每个线程的寄存器(核函数的局部变量)为R’个。
设计参数的确定方法以及优化步骤为
I)每个SM上实际运行的SP的数目为Q’,即总共并行执行P*Q’个线程块,而B 个线程块将被串行执行[B/(P*Q’)]次。要尽可能让更多的线程块同时执行,也就是让尽可能多的SP能够运行线程。同时执行的线程块数目将正比于译码最终的吞吐率(即吞吐率 =P*Q’ *N*r/t,其中r为码率,t为译码时间)。Q’的确定有以下4个约束
a)Q’ 彡 Q;
b)每个SM上warp的总消耗不大于warp资源的数量,即Q’ *T/K彡W,其中Τ/Κ 为每个线程块消耗的warp数量;
c)每个SM上寄存器的总消耗不大于寄存器资源的数量,即Q’ *T*R’ ( R,其中 T*R’为每个线程块消耗的寄存器数量;
d)每个SM上共享存储器的总消耗不大于共享存储器资源的数量,即Q’ *S’彡S。
2)分层修正最小和算法(LMMSA)译码过程中,本地的LLRSUM保存在共享存储器, 本地的LLREX保存在寄存器中。
3)全局的LLRSUM和LLREX保存在全局的存储器中,LLRSUM按比特节点序号线性存储,LLREX码字的层和层内元素的位置先后线性存储。
更为具体地,根据本发明的一个优选例提供了各种码率下的QC-LDPC码的加速仿真系统。由于LDPC码的译码性能的仿真是一件耗时的工作,尤其是在仿真误码平层的时候,通常是误码率在IOe-S以下,BER/FER曲线上的每个点都需要耗上数多小时甚至数天。 而根据本发明提供的加速仿真系统高效并准确的完成低误码平层LDPC码的仿真工作。具体通过以下技术方案实现的,包括以下步骤
第一步、CPU作为控制器,根据输入的仿真码字的母矩阵,计算码字的参数信息,包括校验矩阵最大行重max_row_wt、最大列重max_col_wt、码长code_length、QC扩展因子冗_ f ;
第二步、初始化仿真参数,包括性噪比EbNO、迭代次数iters、目标误码平层 target_ber_order、最小出错巾贞数min_error_blocks。将上述码字仿真信息以及仿真参数放入GPU的常数存储器,并在完成所有初始化过程后,发起运行GPU核函数的命令。
第三步、根据GPU的常数存储器中的参数信息、以及GPU平台的参数约束信息, 将GPU分成P*Q’个并行运行的线程块,其中P表示所使用GPU上的流多处理器(Stream Multi-processor, SM)的个数,Q’是GPU上每个SM上使用的流处理器个数(Stream Processor, SP),每个GPU线程块中并行执行Z_f个GPU线程;
第四步、线程间合作产生一个LDPC码块的信息比特,进行对信源数据的LDPC编码,然后对编码后的比特加上AWGN噪声;
第五步、根据仿真参数中的迭代次数进行迭代译码,利用分层算法线程间合作从 GPU全局存储其中读出信息节点后验对数似然比LLRSUM和校验节点传递给信息节点的对数似然比LLREX ;通过译码核心(每个线程利用GPU的共享存储器和寄存器完成LDPC码本层中一行的分层修正最小和算法,更新值涉及到的LLRSUM和LLREX,线程间合作将LLRSUM 和LLREX的更新值写回GPU的全局存储器)完成对通过噪声后的比特信息的译码;
第六步、线程间合作比对信源比特和译码结果中的比特,得到误码统计结果;
第七步、最后把P*Q’个LDPC码块的误码统计结果写回全局存储器;将控制权交给 CPU ;
本发明具有如下有益效果
(I)本发明所提出来的GPU并行译码方法对不同规格的GPU和不同码率的QC LDPC码字通用;
(2)本发明能够有效地加速QC LDPC码的译码,实现译码过程的并行化,大幅度提闻译码吞吐率;
(3)本发明针对GPU的并行执行结构,以及译码算法进行了极大限度地优化,能够极大限度地有效利用GPU上寄存器资源以及warp资源;
(4)基于本发明实现的译码系统架构复杂度低,实现容易,并且大幅度的提高了译码效率。


通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、 目的和优点将会变得更明显
图I是本发明中准循环扩展方法构造的QC-LDPC码的H矩阵的结构示意图2是本发明中所利用的GPU硬件结构示意图3是根据本发明所提供的QC-LDPC码仿真系统结构示意图4是本发明中并行译码核心结构示意图5是本发明中提出的译码优化方法示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
如图I所示,是准循环扩展方法构造的QC-LDPC码的H矩阵的结构示意图。以码长为2304,码率为O. 5的WiMAX码字为例,输入译码码字的母矩阵,计算校验矩阵最大行重为7,最大列重为6,码长N=2304,码率R=O. 5,QC扩展因子Z_f=96。
如图2所示,本发明中所利用的GPU硬件结构示意图。本实施例中GPU型号为 NVDIATesla C2050,其运算能力为2. 0,SP的数目为14*32,每个SM有32条warp,16K字节的共享存储器,16K个32-bit寄存器。根据本发明提出的优化方法,GPU网格中并行运行的线程块数位14*8,每个线程块中的线程数为96 ;每个线程块用3条warp,总共24条,满足 warp的约束条件,在编译核函数时对NVCC编译器使用_maxregcount=16限制每个线程最多使用16个寄存器,这样可以支持使Z_f=128.总共消耗16*96*8=12K个寄存器,经过编译计算得到每个线程块消耗共享存储器1099字节,总共8792个字节,均在条件范围内。
如图3所示,是根据本发明所提供的QC-LDPC码仿真系统结构示意图。CPU作为控制器,根据输入的仿真码字的母矩阵,计算码字的参数信息,计算码字参数,并将各参数信息放入GPU的常数存储器;同时完成仿真系统中的信源(产生一个LDPC码块的信息比特)、 编码(进行对信源数据的LDPC编码)、信道(对编码后的比特加上AWGN噪声)工作;然后,将经过信道的信息比特放入GPU的全局存储器中;并在完成所有初始化过程后,发起运行GPU 核函数的命令。GPU上则根据上述GPU参数并行运行的14*8个线程块,每个GPU线程块中并行执行96个GPU线程;线程间合作完成译码(根据参数中的迭代次数进行迭代译码)、统计(比对信源比特和译码结果中的比特)过程;最后把14*8个LDPC码块的误码统计结果写回全局存储器;将控制权交给CPU。
如图4所示,是对应于传统的基于LDPC码的译码核心迭代结构示意图。GPU译码核心算法根据仿真参数中的迭代次数进行迭代译码,利用分层算法线程间合作从GPU全局存储器中读出信息节点后验对数似然比LLRSUM和校验节点传递给信息节点的对数似然比 LLREX ;通过译码核心(每个线程利用GPU的共享存储器和寄存器完成LDPC码本层中一行的分层修正最小和算法,更新值涉及到的LLRSUM和LLREX,线程间合作将LLRSUM和LLREX的更新值写回GPU的全局存储器)完成对通过噪声后的比特信息的译码。
如图5所示,本发明中提出的译码系统优化方法示意图,根据所译码的QC LDPC码字参数确定核函数每个线程所需的共享存储器字节数S’ ;寄存器个数R’以及消耗的warp 数量T/K ;再根据选用的GPU硬件参数,包括流多处理器个数P、流多处理器上的流处理器个数Q、warp块的数目W、共享存储器大小S、以及寄存器的数目R,确定实际运行的SP数目, 即将译码系统并行化为P*Q’个线程块,并在每个线程块上跑Z_f个线程,合作完成译码过程。
所述的核函数控制是由CPU来完成,根据输入的译码码字的母矩阵,计算码字的参数信息,计算码字参数,并将各参数信息放入GPU的常数存储器;
所述的根据本发明提供的QC-LDPC码的译码过程由GPU来实现,通过确定的P*Q’ 个线程块,其并行实现译码核心,完成译码工作;
所述的GPU并行译码过程为线程依此处理该层内非负的矩阵元素(也就是扩展后为循环移位单位阵的那些矩阵元素),计算出校验节点的对数似然比LLR的最大值和次小值。因而该层Z_f行LLRSUM和LLREX的更新值被分别在GPU的共享存储器和寄存器中更新。次核心流程循环执行,直到所有的层都经过处理(一次矩阵迭代),然后输出判决结果和迭代中止的判定;如果译码没有完成,则继续译码核心流程,作下一次的矩阵迭代。
所述的分层修正最小和算法(LMMSA)译码过程中,本地的LLRSUM保存在共享存储器,本地的LLREX保存在寄存器中。全局的LLRSUM和LLREX保存在全局的存储器中,LLRSUM 按比特节点序号线性存储,LLREX码字的层和层内元素的位置先后线性存储。由于MSA的原因,每行的LLREX只需要保存每个元素的符号sign、该行的最小值min、该行的最大值 submin和该行的最小值的位置minldx。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
权利要求
1.一种基于GPU架构的QC-LDPC码的加速译码方法,其特征在于,包括如下步骤 步骤A =CPU作为控制器,利用输入码的母矩阵,计算输入码的码字信息,并将码字信息放入GPU的常数存储器,并在完成所有初始化过程后,发起运行GPU核函数的命令; 步骤B :合理地配置GPU的各项参数,在每一个线程块中实现整个译码系统,通过线程间合作完成基于分层修正最小和算法的LDPC译码。
2.根据权利要求I所述的基于GPU架构的QC-LDPC码的加速译码方法,其特征在于,所述的步骤A包括如下步骤 -读取码字母矩阵信息,计算码字参数,包括校验矩阵最大行重maX_r0W_Wt、最大列重max_col_wt、码长 code_length、QC 扩展因子 Z_f ; -初始化各项译码参数,包括GPU计算能力、线程块数目、每个线程块上线程数目、译码过程中的寄存器分配及存储信息; -将信息比特放入GPU的全局存储器; -将上述译码参数信息放入GPU的常数存储器,并在完成所有初始化过程后,发起运行GPU核函数的命令。
3.根据权利要求I所述的基于GPU架构的QC-LDPC码的加速译码方法,其特征在于,所述的步骤B包括如下步骤 -根据GPU的常数存储器中的参数信息将GPU分成P*Q’个并行运行的线程块,其中P表示所使用GPU上的流多处理器SM的个数,Q’是GPU上每个SM上使用的流处理器SP的个数; -在每一个GPU线程块中,分配Z_f个线程,这些线程合作完成译码任务;译码过程包括完成信息节点后验对数似然比LLRSUM和校验节点传递给信息节点的对数似然比LLREX的读取、更新和写回操作; -将最后的译码结果由GPU的全局存储器返回给CPU。
4.根据权利要求3所述的基于GPU架构的QC-LDPC码的加速译码方法,其特征在于,译码过程中的译码核心在GPU上并行化实现,并行译码具体地包括如下步骤 -从GPU的常数储存器中读出校验矩阵H以及生成矩阵G ; -并行执行P*Q’个GPU线程块; -每个GPU线程块中并行执行Z_f个GPU线程,Z_f个线程完成分层修正最小和算法的译码过程; -根据参数中的迭代次数进行迭代译码,并利用线程间合作从GPU全局存储器中读出信息节点后验对数似然比LLRSUM和校验节点传递给信息节点的对数似然比LLREX ; -Z_f个线程分别负责该层内Z_f个校验节点的计算,具体核心流程为线程依次处理该层内非负的矩阵元素,计算出校验节点的对数似然比LLR的最大值和次小值;因而该层Z_f行LLRSUM和LLREX的更新值被分别在GPU的共享存储器和寄存器中更新;此核心流程循环执行,直到所有的层都经过处理,然后输出判决结果和迭代中止的判定;如果译码没有完成,则继续译码核心流程,作下一次的矩阵迭代; -最后把P*Q’个LDPC码块的译码结果写回全局存储器;将控制权交给CPU。
5.根据权利要求4所述的基于GPU架构的QC-LDPC码的加速译码方法,其特征在于, -每个SM上实际运行的SP的数目为Q’,即总共并行执行P*Q’个线程块,而B个线程块将被串行执行[B/(P*Q’ )]次;Q’的确定满足以下4个条件Q’ ( Q ;每个SM上warp的总消耗不大于warp资源的数量,即Q’ *T/K ( W,其中T/Κ为每个线程块消耗的warp数量,W为每个SM的warp块的数目;每个SM上寄存器的总消耗不大于寄存器资源的数量,即q’ *T*R’ ( R,其中T*R’为每个线程块消耗的warp数量;每个SM上共享存储器的总消耗不大于共享存储器资源的数量S,即Q’ *S’ ( S,其中,S’为声明给每个线程块的共享存储器的字节数; -分层修正最小和算法译码过程 中,本地的LLRSUM保存在共享存储器,本地的LLREX保存在寄存器中; -全局的LLRSUM和LLREX保存在全局的存储器中,LLRSUM按比特节点序号线性存储,LLREX码字的层和层内元素的位置先后线性存储。
全文摘要
本发明提供基于GPU架构的QC-LDPC码的加速译码方法,包括CPU作为控制器,利用输入码的母矩阵,计算输入码的码字信息,并将码字信息放入GPU的常数存储器,并在完成所有初始化过程后,发起运行GPU核函数的命令;合理地配置GPU的各项参数,在每一个GPU并行线程块中实现整个译码系统,通过线程间合作完成基于分层修正最小和算法的LDPC译码。本发明针对QC结构LDPC码字的特点,实现了不同码率的QC-LDPC码在不同的GPU平台下通用的加速译码;并提供了LDPC译码器在GPU上的并行化实现和优化,能在GPU上独立并行地运行很多个LDPC译码器。译码效率大幅度提高,能非常有效的应用在仿真和实时译码系统中。
文档编号H03M13/11GK102932003SQ20121033076
公开日2013年2月13日 申请日期2012年9月7日 优先权日2012年9月7日
发明者王帆, 杨艺宾, 俞晖, 黄正勇 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1