CS 525: GPU Programming - Spring 2012

Andy Johnson

Electronic Visualization Laboratory
2032 Engineering Research Facility (ERF)

(312) 996-3002 (phone)   
aej at evl.uic.edu
(312) 413-7585 (fax)

33566 Lecture - T/Th - 3:30 - 4:45 in 2068 ERF

office hours: 4:45-6:00 in 2032 ERF, and by appointment


OpenGL Orange Book
OpenGL Shading Language 3rd Ed
aka 'the orange book'

Randi J. Rost
Addison-Wesley Professional
ISBM-13: 978-0321637635
              Computing with OpenCL book
Heterogeneous Computing with OpenCL

Gaster, Howes, et al.
Morgan Kaufmann
ISBN-13: 978-0123877666

This might also be helpful

Programming Massively Parallel Processors Book Programming Massively Parallel Processors: A Hands-on Approach

Kirk and Hwu
Morgan Kaufmann
ISBN-13: 978-0123814722


 Day  Topic  Important Events
 1/10 1/12   
 1. Intro to the Class, History, Setting up GLSL   
 Project 1 out
 1/17 1/19
 2. GLSL language study  last drop day
 1/24 1/26
 3. Standard Effects from Shaders
 1/31 2/02
 4. Fancier Stuff
 2/07 2/09
 Project 1 Review
 Proj 1 due, Proj 2 out
 2/14 2/16
 5. OpenCL

 2/21 2/23
 6. CUDA

 2/28 3/01
 7. Case Studies
 3/06 3/08
 Project 2 Review  Proj 2 due
 3/13 3/15
 Project 2 Review  Paper topic due
 3/20 3/22
 \|/ Spring Break \|/

 3/27 3/29
 Paper Presentation  Proj 3 topic due
 4/03 4/05
 Paper Presentation
 4/10 4/12
 Paper Presentation

 4/17 4/19
 Project 3 Review  Proj 3 due, final out
 4/24 4/26
 Project 3 Review
 Friday 5/4
 Final Exam from 1pm to 3pm

"so much time, so little to see ... wait a minute, strike that, reverse it" -- Willy Wonka


You should feel comfortable programming in C or C++, and have access to a computer with a modern graphics card capable of using the OpenGL Shading Extensions (OpenGL 2.0 compatible) and running OpenCL. Having experience programming OpenGL (at the CS 488 level) will be helpful.

Standard departmental disclaimer: If you do not have the prerequisites for this course make sure that you drop this course right away. The department will verify the prerequisites for all students registered in this course during the first few weeks of the term and if you do not have the prerequisites, you will be notified and dropped from the course after the normal drop/add period. By that time, you will not be able to enroll in any new course.


Programmable GPUs (Graphics Processing Units) emerged in 2001 and since then they have become a dominant topic in computer graphics and scientific visualization, allowing programmers to more directly take control of computer graphics hardware. We will look at the use of GPUs both for graphics processing and general parallel computation through a series of projects and presentations.


Attendance is very important, but not mandatory. Part of your grade will be based on your in-class participation (i.e. asking good questions, making good comments) so please take that into account.

I make a habit of putting all of my notes on the web, however these notes should not be considered 'official' until the day of class. If I make any major changes to a page afterwards, then I will announce it in class but note that at the bottom of each page is a modification date so you should be able to tell when the notes were last modified. I try to ensure that the notes on the web accurately reflect the lecture, but its what is discussed in class 'that counts', not what's written in the notes.

There is also a piazza page for the class - please sign up at https://piazza.com/uic/spring2012/

UIC wireless is kind of iffy in the classroom. If you want better access to wireless then please fill out the survey at http://www.surveymonkey.com/s/26KJSQ8

"Those who are absent are always wrong." - African proverb


More on the presentations

More on the projects

"I hear and I forget. I see and I remember. I do and I understand" - Chinese proverb


There will be a final exam at the end of the term covering the material presented in class. Most likely this will be a programming project that will be presented during the final exam period.


 The final grade will be calculated as follows Percent 
Letter grades  
 Projects (3 at 15% each) 45% 
A: 87% - 100% 
 Paper Presentation
B: 75% -   86% 
 In class participation 10% 
C: 62% -   74% 
 Final Exam (most likely another project)
D: 50% -   61% 
 TOTAL 100% 
E: 00% -   49% 

Note: that you must get a passing (D or better) grade on _all_ projects and final to get a passing grade in the course.

Also note: I only give Incompletes for serious hospitalization issues which come up suddenly near the end of the term.

Also also note: I have no qualms about giving Ds or Fs in a graduate level course, though the vast majority of the grades have tended to be As and Bs. I also have no qualms about failing graduate students for cheating - so be good.

last modified 4/8/12