EN600.407 General Purpose Computation on the GPU

Programmable graphics hardware not only provides a way to perform advanced real-time 3D rendering, but also a platform for highly parallel numerical computing. Over the past 5 years, the General Purpose Graphics Processor Unit (GPGPU) community has grown around performing non-graphics computations using the limited instruction set and framework of the graphics pipeline. This short course, which meets one hour per week for the Spring 2008 semester, will introduce students to GPGPU computing using NVIDIA's CUDA platform.
Instructor: Matthew Bolitho (bolitho@cs.jhu.edu)
Office Hours: Wednesday 9AM-10AM in the Computer Graphics Lab (NEB B20)
Lecture Time/Location: Wednesdays, 10AM in Shaffer 302

Announcements

06/01/08: Class is over for the semester! Thanks to everyone that helped make this course a sucess. By popular demand, the material from this course will be retaught in the Spring as a part of Randal Burns' Parallel Programming class.
Links 
DateTopicDownloads
January 30thIntroduction -- Objectives; Organisation; Introduction to Graphics Hardware PDF
February 6thParallel Computing PDF
February 13thIntroduction to CUDA -- Graphics Hardware History; CUDA Architecture; CUDA Memory Model; CUDA Execution Model PDF
February 20thCUDA Programming -- CUDA C/C++ Language Extensions; CUDA Compilation Tools; CUDA Debugging PDF
February 27thCUDA API -- Texture Memory, Device Management, Context Management, Memory Mangement, Function Invocation PDF
March 5thCUDA API; Homework One Review -- Streams; Events; Vector-Vector Addition; Performance; Vector-Vector Inner Product; Reduction PDF
March 12thPerformance PDF
March 19thNo Class - Spring Break
March 26thClass Cancelled
March 26thPerformance Tools -- Measuring Performance, CUDA Occupancy Calculator, Shared Memory Bank Checker, Profiler Code   XLS   PDF
April 9thPerformance -- Reduction Example PDF
April 16th
April 23rd
April 30thStudent Project Seminars