Multicore and GPU Programming for Video Games (2012)

Multicore and GPU Programming for Video Games (2012)

Fall 2012

Many thanks to NVIDIA and ATI
for donating graphics cards for our Klaus 1446
laboratory

News

  • HW #4 and HW #5 posted.
  • Slides for Session 19-20 (for lectures on 11/8 and 11/13)
    and Session 21 (for lecture on 11/5) posted.
    That will be the end of the lecture material.

Course Description

This webpage constitutes the class syllabus.

Instructor:
Aaron Lanterman (office Van Leer W431);
When:
Fall 2012, TuTh 1:35-2:55;
Where: CoC 52

Old webpages, including old lecture videos (some have
errors; viewer beware!):
Fall 2007,
Fall 2008,
Fall 2009
(didn’t get around to posting all the videos, but still some good stuff),
Fall 2010,
Fall 2011 (didn’t record
video that year)

Course description: 3-D graphics pipelines. Real-time simulation
concerns. GPU architectures. Graphics APIs. Shader programming.
Multicore programming.

Prereqs:
Any one of the following is sufficient:
ECE3035-Mechanisms for Computation
or ECE3090-Software
Fundamentals for Engineering Systems
or CS2110-Computer Organization and Programming
or CS2261-Media Device Architecture.
Students must be comfortable with C-like programming.
To be widely accessible to ECE students, no background in computer
graphics will be required.
A lot of the course will use C#, but
we will not assume that you’ve seen C# before, and hence will do an
introductory lecture on C#. (If you’ve seen Java, C++, or
any other “curly-brace” language, you’ve pretty much seen them all.)

Course objective:
This class provides the multicore and GPU programming skills
needed to meet timely demands of the multimedia, visualization,
and gaming industries. The course also bridges the gap between
our current generic computer architecture courses and the video
game design courses offered by CoC and LMC.
The class covers
state-of-the-art GPU and multicore
architectures from
application and hardware design perspectives. The course considers
programming models using examples from the algorithmic needs of
modern 3-D games (e.g. geometry processing, shading algorithms,
physical modeling, collision detection, and artificial intelligence).

Note that the course does not currently cover CUDA or OpenCL; I want
to say that up front since this has disappointed students in the past.
My reasoning is that such technologies are not available on the Xbox 360
and the Playstation 3, which dominate AAA game sales figures, and
even on the PC, the market has not gotten to the point where game developers
can generally assume that there is enough of a critical mass of PCs
equipped with such technologies to make it worth putting significant
effort into developing for them. (Also, there are several other classes
at Tech that cover things like CUDA, OpenCL, etc., particularly in
a scientific computing context where they are quite useful; for this
class to stand out, I want to specifically focus on the GPU’s “native
context” of video games.)

Assignments