An Implementation of a FIR Filter on a GPU
This work has been done at SUNY Stony Brook.
General-purpose computing using graphics processors (GPUs) is an active area of research. Numerical algorithms often perform same computations for each input element. Their performance can improve when the computation is parallelized. GPUs include several programmable fragment processing units (FPUs) that render an image using a number of textures. Programmers can define textures as inputs of the numerical algorithm and implement the algorithm as a fragment program. The image is rendered to an off-screen buffer and is then copied to the main memory.
The goal of this project is to implement a finite impulse response (FIR) filter on a GPU. A FIR filter is often used in audio processing applications. Other algorithms such as a frequency translating FIR filter and a Hilbert transformation use FIR filter as the building block.
We added our implementation of FIR filter to GNU Software Radio and evaluated its performance using a Pentium 4-HT 3.2 GHz processor and a Geforce 6600 video card. The results of the experiments indicate that the GPU implementation has better performance than the CPU implementation for a large number of taps.
NEW: FIR on GPU as a stand-alone program is available for download!
- A. Smirnov and T.-C. Chiueh. An Implementation of a FIR Filter on a GPU. Technical report, ECSL, 2005. Presentation slides (ppt).
GNU Radio Installation under Linux Fedora Core 4
- FIR on GPU patch for GNU Radio
- FIR on GPU as a stand-alone program: fir_gpu.tar.gz
- GNU Software Radio project homepage. http://www.gnu.org/software/gnuradio
- General-Purpose Computation Using Graphics Hardware. http://www.gpgpu.org
- NVidia's developer resources. http://developer.nvidia.com
- NVidia GPU Programming Guide. http://developer.nvidia.com/object/gpu_programming_guide.html
- OpenGL manual pages. http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/
- GPUSort: High Performance Sorting Using Graphics Processors (available for download). http://gamma.cs.unc.edu/GPUSORT/index.html
- John C. Hart's homepage. http://graphics.cs.uiuc.edu/~jch/
- General Purpose Computations on GPU at SUNY SB Vislab. http://www.cs.sunysb.edu/~vislab/projects/gpgpu/
- A. Moravanszky. Dense Matrix Algebra on the GPU. http://www.shaderx2.com/shaderx.PDF
- K. Fatahalian, J. Sugerman, and P. Hanrahan. Understanding the Efficiency of GPU Algorithms for Matrix-Matrix Multiplication. http://graphics.stanford.edu/papers/gpumatrixmult/
- J. Kruger and R. Westermann. Linear Algebra Operators for GPU Implementation of Numerical Algorithms. http://wwwcg.in.tum.de/Research/data/Publications/sig03.pdf