基于GPU的数字信号论文

时间:2022-04-06 04:28:41

基于GPU的数字信号论文

1信号处理中的相关函数

信号处理中许多信号都要进行相关性分析,牵涉到信号相关的问题往往都会涉及大型的数据集。互相关,也称为“互协方差”。在智能信号处理相关领域中,是用来表示两个信号之间相似性的一个度量。互相关性可以通过与确定信号比较,来寻找不确定信号的特性,它是确定信号与不确定信号之间相对于时间的一个函数,也可以称为滑动点积。在模式识别以及密码分析学等很多领域,信号的互相关性都有广泛的应用[5]。

1.1相关函数的定义互相关是统计学中用来表示两个随机矢量X和Y之间的协方差cov(X,Y),与矢量X的“协方差”概念相区分,矢量X的“协方差”是X的各标量成分之间的协方差矩阵。自相关是对信号相关程度的一种度量,也就是说自相关可以看作是信号与自身的延迟信号相乘后的乘积进行积分运算,随机信号的自相关函数与其功率谱是傅氏变换对(随机信号无法得到具体的函数表达式,只有其统计信息),通过对接受信号的自相关运算可以进行频谱分析。同时,自相关在信号检测中也有很重要的作用,是在误码最小原则下的最佳接收准则[6]。

1.2信号处理中矩阵的相关性分析一个自适应系统输入的有用信号可以是确定信号或随机信号,而输入信号中不可避免的混有噪声或干扰,在频域考虑可能是窄带的也可能是宽带的[7]。一个自适应系统的输入信号和信号特性,通常对该系统的结构和性能起重要作用,输入信号用向量的形式表示,隐去时间函数,则信号向量X可以表示为。矩阵分析作为一种重要的数学工具,在信号与信息处理领域起着不可替代的作用。由于在现代信号处理、图像处理,以及通信相关领域中的操作和运算中,为了满足性能需要,所以对数据的吞吐量有极高的要求,其中很多操作都必须实时完成,所以对相关算法的实现速度就有了很高的要求。在数字信号处理中,大部分处理信号和图像的算法具有局部化、计算数据密集以及海量的矩阵运算等特点,所以为了提高算法的实现速度,寻找一种高速矩阵运算和高速密集型数据运算的方法对很多在数字信号处理中应用的复杂算法是十分有意义的[8]。

2GPU上大型矩阵快速运算的具体实现

在GPU中实现矩阵的快速乘法时,不仅要保证运算的精度问题,同时,也要保证运算的效率,提高运算的速度。所以,根据GPU的硬件结构,应该设计一种矩阵分块和内存分配方法[9],以便减少内存的访问次数。

2.1运算精度目前对于很多GPU来说,其只支持32b浮点数运算,所以在大量数据累加时,后面的数字位数一定被舍去过多,从而导致了运算结果的精度下降。而CUDA的浮点数运算是符合IEEE754运算精度标准的,因此,可以利用Kahan求和公式来提高运算的精度,具体流程伪代码如下。虽然Kahan求和公式在优化运算结果精度的同时增加了每个线程的运算量,但对于GPU来说,并没有内存存取的动作,所以对整体的运算效率影响很小,并且精度问题是整体运算结果的前提保证,所以这一步骤是十分必要的。

2.2矩阵分块由于CUDA平台一个线程块只同时支持512个线程并行工作,所以只有当内存控制器从某个固定倍数地址开始读取时,工作效率最高。解决这个问题最好的办法就是将大矩阵分解为16×16的小矩阵,这样每一个线程块就同时使用256个线程并行计算。所以小矩阵就可以完全加载到高速共享内存中,同时小矩阵自身乘法也不需要再存取外部内存。为了方便进行线程块的计算,对于两个矩阵A和B,可以分别为每个线程块分配16×16个线程,再建立(m/16)×(n/16)个线程块。但是,由于参加运算的矩阵阶不一定是16的倍数,所以对于最后一次分块,程序可以利用判断语句来控制。即:如果本线程的矩阵块没有超出A、B的阶数,就进行分块;如果超出,则只运算原始矩阵剩下的部分。

2.3内存分配为了使GPU高效率工作,在矩阵A和B的分块矩阵初始内存空间时,直接把内存大小配置成16的倍数,并在复制矩阵到显卡内存之前,将其清零。这种处理方法充分利用了GPU的硬件结构特点,满足GPU高效率读取内存的原则[10]。并且,CUDA提供的cudaMallocPitch()函数就可以满足该要求,它是一种节距分配,可以使分配的内存在硬件中的节距对齐,以提高共享内存的访问速度,并返回指向已分配内存的指针。

3实验结果与分析

在进行信号相关性分析的时候,往往计算量比较大,随着信号处理中矩阵的阶数不断增加,如果仅仅基于CPU的传统的串行算法,大大增加了计算所耗费的时间。在进行矩阵的相关性分析计算的过程中,实验环境配置见表1。分别对不同大小的一维矩阵进行相关性分析计算,矩阵的大小见表2。通过对矩阵A的列两两进行交叉相关性计算,产生一个一个大型矩阵输出,然后分别得出计算不同矩阵大小情况下相关性计算CPU和GPU所耗费的时间,分析计算出加速比。对不同大小的二维矩阵进行相关性分析计算,矩阵的大小见表3。对其中一个矩阵固定其大小,另外一个矩阵不断增大,对两个矩阵做二维的相关性计算,分别得出其基于CPU和GPU的相关性计算所耗费的时间,分析计算出加速比。由实验结果图3、图4可以得出,单一矩阵基于CPU和GPU进行相关性计算的的加速比最高达到了14.5倍,二维矩阵基于CPU和GPU进行相关性计算的加速比最高达到了5.3倍,二维矩阵的相关性计算涉及的数据量和计算量较大,通过计算时间可以看出基于GPU的相关性计算所耗费时间明显少于基于CPU下的相关性计算。通过实验对比可以得到随着矩阵的不断增大,进行相关性计算所用的时间不断增加,基于CPU的传统计算方式所耗费的时间增大幅度远远大于基于GPU的并行计算方式。因此基于GPU的并行加速数字信号处理中相关性算法效率明显高于传统的基于CPU的串行算法。

4结论

在进行信号相关性分析的时候,往往计算量比较大,随着信号处理中矩阵的阶数不断增加,如果仅仅基于CPU的传统的串行算法,大大增加了计算所耗费的时间。由实验结果可以得出,随着向量矩阵的不断增加,GPU的计算优势越来越明显,大大提高了计算的效率,产生更高的加速比,并且随着矩阵的不断增加,GPU计算所产生的加速比越来越明显。在智能信号处理、数字通信、地质、土地资源管理以及其他科学和工程领域中,都很广泛的应用到了信号的相关性分析技术。特别是在通信技术相关领域中,随着无线信号频率不断的提高,对于信号处理的复杂性和计算密集性,传统的DSP技术已经不能满足信号处理的实时性要求,随着图形处理器(GPU)性能的飞速发展,以及其在可编程方面最新的进步和强大的并行运算能力,所以现代GPU技术的发展给通信信号处理领域带来了新的希望。

作者:索东高建瓴王恒单位:贵州大学电子信息学院