CIS 700/010 (Special Topics) - GPU Programming and Architecture

Towne Heilmeier (100) TR 1:30 - 3:00 pm
Instructor: Suresh Venkatasubramanian
TA: Paul Kanyuk

This course will examine the architecture and capabilities of modern GPUs (graphics processing unit). The GPU has grown in power over recent years, to the point where many computations can be performed faster on the GPU than on a traditional CPU. GPUs have also become programmable, allowing them to be used for a diverse set of applications far removed from traditional graphics settings.

Topics covered will include architectural aspects of modern GPUs, with a special focus on their streaming parallel nature, writing programs on the GPU using high level languages like Cg and BrookGPU, and using the GPU for graphics and general purpose applications in the area of geometry modelling, physical simulation, scientific computing and games.

The course will be hands-on; there will be regular programming assignments, and students will also be expected to work on a project (most likely a larger programming endeavour, though more theoretical options will be considered). Students will be expected to have a basic understanding of computer architecture, graphics, and OpenGL.


Prerequisite: CSE 460 or CIS 560, and familiarity with computer hardware/systems. The hardware/systems requirement may be met by CIS 501; or CIT 593 and 595; or CSE 240 (with CSE 371 recommended); or equivalent coursework.

This course will be an optional course under the CGGT Program.

Grading: 2-3 assignments, and one project.


Lectures

  1. Assignment 0: Fill out the survey.
  2. Reading:
  3. Reading:
  4. 01/20/2005: Cg Tutorial (Paul)
  5. 01/25/2005: Streaming Hardware (Milo)
  6. 01/27/2005: Assignment 1. Due Feb 15, 2005.
  7. Reading:
  8. 02/03/2005: Matrix Operations: Matrix-Vector multiplication
    Reading:
  9. 02/08/2005: Computational Geometry: Distance Fields (scribed by Ikkjin Ahn).
    Reading:
  10. Code: Code for class demo. WARNING: Code is written to compile in cygwin with g++. Also, it uses extgl rather than GLEW. Make changes appropriately.
  11. 02/15/2005: Diameter in 2D and 3D. Duality (scribed by Mike Lehr). Assignment 2. Due Mar 3, 2005. Project topics.
    Reading:
  12. 02/17/2005: More duality: Visibility and Collision Detection.
    Reading:
  13. 02/22/2005: Database and statistical operations.
    Reading:
  14. 02/24/2005: Guest Lecture: Milo Martin on the Cell Processor. (Slides) (6-per-page PDF)
    Reading:
      Power Efficient Processor Architecture and The Cell Processor, by H. Peter Hofstee. Slides from his talk at HPCA
  15. Reading:
  16. 03/03/2005: Deadline for Assignment 2 and project choices.
  17. 03/15/2005: Physical Simulation on the GPU I: Solving Linear Systems
  18. 03/17/2005: Physical Simulation the GPU II: Multigrid methods and Mapping to the GPU.
    Reading:
  19. 03/22/2005: GPU = Parallel Machine I: The FFT
    Reading:
  20. 03/24/2005: GPU = Parallel Machine II: Sorting and Hashing (Scribed by Joe Kider)
    Reading:
  21. 03/29/2005: Compiler Design.
    Reading:
  22. 04/05/2005: Guest Lecture: Data Transfer and Storage on the GPU -- Shankar Krishnan (AT&T)
  23. 04/07/2005: No Lecture Today.
  24. 04/12/2005: Guest Lecture: Graphics From A Systems Perspective -- Nick Triantos (NVIDIA)
  25. 04/14/2005: Guest Lecture: Renderman -- Paul Kanyuk
  26. 04/19/2005: Stream Models of Computation
  27. 04/21/2005: Wrapup.

Projects

Textbooks:

Other reading:

Other Resources

Acknowledgements

Courses at UC Davis (John Owens), UT Austin (Bill Mark), UNC (Dinesh Manocha and Naga Govindaraju), Aarhus (Jesper Mosegaard/Thomas Sangild), and talks by Pat Hanrahan