Multicore and GPU Programming for Video Games
Many thanks to our sponsors!
When and where: Fall 2008, MWF 1:05-1:55, Van Leer C241
Instructors:
Aaron Lanterman (ECE) and
Hsien-Hsin "Sean" Lee (ECE)
Webpage for the Fall 2007
offering of the course
Prereqs:
ECE3035: Mechanisms for Computation or CS2110: Computer Organization
and Programming. 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 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 the College of Computing.
The class covers two major aspects. We will first discuss
state-of-the-art GPU
architectures and
multicore architectures from application and
hardware design perspectives. We then also consider
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
inexpensive GPU and multicore architectures for potential use in scientific
applications.
Projects:
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.
The final letter grade will be based on performance on these projects.
Further information
Assignments
Schedule
- 8/18: Session 1 - Introduction
(PDF slides, PDF slides 4-up,
video)
- 8/22: Session 2 - History of gaming hardware: the 2-D era
(PDF slides, PDF slides 4-up, video)
- 8/24: Session 3 - History of gaming hardware: the 3-D era
(PDF slides,
PDF slides 4-up, video)
- 8/25: Session 4 - 3D Rendering Pipeline (I), Day 1
(PDF slides,
PDF slides 4-up,
video)
- 8/27: Session 5 - 3D Rendering Pipeline (I), Day 2
(video)
- 8/29: Session 6 - 3D Rendering Pipeline (II), Day 1
(PDF slides,
PDF slides 4-up,
sorry, no video)
- 9/3: Session 7 - 3D Rendering Pipeline (II), Day 2;
(video)
- 9/5: Session 8 - 3D Rendering Pipeline (II), Day 3;
3D Rendering Pipeline (III), Day 1
(PDF slides,
PDF slides 4-up,
video)
- 9/8: Session 9 - 3D Rendering Pipeline (III), Day 2
(video)
- 9/10: Session 10 - 3D Rendering Pipeline (III), Day 3
(video)
- 9/12: Session 11 - Introduction to XNA Game Studio
(PDF slides,
PDF slides 4-up,
video)
- 9/15: Session 12 - Game Loops & XNA Content Pipeline
(PDF slides,
PDF slides 4-up,
video)
- 9/17: Session 13 - Drawing Models & Primitives with BasicEffect
(PDF slides,
PDF slides 4-up,
video)
- 9/19: Session 14 - Guest Speaker: Jose Caban (Software Engineer,
Electronic Arts Tiberon) - Making the Tiger Woods Golf Engine
Truly Multi-Threaded (PDF
slides 4-up)
- 9/22: Session 15 - A Walkthrough of an XNA 2D game
(PDF slides,
PDF slides 4-up,
video)
- 9/24: Session 16 - More XNA Basics, Part 1
(PDF slides,
PDF slides 4-up,
video)
- 9/26: Session 17 - More XNA Basics, Part 2
(video)
- 9/29: Session 18 - XNA and Programmable Shaders, Part 1
(PDF slides,
PDF slides 4-up,
video)
- 10/1: Session 19 - XNA and Programmable Shaders, Part 2
(video)
- 10/3: Session 20 - XNA and Programmable Shaders, Part 3 (sorry no video)
- 10/6: Session 21 - Environment and Bump Mapping, Part 1
(PDF slides,
PDF slides 4-up,
video)
- 10/8: Session 22 - Environment and Bump Mapping, Part 2
(video)
- 10/10: Session 23 - Projective Textures and Shadow Maps
(PDF slides,
PDF slides 4-up,
video)
- 10/15: Session 24 - Postprocessing
(PDF slides,
PDF slides 4-up,
video)
- 10/17: Session 25 - "Classic" GPGPU
(PDF slides,
PDF slides 4-up,
video)
- 10/20: Session 26 - GPUs - Under the Hood
(PDF slides,
PDF slides 4-up,
video)
- 10/22: Session 27 - Architectural Comparison: Xbox 360 vs. Playstation 3
(PDF slides,
PDF slides 4-up,
video)
- 10/24: Session 28 - Introduction to Multithreading, Part 1
(PDF slides,
PDF slides 4-up,
video)
- Threading in C#
by Joseph Albahari (hat tip to Travis Gockel for
pointing out the link)
- 10/27: Session 29 - Introduction to Multithreading, Part 2
(video)
- 10/29: Session 30 - Introduction to Multithreading, Part 3
(sorry I forgot the video camera that day)
- 10/31: Session 31 - Multicore Strategies for Games, Part 1
(PDF slides,
PDF slides 4-up,
video)
- 11/3: Session 32 - Multicore Strategies for Games, Part 2
(video to be posted)
- 11/5: Session 33 - Xbox 360 Deployment
(PDF slides,
PDF slides 4-up,
video)
- 11/7: Session 34 - Xbox 360 Debugging & Monitoring
(PDF slides,
PDF slides 4-up,
video)
- 11/10: Session 35 - Playstation 2 Architecture
(PDF slides,
PDF slides 4-up,
video)
- 11/12: Session 36 - Hello Cell
(PDF slides,
PDF slides 4-up,
video to be posted)
-
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
- 11/14: Session 37 - Asynchronous Hello Cell
(PDF slides,
PDF slides 4-up,
video to be posted)
- 11/17: Session 38 - Cell Programming Concepts
(Cell BE - An Introduction (ppt),
Cell BE Basic Programming Concepts (ppt),
video)
- 11/19: Session 39 - Cell SIMD, Part 1
(Developing Code for Cell - SIMD (ppt),
Hands-on SIMD (ppt),
video)
- 11/21: Session 40 - Cell SIMD, Part 2
(video)
- 11/24: Session 41 - Guest Speaker: Ben Wallace, Bungie
- 11/26: Session 42 - Cell DMA, Part 1
(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,
video)
- 12/1: Session 43 - Cell DMA, Part 2
(video)
- 12/3: Session 44 - Larrabee
PDF slides
- 12/5: Session 45 - Wrap-up