Multicore and GPU Programming for Video Games

Multicore and GPU Programming for Video Games
<!– –>

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/31: Session 6 – 3D Rendering Pipeline (II)
    (PPT slides updated on 9/10,
    video), Day 1

  • 9/3: Labor Day
  • 9/5: Session 7 – 3D Rendering Pipeline (II), Day 2
    (video)

  • 9/7: Session 8 – 3D Rendering Pipeline (III), Day 1
    (PPT slides,
    video)

  • 9/10: Session 9 – 3D Rendering Pipeline (III), Day 2
    (video)

  • 9/12: Session 10 – Direct3D Basics (I), Day 1
    (PPT slides
    updated on 9/15;

  • 9/14: Session 11 – Direct3D Basics (I), Day 2
    (video)

  • 9/17: Session 12 – Direct3D Basics (II), Day 1
    (PPT slides,
    video)

  • 9/19: Session 13 – GPU Architecture
    (PDF slides,
    PDF slides 4-up,
    video)

  • 9/21: Session 14 – Guest speaker: Jose Caban, Software Engineer
    (Tiger Woods PGA Golf), Electronic Arts Tiburon

  • 9/24: Session 15 – Direct3D Basics (II), Day 2
  • 9/26: Session 16 – Architectural Overview: Xbox 360 vs. Playstation 3
    (PDF slides,
    PDF slides 4-up,
    video)

  • 9/28: Session 17 – Programmable Shaders, Day 1
    (PPT slides,
    video)

  • 10/1: Session 18 – Programmable Shaders, Day 2
    (video)

  • 10/3: Session 19 – Environment and Bump Mapping
    (PDF slides,
    PDF slides 4-up,
    video)

    • The Cg Tutorial – This
      class has no required texts,
      but this is a good introduction to shader coding and typical tricks, and
      formed the basis of a lot of the lecture slides. (It is a bit short
      on info on hooking your Cg code into the main 3D API; you’ll need to
      look elsewhere for that.)

    • The
      Cg Tutorial resources from the NVIDIA website

      you can download the Cg Toolkit and the example code from the text here. It’s
      fairly easy to install and run the examples.
      All of the code shown in lecture was from The Cg Tutorial.
  • 10/5: Session 20 – Projective Textures and Shadow Maps
    (PDF slides,
    PDF slides 4-up,
    video)

  • 10/8: Fall break
  • 10/10: Session 21 – Phong vs. Gouraud Shading; C# Gotchas
    (PDF slides,
    PDF slides 4-up,
    video)

  • 10/12: Session 22 – Introduction to Multithreading
    (PDF slides,
    PDF slides 4-up,
    video)

  • 10/15: Session 23 – Multicore Strategies for Games
    (PDF slides,
    PDF slides 4-up,
    video)

  • 10/17: Session 24 – More on Multithreading
    (PDF slides,
    PDF slides 4-up,
    video)

  • 10/19: Session 25 – Introduction to XNA
    (PDF slides,
    PDF slides 4-up,
    video)

  • 10/22: Session 26 – Xbox 360 Deployment, Debugging, and Profiling
    (video)

  • 10/24: Session 27 – Collision detection: convex objects
    (video)

  • 10/26: Session 28 – Collision detection: line with triangle
    (video)

  • 10/29: Session 29 – Rigid Body Physics, Part 1
    (video;
    supplemental material on quaterions:
    PDF slides,
    PDF slides 4-up)

  • 10/31: Session 30 – Rigid Body Physics, Part 2
    (video)

  • 11/2: Session 31 – Animation
    (PDF slides,
    PDF slides 4-up,
    video)

  • Note: The Cell/B.E. lectures below are based on slides presented
    by Hema Reddy of IBM at the
    One-Day IBM Cell Programming Workshop at Georgia Tech held
    2/6/2007.

  • 11/5: Session 32 – Cell/B.E. Introduction: Architecture
    (PDF slides,
    video)

  • 11/7: Session 33 – Cell/B.E. Introduction: Software Development
    (PDF slides,
    video)

  • 11/9: Session 34 – Cell/B.E. Hands-On – The Hello World Program
    (PDF slides,
    video)

  • 11/12: Session 35 – Postprocessing in XNA
    (PDF slides,
    PDF slides 4-up,
    video)

  • 11/14: Session 36 – “Classic” GPGPU
    (PDF slides,
    PDF slides 4-up,
    video)

  • 11/16: Session 37 – Introduction to CUDA
    (video)

  • 11/19: Session 38 – Cell/B.E. Programming: DMA
    (PDF slides,
    video)

  • 11/26: Session 39 – Cell/B.E. Programming: SIMD
    (PDF slides,
    video)

  • 11/28: Session 40 – Cell/B.E. Programming Tips & Techniques
    (PPT slides,
    video)

  • 11/30: Session 41 – Cell/B.E. Programming Models
    (PPT slides,
    video)

  • 12/3: Session 42 – Playstation 2 Architecture
    (PDF slides,
    PDF slides 4-up,
    video)

  • 12/5: Session 43 – Guest Speaker: Stephen Chenney, Emergent
    Game Technologies

  • 12/7: In-class closed-book closed-notes written job interview
    simulation

    –>