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 other topics. The course will introduce nVidia's parallel computing architecture, CUDA. The course will cover basic CUDA commands and syntax, as well as several optimizations for CUDA code and utilization of CUDA libraries.

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
Kevin Yuh - kyuh@caltech.edu
Ben Yuan - byuan@caltech.edu
 
Supervising professors: Professor Al Barr - barradmin@cs.caltech.edu
Professor Mathieu Desbrun - mathieu@cs.caltech.edu
 
Time and place: MWF 5:00-5:55 PM
Location: ANB107
 
Office Hours: Connor DeFanti - Tuesdays, 8:00-10:00 PM
Kevin Yuh - Mondays, 8:00-10:00 PM
Ben Yuan - Tuesdays, 7:00-9:00 PM
104 Annenberg, instructional laboratory
 
Grading policy: There will be 8 labs, each worth 100 points, or 10% of your grade. At the end of the quarter, there will be one final project worth 200 points, or 20% of your grade. Extensions may be granted if the TA's see it appropriate. E grades will not be granted unless under extreme circumstances.
 
Assignments: Assignment 1
Assignment 2
Assignment 3
Assignment 4
Assignment 5
Assignment 6
Assignment 7

 
Lectures and recitations: 1. Class Introduction PPT PDF
2. Lab 1 Recitation PPT PDF
3. Lecture 3 PPT PDF
4. Lecture 4, Lab 2 Recitation PPT PDF
5. Lecture 5: CUDA Memory PPT PDF
6. Lecture 6: CUDA and Graphics PPT PDF
7. Lecture 7: Lab 3 Recitation PPT PDF
8. Lecture 8: CUDA Runtime PPT PDF
9. Lecture 9: Lab 4 Recitation PPT PDF
10. Lecture 10: GPU Accelerated Libraries PPT PDF
11. Lecture 11: Lab 5 Recitation PPT PDF
12. Lecture 12: Wave Equation PPT PDF
13. Lecture 13: Lab 6 Tip PPT PDF
14. Lecture 14: MPI PPT PDF
15. Lecture 15: Lab 7 Recitation PPT PDF
16. Lecture 16: Final Projects PPT PDF
 
Other resources: CUDA Setup Instructions
HTML version of the OpenGL Red Book
The CUDA Zone
NVIDIA CUDA Programming Guide 2.0
CUDA Reference Manual 2.0
CUDA PTX ISA 1.2