Real-time Digital Signal Processing Using GPU


(Winter 2016)


General Information

Instructor: Pierre Boulanger
Tel: 780-492-3031

Office: 411 Athabasca Hall
Office hours: By appointment only.

Lectures: Every Friday 13h00 to 15h00 in Room CSC 363

Course Description

This class addresses the representation, analysis, and design of discrete time signals and systems. The major concepts covered include: discrete-time processing of continuous-time signals; decimation, interpolation, and sampling rate conversion; flow-graph structures for DT systems; time-and frequency-domain design techniques for recursive (IIR) and non-recursive (FIR) filters; linear prediction; discrete Fourier transform, FFT algorithm; short-time Fourier analysis and filter banks; multivariate techniques; Wavelet Transform; Cepstral analysis, Wiener and Kalman Filters, and various applications. We will also discuss and analyze the GPU implementations of many of these algorithms.


To introduce Computer Scientists to advanced signal processing theory that can be applied to various projects involving multi-dimensional datasets. The emphasis is based on stochastic view of multi-dimensional signals and how to extract useful and reliable information from those signals using GPU.


Basic statistical analysis is preferred. It is also assumed that you already have some familiarity with C Language.




Homework will generally be handed out in lecture and be due in lecture on the following week. Some parts of the homework will involve CUDA programming.

There will be approximately 5 problem sets. Don't be misled by the relatively few points assigned to homework grades in the final grade calculation. While the grade that you get on your homework is at most a minor component of your final grade, working the problems is a crucial part of the learning process and will invariably have a major impact on your understanding of the material.

Course Project

There will be an individual semester project, culminating in a final 8 pages report in IEEE format and a presentation at a day workshop. Progress and check points before the final due date will count toward the final grade.


Course Grade

The final grade for the course is based on our best assessment of your understanding of the material, as well as your commitment and participation. The problem sets and final projects are combined to give a final grade:




Final Project


Problem Sets









Lecture Notes


Course calendar.




Jan. 15

Course Overview

Jan. 22

Discrete-Time Signals and Systems

CUDA Programming Primer


Jan. 29

Signal Processing Parallelization

GPU Compute Architecture

Assignment 1

Feb. 5

GPU Memory Systems

Discrete Fourier Analysis Using GPU


Feb. 12


Assignment 2

Feb. 19

Winter Reading Week


Feb. 26

Wavelet Transforms Using GPU

Image Compression Using GPU


Real-Time Wavelet Filtering on the GPU

Mar. 4

Finite Impulse Filter (FIR) Using GPU

Assignment 3

Mar. 11

Wiener Filters and Its GPU Implementations

Host-Device Data Transfer

More on Wiener Filter

Embedded Real-time HD Video Deburring

Assignment 4

Mar. 18

LMS Adaptive Filter Introduction

GPU Implementation of Kalman Filter

Optimizing CUDA Performance

Mar. 25

No Class (Good Friday)

Apr. 1

Particle Filter and GPU Cluster

Apr. 11

Student Project Presentations

Final report due Apr. 15

Send report to


Extra Material for the Course


o   B. Champagne and F. Lebeau, Discrete Time Signal Processing, Course note of ECSE-412, Winter 2004

o   MATLAB Primer

o   MATLAB Tutorials

o   Signal Processing on a Graphics Card

o   GPU VSIPL is an implementation of Vector Signal Image Processing Library that targets Graphics Processing Units (GPUs) supporting NVIDIA CUDA platform

o   General-Purpose Computation on Graphics Hardware

o   GPU Programming at Caltech

o   Talks from NVIDIA GTC conference

o   Carnegie Mellon parallel architectures course

o   GPU Gems 3

o   Parallel Forall blog