gpufilter
GPU-Efficient Recursive Filtering and Summed-Area Tables
gpufilter Library

Introduction

The GPU-Efficient Recursive Filtering and Summed-Area Tables (gpufilter) project is a set of C for CUDA functions to compute recursive filters and summed-area tables in GPUs (see illustrative figure in algSAT()). This project presents a new algorithmic framework for parallel evaluation. It partitions the image into 2D blocks, with a small band of data buffered along each block perimeter (see figure in head() for more details). A remarkable result is that the image data is read only twice and written just once, independent of image size, and thus total memory bandwidth is reduced even compared to the traditional serial algorithm.

The gpufilter project is based on the paper: "GPU-Efficient Recursive Filtering and Summed-Area Tables" by Diego Nehab, André Maximo, Rodolfo S. Lima and Hugues Hoppe.

How to use

The gpufilter project provides a list of low-level CUDA kernel functions (written in C for CUDA) in the GPU Computation functions module. These kernel functions implement the algorithms described in the paper. On top of those CUDA kernel functions, there are several high-level C++ functions in the API for GPU functions module to access them.

For comparison purposes, the project also provides CPU Computation functions to perform the same recursive filters in the CPU, an easy way to assess the difference between traditional serial algorithms and their massively parallel counterparts. On top of those CPU functions, there are several high-level C++ functions in the API for CPU functions module to access them.

Finally the project includes Utility classes and functions to (1) facilitate the communication between the CPU and the GPU, (2) measure computation timings, (3) approximate Gaussian filter convolution by third-order recursive filter with cascade first- and second-order filters.

How to get it

The source code of the gpufilter library is available under the MIT License, refer to the COPYING file for more details.

The gpufilter library can be downloaded following the link:

Google Code: code.google.com/p/gpufilter

Alternatively, the source code can be downloaded directly from the repository using the following command:

$ git clone https://code.google.com/p/gpufilter

Or a static (non-version control) instance of the source code can be downloaded from the following link:

http://www.impa.br/~andmax/libs/gpufilter.zip

For more information about the project visit the main project page at:

Project Page: www.impa.br/~diego/projects/NehEtAl11

Acknowledgments

This work has been funded in part by a post-doctoral scholarship from CNPq (Brazilian National Counsel of Technological and Scientific Development) and by an INST grant from FAPERJ (Rio de Janeiro Foundation for Research).

Credits

The people involved in the gpufilter project are listed below:

Diego Nehab
André Maximo
Rodolfo S. Lima
Hugues Hoppe