发明名称 一种基于GPU的高阶数字FIR滤波器频域并行处理实现方法
摘要 为解决高阶数字FIR滤波器并行处理效率的问题,提出了一种高效的、适合GPU体系结构的高阶数字FIR滤波器并行处理算法,该方法采用重叠保留方法结合GPU自身结构特点优化实现高阶数字FIR的频域并行化处理。通过计算FIR频率响应系数,将待处理的输入数据传送给GPU;数据重叠搬移;滤波计算处理;数据合并搬移;将合并搬移结果Y={Y0,Y1,....,Yk-1}传送到主机内存等步骤完成高阶数字FIR滤波器频域并行处理。对比在CPU上单线程所实现的FIR频域重叠保留方法,其吞吐率,即每秒处理样点的数量有着极大地提高,典型的加速比在100倍以上。
申请公布号 CN102340296A 申请公布日期 2012.02.01
申请号 CN201110204946.6 申请日期 2011.07.21
申请人 东北大学秦皇岛分校 发明人 汪晋宽;张春宏;韩英华;宋昕;高静
分类号 H03H17/02(2006.01)I;G06F9/38(2006.01)I 主分类号 H03H17/02(2006.01)I
代理机构 北京理工大学专利中心 11120 代理人 李爱英;郭德忠
主权项 一种基于GPU的高阶数字FIR滤波器频域并行处理实现方法,其特征在于:根据通用图形处理器GPU众核体系结构的特点,将重叠保留方法的处理过程划分为六个核函数:频响计算核函数、重叠搬移核函数、傅里叶变换核函数、乘法核函数、傅里叶逆变换核函数、合并搬移核函数;实现该方法的具体步骤如下:步骤一、确定有限冲击响应FIR频率响应系数;当给定的响应系数为FIR的冲击响应系数h={h(0),h(1),......,h(M‑1)}时,将FIR的冲击响应系数h={h(0),h(1),......,h(M‑1)},经过尾部填0扩展至长度为N,将扩展后的系数传送给GPU,启动频响计算核函数对FIR的冲击响应系数h进行N点的傅里叶变换,结果为有限冲击响应FIR频率响应系数H={H(0),H(1),......,H(N‑1)},保存在GPU内存中;当给定的响应系数为FIR频率响应系数H={H(0),H(1),......,H(N‑1)}时,将频率响应系数H传给GPU,并保存在GPU内存中,保存时,第一个字节的地址为存储器位宽的整数倍;步骤二、将待处理的输入数据传送给GPU;将一块长度为Nblk的待滤波样点数据X={B0,B1,...,Bk‑1}从主机内存中传入GPU的内存中,其中Nblk=k*L,k为整数,L为每个数据块的长度;其中Bi={Ci,Di},0≤i≤k‑1,Ci表示在Bi中起点为0,而长度为L‑M+1的连续样点数据块,Di表示在Bi中起点为L‑M+1,而长度为M‑1的连续样点数据块;步骤三、数据的重叠搬移;启动重叠搬移核函数完成数据重叠搬移操作,即将待滤波样点数据X={B0,B1,...,Bk‑1}以及输入的长度为M‑1的初始状态数据S0,重叠搬移为E={E0,E1,...,Ek‑1},其中E0={S0,B0},其中,S0为上一次处理待滤波样点数据X时其中的Dk‑1,对于i≠0的数据块Ei={Di‑1,Bi},同时将Dk‑1搬移到中S0,作为下一次处理过程的初始状态数据使用;重叠数据的搬移分为三个步骤,第一步,启动M‑1个线程同时工作,线程Ti(0≤i≤M‑2)完成将S0中第i个数据搬移到重叠搬移结果数据E0的S0中的第i的位置,然后再完成将Dk‑1中第i个数据搬移到S0中的第i的位置;第二步,启动L个线程同时工作,线程Ti(0≤i≤L‑1)完成将待滤波样点数据X的Bj(0≤j≤k‑1)块中第i个数据搬移到重叠搬移结果数据E的Bj(0≤j≤k‑1)块中的第i的位置;第三步,启动M‑1个线程同时工作,线程Ti(0≤i≤M‑2)完成将待滤波样点数据X的Dj(0≤j≤k‑1)块中第i个数据搬移到重叠搬移结果数据E的Dj(0≤j≤k‑1)块中的第i的位置;步骤四、滤波计算处理;启动傅里叶变换核函数,完成对每个Ei做N点的傅里叶变换运算,得到运算结果F={F0,F1,...,Fk‑1};然后启动乘法核函数完成Fi与系数H相乘操作,即Ii=Fi*H;然后启动傅里叶逆变换核函数,完成对每个Ii做N点的傅里叶逆变换运算,并得结果R={R0,R1,...,Rk‑1};在启动乘法核函数核函数时,启动N个线程同时工作,线程Ti(0≤i≤N‑1)完成将Fj(0≤j≤k‑1)中第i个数据与频响系数H中的第i个系数相乘,并将结果保存在Rj(0≤j≤k‑1)块中的第i的位置;步骤五、数据的合并搬移;启动合并搬移核函数完成数据的合并搬移操作,即将结果数据R={R0,R1,...,Rk‑1}合并搬移为Y={Y0,Y1,...,Yk‑1},其中Ri={Zi,Yi},其中Zi表示在Ri中起点为0,长度为M‑1的连续数据点所组成的数据块,Yi表示在Ri中起点为M‑1,长度为L的连续数据点所组成的数据块;在启动合并搬移核函数时,启动L个线程同时工作,线程Ti(0≤i≤L‑1)完成将乘积Rj(0≤j≤k‑1)中第M‑1+i个数据搬移到结果数据Yj(0≤j≤k‑1)块中的第i的位置,其中,启动的L个线程在同一时刻搬运长度为L的连续数据块;步骤六、将合并搬移结果Y={Y0,Y1,...,Yk‑1}传送到主机内存,若还有剩余数据需要处理重复步骤二,否则结束处理过程,完成高阶数字FIR滤波器频域并行处理。
地址 066004 河北省秦皇岛市经济技术开发区泰山路143号