GPU Programming

CS 101c

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 new 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: Luke Durant - luke@caltech.edu
Russell McClellan - russellm@caltech.edu
Tamas Szalay - tamas@caltech.edu
 
Supervising Professors: Professor Mathieu Desbrun - mathieu@cs.caltech.edu
Professor Al Barr - barradmin@cs.caltech.edu
 
Time and Place: Monday, Wednesday, Friday 1:00pm - 2:00pm
Jorgensen 74
 
Office Hours: Monday: Tamas Szalay, 8pm - 9pm
Tuesday: Luke Durant, 8pm - 9pm
                 Russell McClellan, 9pm - 10pm

JRG CS Lab -- (For now)
 
Class Links:
Grading:

100% Assignments, 60% to pass, but must make a reasonable attempt at all assignments. Assignments due Wednesdays at 1pm.
 

Partial List of Topics Planned:
  • GLSL Language and Syntax
  • Phong shading, texture mapping on gpu
  • Normal-mapping
  • Vertex shaders
  • Simulation using GLSL shaders
  • CUDA architecture
  • GPU hardware architecture
  • CUDA syntax
  • OpenGL/CUDA interoperability
  • Parallel algorithm basics
  • GPU numerics
  • CUDA optimization