GPU Programming

CS 179

The use of Graphics Processing Units for rendering is well known, but their power for general parallel computation has only recently been explored. Parallel algorithms running on GPUs can often achieve up to 100x speedup over similar CPU algorithms, with many existing applications for physics simulations, signal processing, financial modeling, neural networks, and countless other fields.

This course will cover programming techniques for the GPU, focusing on visualization and simulation of various systems. Labs will cover specific applications in graphics, physics, and signal processing. The course will introduce the OpenGL Shader Language (GLSL) and nVidia's parallel computing architecture, CUDA.

Labwork will require extensive programming. Some experience with computer graphics algorithms is preferred, but not required. A working knowledge of the C programming language will be necessary.

9 units; third term.

   
Instructors: Connor DeFanti - cdefanti@caltech.edu
Tuan Anh Le - tle@caltech.edu
 
Supervising professors: Professor Al Barr - barradmin@cs.caltech.edu
Professor Mathieu Desbrun - mathieu@cs.caltech.edu
 
Time and place: MWF 3:00-4:00PM
107 Annenberg
 
Office Hours: Connor DeFanti - 8-10PM Monday
Tuan Anh Le - 8-10PM Tuesday
104 Annenberg, instructional laboratory
 
Grading policy: 100% homeworks. There are 6 homeworks, worth 10 points each, and one small project worth 20 points. Late homeworks will lose 2.5 points for each day late; after 4 days, they will be worth no points. To pass, 60% of the points must be earned, and a reasonable attempt must be made on every assignment. Extensions can be taken only with a note from the Health Center or from the deans. E grades will not be given.
 
Assignments: 1. Per-pixel phong shading, due 5pm, Wednesday 10 April 2013
2. Bump mapping and steep parallax mapping, due 5pm, Wednesday 17 April 2013
3. GLSL particle system, due 5pm, Wednesday 24 April 2013
4. CUDA particle systems, due 5pm, Wednesday 1 May 2013
5. CUDA quaternion Julia sets, due 5pm, Wednesday 8 May 2013
6. CUDA Monte-Carlo integration (volume finding), due 5pm, Wednesday 15 May 2013
7. CUDA final project, due 11:59PM, Friday June 7 2013
 
Lectures and recitations: 1.1. Class introduction
1.2. History of GPU Programming
2. Rendering, OpenGL, and lighting
3. Recitation for HW1
4. Textures
5. Spaces, shadows, and debugging
6. Homework 2 recitation; bump mapping and steep parallax mapping
7. Buffers and Render to Texture
8. Recitation for HW3: Particles
9. Introduction to CUDA: Part 1
10. Introduction to CUDA: Part 2
11. Recitation 4: CUDA Particles
12. CUDA Memory
13. CUDA Architecture
14. Recitation 5: Rendering Fractals
15. CUDA Runtime
16. CUDA Reduction Optimization
17. Recitation 6: Monte-Carlo Integration
17. Recitation 7: Final Project
 
Other resources: HTML version of the OpenGL Red Book
Official GLSL documentation
Official GLSL quick reference guide
Lighthouse 3D GLSL tutorial
NeHe OpenGL/GLSL Tutorials
The CUDA Zone
NVIDIA CUDA Programming Guide 2.0
CUDA Reference Manual 2.0
CUDA PTX ISA 1.2