Multicore and GPU Programming for Video Games
Many thanks to NVIDIA and ATI
for donating graphics cards for our Klaus 1446
laboratory
Mechanics
When and where: Fall 2009, MWF 1:35-2:55, Van Leer C456
Instructors:
Aaron Lanterman (ECE) and
Hsien-Hsin “Sean” Lee (ECE)
Old webpages:
Fall 2007,
Fall 2008
Course description: 3-D graphics pipelines. Real-time simulation
concerns. GPU architectures. Graphics APIs. Shaders. Multicore programming
on symmetric and asymmetric architectires. SIMD and DMA 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 programming.
To be widely accessible to ECE students, no background in computer
graphics will be required.
Course objective:
This class provides the multicore and GPGPU 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 LCC. The class covers state-of-the-art general purpose graphical processing unit architectures (GPGPUs) 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), as well as techniques for adapting such inexpensive architectures for potential use in scientific applications.
Grading:
Students will be expected to
undertake several projects to gain real programming experience on
the Cell processor, the Xbox 360, and NVIDIA or ATI graphics cards.
NVIDIA
and ATI have made donations of several boards to support our class projects.
The IBM Center of Competence at Georgia Tech also has generously provided
access to their Cell blade system.
There may also be a few short essay-type (around 1/2 page) questions and
“pencil and paper” exercises.
The final letter grade will be based on performance on these projects and
exercises. Various assignments may have different weights in the final grade
calculation;
these weights will be noted on each assignment.
Further information
- Important: Software
used in this class – links
to programs (SDKs, etc.)
you want to get if you want to work on your own machine (which
is strongly encouraged)
ExtremeTech 3D Pipeline Tutorial – absolutely superb!!! This goes very
well with Prof. Lee’s 3D Pipeline lectures.- Related classes
(both at GaTech and other schools) - Students Explore Video Game Programming and Architecture
in New Course – article on the class from Volume 4, Issue 4 of the
ECE Highlights newsletter - Video interview
with Aaron Lanterman about the class,
conducted by gamezombie.tv at the 2007 Game Developers Conference - Original
course proposal webpage – explains some of
our original motivations for
putting the class together (although some of what’s described will be
out of date) - Research by people in the game industry:
- Valve
Publications (including papers on shading in
Half-Life 2 and Team Fortress 2) - Insomniac
R&D – notice how deep they are into
Cell SPU assembly programming!
- Valve
GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics
(complete book online)
GPU Gems 2: Programming Techniques for High-Performance Graphics and
General-Purpose Computation (complete book online)- The Cg Tutorial (complete book online)
Assignments
None posted yet; see previous year’s websites if you want to get a sense
of what sorts of things you might be doing.- HW #1: History
(due Thursday, August 27
at start of lecture) - HW #2: “Roll Your Own” 3-D Rendering
(due Tuesday, Sept. 15 at 23:59:59 via T-square) - HW #3: Visual Studio & XNA Warm-Up
(due Thursday, Oct. 1 at start of lecture) - HW #4: Adding a Dimension
(deadline move to Wednesday, Oct. 21 at 23:59:59ish via T-square – extended
due to T-square having issues) - HW #5: Now You Are Thinking with Shaders
(deadline moved to Monday, Nov. 2 at 23:59:59 due to temporary lab computer
issues) - HW #6: Shaded First Person Shooter
(deadline moved to Tuesday, Nov. 17 at 23:59:59 via T-square; intended to
help out students who have entries in the IGF) - HW #7: Aperture Science Xbox
Multicorification Center (“7A checkpoint” due
Saturday, Nov. 21 at 23:59:59 via T-square;
“7B boss battle” due Wednesday, Nov. 25 at 17:00:00 via T-square) - HW #8: The Cell (“8A checkpoint” due
Saturday, Dec. 5 at 23:59:59 via T-square;
“8B boss battle” due Friday, Dec. 11 at 2:20 PM via T-square)
<!–
–>
Schedule
See previous year’s websites if you want to get a sense
of what sorts of things we’ll be getting into. Everything is subject change
as we work to inject additional awesomeness into the class.- 8/18: Session 1 – Introduction
(PDF slides,
PDF slides 4-up,
video)- These videos were not shown in lecture, so be sure to check them
out:
Halo 3
Documentary HD,
Ratchet and Clank (PS3) Insomniac Net-Gen Game Design Interview HD,
Ian Bogost
on The Colbert Report
- These videos were not shown in lecture, so be sure to check them
- 8/20: Session 2 – History of gaming hardware
(PDF slides,
PDF slides 4-up,
video – sorry the first part of the tape was corrupted, so I only
got the last part of it)- Videos: Intellivision TV Commercials –
Plimpton Sports,
Major League Baseball,
Star Strike;
Colecovision 1980s
Commercial;
Atari E.T. Commercial;
SEGA Commercial –
Sega vs. Nintendo (“Blast Processing”),
Genesis
Does What Nintendon’t; Insomniac’s
“Disruptor”:
gameplay,
cutscene;
Konami’s “Metal
Gear Solid”;
Rare’s
“Goldeneye 007”;
Namco’s
“Soul Calibur”
- Videos: Intellivision TV Commercials –
- 8/25: Session 3 – 3D Rendering Pipeline (I)
(PDF slides,
(PDF slides 4-up,
video) - 8/27: Session 4 – 3D Rendering Pipeline (II), Part 1
(PDF slides,
(PDF slides 4-up,
video) - 9/1: Session 5 – 3D Rendering Pipeline (II), Part 2
(video) - 9/3: Session 6 – 3D Rendering Pipeline (III), Part 1
(PDF slides, revised 9/12,
PDF slides 4-up,
revised 9/12) - 9/8: Session 7 – 3D Rendering Pipeline (III), Part 2
- 9/10: Session 8 – 3D Rendering Pipeline (III), Part 3
(video) - 9/15: Session 9 – Introduction to XNA, Game Loops, and C# Gotchas
(PDF slides,
PDF slides 4-up) - 9/17: Session 10 – Guest speaker: Jose Caban, Electronic Arts, Tiburon
- 9/24: Session 11 – A Walkthrough of an XNA 2D Game
(PDF slides,
PDF slides 4-up,
video) - 10/1: Session 12 – More XNA Basics, Part 1
(PDF slides,
PDF slides 4-up,
video to be posted) - 10/8: Session 13 – More XNA Basics, Part 2; XNA and Programmable
Shaders, Part 1
(PDF slides,
PDF slides 4-up,
video to be posted) - 10/13: Session 14 – GPUs – Under the Hood
(PDF slides,
PDF slides 4-up,
video to be posted) - 10/15: Session 15 – XNA and Programmable Shaders, Part 2
(video to be posted) - 10/20: Session 16 – Environment and Bump Mapping
(PDF slides,
PDF slides 4-up,
video) - 10/22: Session 17 – Projective Textures and Shadow Maps
(PDF slides,
PDF slides 4-up,
video to be posted)- C. Everitt,
Projective Texture Mapping - C. Everitt, A. Rege, C. Cebenoyan,
Hardware
Shadow Mapping
- C. Everitt,
- 10/27: Session 18 – Postprocessing
(PDF slides,
PDF slides 4-up,
video to be posted) - Optional Material: “Classic” GPGPU
(PDF slides,
PDF slides 4-up) - 10/29: Session 19 – Architectural Comparison: Xbox 360 vs. Playstation 3
(PDF slides,
PDF slides 4-up,
video to be posted)- Xbox
360 System Architecture,
IEEE Micro, Vol. 26, No. 2,
March-April 2006, pp. 25-37.
- Xbox
- 11/3: Session 20 – Introduction to Multithreading, Part 1
(PDF slides,
PDF slides 4-up,
video to be posted)- Bruce Dawson,
Lockless
Programming Considerations for Xbox 360 and Microsoft Windows - Bruce Dawson,
Lockless Programming in Games - Threading in C#
by Joseph Albahari (hat tip to Travis Gockel for
pointing out the link)
- Bruce Dawson,
- 11/5: Session 21 – Introduction to Multithreading, Part 2
- Optional Material: Pulse/Wait and Semaphores
(PDF slides,
PDF slides 4-up) - 11/10: Session 22 – Multicore Strategies for Games
(PDF slides,
PDF slides 4-up,
video to be posted)- Bruce Dawson,
Coding
for Multiple Cores on Xbox 360 and Microsoft Windows (the
code examples are C++, not C#, but many of the ideas still apply) - Bruce Dawson and Chuck Walbourn, PowerPoint presentation,
Coding for Multiple Cores - Blog entries by The Pensive Gamer:
XNA Game Loop
and Threading,
XNA Threading – The Problems,
XNA Threading – Locks - Catalin Zima,
Multi-threading for your XNA Game (new zip file link added 11/21/09)
- Bruce Dawson,
- 11/17: Session 23 – Introduction to Cell Programming
(Aaron’s PDF slides,
Aaron’s PDF slides 4-up,
Cell BE – An Introduction (ppt),
Cell BE Basic Programming Concepts (ppt),
video to be posted)- Cell BE
Programming Tutorial
<!–
Introduction
to the Cell multiprocessor,
IBM Journal of Research and Development, Vo. 49,
2005, pp. 589-604.
–>
Synergistic
Processing in
Cell’s Multicore Architecture, IEEE Micro, Vol. 26, No. 2, March-April
2006, pp.10-24.- The
Cell project at IBM Research
Programming
high-performance applications on the Cell BE
processor, Part 1: An introduction to Linux on the PLAYSTATION 3- The
Insomniacs: Can a team of scrappy game programmers
save Sony’s monster chip?, IEEE Spectrum, Dec. 2006, pp. 24-29. - The Potential of the Cell Processor for Scientific
Computing
- Cell BE
- 11/19: Session 24 – Cell Programming: SIMD
(Developing Code for Cell – SIMD (ppt),
Hands-on SIMD (ppt),
video to be posted) - 11/24: Session 25 – Cell Programming: DMA
(Developing Code for Cell – DMA & Mailboxes (ppt),
Hands-on DMA 1 (ppt),
Hands-on – DMA
Transfer Using get and put Buffer (pdf),
Hands-on – DMA Transfer
Using Control Block (pdf),
Developing Code for Cell – DMA,- Cell
BE Programming Handbook (see Chapter 19)
<!–
- Cell
- HW #1: History
- 12/3: Session 44 – Larrabee
PDF slides- Larabee: A Many-Core x86 Architecture for Visual Computing,
ACM Transactions on Graphics, August 28
- Larabee: A Many-Core x86 Architecture for Visual Computing,
- 12/5: Session 45 – Wrap-up–>