CN103956991B - 一种基于cpu/gpu异构平台的fir滤波并行实现方法 - Google Patents
一种基于cpu/gpu异构平台的fir滤波并行实现方法 Download PDFInfo
- Publication number
- CN103956991B CN103956991B CN201410141793.9A CN201410141793A CN103956991B CN 103956991 B CN103956991 B CN 103956991B CN 201410141793 A CN201410141793 A CN 201410141793A CN 103956991 B CN103956991 B CN 103956991B
- Authority
- CN
- China
- Prior art keywords
- gpu
- thread
- cpu
- fir
- mrow
- 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.)
- Active
Links
Landscapes
- Filters That Use Time-Delay Elements (AREA)
- Image Processing (AREA)
Abstract
本发明涉及一种基于CPU/GPU异构平台的FIR滤波并行实现方法,合理布局GPU kernel函数的网格结构,运行GPU kernel函数,由网格结构中每个块Block的所有线程Thread并行地将待滤波数据从GPU显存读取到GPU共享内存,每个Thread依据线性相位FIR滤波公式计算滤波结果,所有Thread并行计算,将GPU中所有Thread计算结果从GPU显存拷贝至CPU内存,从CPU内存输出FIR滤波器的滤波结果。本发明充分利用CPU/GPU并行处理的优势,克服目前软件实现FIR滤波计算速度低、占用资源较多的不足,解决了实时处理大数据量高速滤波的难题。
Description
技术领域
本发明涉及一种基于CPU/GPU异构平台的FIR滤波并行实现方法,属于数字通信领域。
背景技术
FIR数字滤波器具有精确的线性相位,可以做成任意频率特性的滤波器,设计方法适应性强,实现起来结构简单,不存在稳定性问题。因此FIR滤波器被广泛应用于数字通信系统中的信号重建、相位均衡、自适应处理、图像处理和随机滤波等领域中。FIR滤波运算主要由移位寄存器、乘法器和加法器来完成。当采用大规模可编程逻辑器件(FPGA)作为FIR数字滤波器的实现载体时,由于FPGA器件的资源有限,因而直接采用乘加电路实现的FIR滤波器的最大阶数是一定的,且计算速度低、占用资源较多,无法满足实时处理要求的缺点。
发明内容
本发明解决的技术问题是:克服目前软件实现FIR滤波计算速度低、占用资源较多的不足,提供一种基于CPU/GPU异构平台的FIR滤波并行实现方法,提高了计算效率,减少了大数量滤波的运行时间,实现实时滤波的效果。
本发明的技术解决方案:提供了一种基于CPU/GPU异构平台的FIR滤波并行实现方法。充分利用CPU/GPU并行处理的优势,通过将FIR滤波计算密集的部分交由GPU计算,剩余部分仍由CPU负责计算,提高计算效率。在GPU计算FIR滤波时结合GPU共享内存读取数据的优势实现大数量的高速滤波。
具体步骤如下:
(1)将CPU内存待滤波的音频/视频数据拷贝至图形处理器GPU显存中;
(2)根据步骤(1)待滤波的音频/视频数据量和GPU共享内存大小合理布局GPUkernel函数的网格结构;
(3)步骤(2)网格结构中所有线程Thread运行GPU kernel函数,通过多个Thread并行地将步骤(1)中待滤波数据从GPU显存读取到GPU共享内存;
(4)每个Thread在步骤(3)共享内存上依据线性相位FIR直接型结构计算FIR滤波器的滤波结果。一个Thread计算一个滤波结果,所有Thread并行计算;
(5)将步骤(4)中所有Thread计算出的FIR滤波结果从GPU显存拷贝至CPU内存;
(6)从CPU输出FIR滤波器的滤波结果。
所述步骤(4)中FIR滤波计算公式为:
其中x(n)待滤波数据,n=0~+∞,h(k)为FIR滤波器系数,k=0~N,N为滤波器的阶数,取整数,y(n)为滤波器的滤波结果。
本发明与现有技术相比的优点在于:
(1)充分利用CPU/GPU异构平台的优势,通过将FIR密集计算部分交由GPU计算,剩余部分仍由CPU负责计算,通过GPU中大量线程并行处理提高计算效率。
(2)在GPU计算线性相位FIR滤波器中,充分利用共享内存访问时间短(仅一个时钟周期)的优势,避免在GPU显存中进行大量读写访问(其访问时间达500个时钟周期),在共享内存中完成FIR滤波计算,减少了读写访问时间。
(3)在FIR滤波计算中采用一个Thread计算一个滤波输出结果,GPU中所有Thread并行输出FIR滤波结果,提高了GPU中Thread的利用率。
附图说明
图1为CPU/GPU异构平台;
图2为FIR滤波并行处理流程;
图3为线性相位FIR滤波器的直接型结构。
具体实施方式
本发明的基本思路是:充分利用CPU/GPU异构平台的优势,通过将FIR密集计算部分交由GPU计算,剩余部分仍由CPU负责计算,提高计算效率。在GPU计算FIR滤波器时,利用共享内存访问周期短的优势,将数据读取到共享内存中从而避免大量数据在显存中读取。最后依据线性相位的FIR滤波直接型结构,使FIR滤波乘法算法减少一半,一个Thread计算一次的滤波结果,多个Thread同时进行FIR滤波计算,并行输出结果,减少运行时间。
下面结合附图和具体实施例对本发明作进一步详细的描述:
(1)如图2所示将CPU内存待滤波的音频\视频数据拷贝至GPU显存,可采用Memcpy函数实现,拷贝方向为:Host to Device。
(2)根据步骤(1)中待滤波的音频/视频数据量和GPU卡共享内存大小合理布局如图1所示的GPU线程网格结构及每个Block共享内存大小。在GPU中Thread数目越多,需分配共享内存就越多,但每块的共享内存大小受GPU卡物理性能影响。若分配的Thread数目少,则无法实现大数量的高速处理,需要折中选取Thread数目和所分配共享内存大小。
(3)步骤(2)网格结构中所有Thread运行GPU kernel函数,通过多个Thread并行地将待滤波数据从GPU显存读取到GPU共享内存,可直接利用线程索引将显存数组拷贝到共享内存。
(4)每个Thread在步骤(3)共享内存上,根据FIR滑动滤波算法计算FIR滤波器的滤波结果。其中FIR滤波计算流程如图3所示,每个Thread输出一个滤波结果。GPU分配的所有Thread并行输出所有滤波结果。
(5)将步骤(4)中所有Thread计算出的FIR滤波结果从GPU显存拷贝至CPU内存。可采用Memcpy函数实现,拷贝方向为Device to Host。
(6)从CPU输出FIR滤波器的滤波结果。
步骤(4)中FIR滤波计算公式为:
其中x(n)待滤波数据,n=0~+∞,h(k)为FIR滤波器系数,k=0~N,N为滤波器的阶数,取整数,y(n)为滤波器的滤波结果。
本发明涉及的kernel函数是在GPU编程中允许程序员定义一种C函数,称为内核。当一个内核被调用的时候,N个线程会并行执行这个内核,N的大小是由网格决定。
本发明涉及的GPU服务器异构平台架构如图1所示,其中GPU为CPU的显卡,是CPU的协处理器。它具有高度并行的架构,适于处理大量并行数据。可将代码的并行部分交由GPU计算,串行部分交由CPU计算。GPU并行函数的优化建立在合理布局线程的网格结构和优化存储访问上。本发明正是基于以上两点对FIR滤波进行并行优化设计,提高了计算效率,减少了运行时间。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (2)
1.一种基于CPU/GPU异构平台的FIR滤波并行实现方法,其特征在于:所述GPU为CPU的显卡,是CPU的协处理器,具有高度并行的架构,适于处理大量并行数据,能够将代码的并行部分交由GPU计算,串行部分交由CPU计算,GPU并行函数的优化建立在合理布局线程的网格结构和优化存储访问上,充分利用CPU/GPU异构平台的优势,通过将FIR密集计算部分交由GPU计算,剩余部分仍由CPU负责计算,提高计算效率,包括如下步骤:
(1)将CPU内存待滤波的音频/视频数据拷贝至图形处理器GPU显存中;
(2)根据步骤(1)待滤波的音频/视频数据量和GPU共享内存大小合
理布局GPU内核kernel函数的网格结构;所述的kernel函数是在GPU编程中允许程序员定义一种C函数,称为内核;当一个内核被调用的时候,N个线程会并行执行这个内核,N的大小是由网格决定;
(3)步骤(2)网格结构中所有线程Thread运行GPU kernel函数,通过多个Thread并行地将步骤(1)中待滤波数据从GPU显存读取到GPU共享内存;
(4)每个Thread在步骤(3)共享内存上依据线性相位FIR直接型结构计算FIR滤波器的滤波结果,使FIR滤波乘法算法减少一半;即先做加法后做乘法,一个Thread计算一个滤波结果,所有Thread并行计算;GPU分配的所有Thread并行输出所有滤波结果,提高了GPU中Thread的利用率;
(5)将步骤(4)中所有Thread计算出的FIR滤波结果从GPU显存拷贝至CPU内存;采用Memcpy函数实现,拷贝方向为Device to Host;在GPU计算线性相位FIR滤波器中,充分利用共享内存访问仅一个时钟周期的优势,避免在GPU显存中进行大量读写访问即其访问时间达500个时钟周期,在共享内存中完成FIR滤波计算,减少了读写访问时间;
(6)从CPU输出FIR滤波器的滤波结果。
2.根据权利要求1所述的一种基于CPU/GPU异构平台的FIR滤波并行实现方法,其特征在于:所述步骤(4)中FIR滤波计算公式为:
<mrow>
<mi>y</mi>
<mrow>
<mo>(</mo>
<mi>n</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<munderover>
<mi>&Sigma;</mi>
<mrow>
<mi>k</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
<mrow>
<mi>N</mi>
<mo>-</mo>
<mn>1</mn>
</mrow>
</munderover>
<mi>h</mi>
<mrow>
<mo>(</mo>
<mi>k</mi>
<mo>)</mo>
</mrow>
<mi>x</mi>
<mrow>
<mo>(</mo>
<mi>n</mi>
<mo>-</mo>
<mi>k</mi>
<mo>)</mo>
</mrow>
</mrow>
其中x(n)待滤波数据,n=0~+∞,h(k)为FIR滤波器系数,k=0~N,N为滤波器的阶数,取整数,y(n)为滤波器的滤波结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410141793.9A CN103956991B (zh) | 2014-04-10 | 2014-04-10 | 一种基于cpu/gpu异构平台的fir滤波并行实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410141793.9A CN103956991B (zh) | 2014-04-10 | 2014-04-10 | 一种基于cpu/gpu异构平台的fir滤波并行实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103956991A CN103956991A (zh) | 2014-07-30 |
CN103956991B true CN103956991B (zh) | 2017-09-29 |
Family
ID=51334233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410141793.9A Active CN103956991B (zh) | 2014-04-10 | 2014-04-10 | 一种基于cpu/gpu异构平台的fir滤波并行实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103956991B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506867B (zh) * | 2014-12-01 | 2017-07-21 | 北京大学 | 采样点自适应偏移参数估计方法及装置 |
CN104539262B (zh) * | 2014-12-08 | 2017-07-28 | 北京遥测技术研究所 | 一种连续可变速率的数字成型滤波处理方法 |
CN106293953B9 (zh) * | 2015-06-08 | 2019-06-18 | 龙芯中科技术有限公司 | 一种访问共享显示数据的方法及系统 |
CN106569780B (zh) * | 2016-11-04 | 2021-12-07 | 北京飞利信电子技术有限公司 | 一种多通道数字音频信号实时音效处理方法及系统 |
CN106936406A (zh) * | 2017-03-10 | 2017-07-07 | 南京大学 | 一种5并行快速有限冲击响应滤波器的实现 |
CN117290098A (zh) * | 2023-09-22 | 2023-12-26 | 中国科学院自动化研究所 | 基于gpu内联直通的高速数据处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340296A (zh) * | 2011-07-21 | 2012-02-01 | 东北大学秦皇岛分校 | 一种基于gpu的高阶数字fir滤波器频域并行处理实现方法 |
CN103345382A (zh) * | 2013-07-15 | 2013-10-09 | 郑州师范学院 | 一种cpu+gpu群核超算系统及sift特征匹配并行计算方法 |
CN103487511A (zh) * | 2013-05-06 | 2014-01-01 | 清华大学 | 动态多线程多通道超声信号处理装置及处理方法 |
-
2014
- 2014-04-10 CN CN201410141793.9A patent/CN103956991B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340296A (zh) * | 2011-07-21 | 2012-02-01 | 东北大学秦皇岛分校 | 一种基于gpu的高阶数字fir滤波器频域并行处理实现方法 |
CN103487511A (zh) * | 2013-05-06 | 2014-01-01 | 清华大学 | 动态多线程多通道超声信号处理装置及处理方法 |
CN103345382A (zh) * | 2013-07-15 | 2013-10-09 | 郑州师范学院 | 一种cpu+gpu群核超算系统及sift特征匹配并行计算方法 |
Non-Patent Citations (1)
Title |
---|
基于GPU的多帧信号FIR滤波的并行实现;张道成等;《舰船电子对抗》;20130831;第53页第3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN103956991A (zh) | 2014-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103956991B (zh) | 一种基于cpu/gpu异构平台的fir滤波并行实现方法 | |
CN105468335B (zh) | 流水级运算装置、数据处理方法及片上网络芯片 | |
CN103294648B (zh) | 支持多mac运算部件向量处理器的分块矩阵乘法向量化方法 | |
CN107729989A (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
CN107590085B (zh) | 一种具有多级缓存的动态可重构阵列数据通路及其控制方法 | |
CN103984560B (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN110415157A (zh) | 一种矩阵乘法的计算方法及装置 | |
CN103020890A (zh) | 基于多层次并行处理的视觉处理装置 | |
CN107957976A (zh) | 一种计算方法及相关产品 | |
CN109146067A (zh) | 一种基于FPGA的Policy卷积神经网络加速器 | |
CN102340296B (zh) | 一种基于gpu的高阶数字fir滤波器频域并行处理实现方法 | |
CN102360281B (zh) | 用于微处理器的多功能定点乘加单元mac运算装置 | |
CN102739195A (zh) | 一种fir滤波器的处理方法、装置和系统 | |
CN106415526A (zh) | Fft处理器及运算方法 | |
CN105048994A (zh) | 一种应用于fir滤波器的分布式算法 | |
CN104077081A (zh) | 一种存储方法及装置 | |
CN107957977A (zh) | 一种计算方法及相关产品 | |
CN104504205A (zh) | 一种对称fir算法的并行化二维分割方法及其硬件结构 | |
CN101630244B (zh) | 一种流水线型椭圆曲线双标量乘法系统及方法 | |
CN104679670A (zh) | 一种面向fft和fir的共享数据缓存结构及管理方法 | |
CN102446342A (zh) | 可重构二值运算器、可重构二值图像处理系统及其实现基本形态学算法的方法 | |
CN109472734A (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
CN103647522A (zh) | 一种基于四模余数系统的fir滤波器及其设计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |