Concurrency and Parallelism for Game Programming – A Deep Dive (Jason Gregory - Naughty Dog)
Programme version: 1
Type of training
Face-to-faceTraining duration
7 hours (1 day)Accessibility
YesConcurrency and Parallelism for Game Programming – A Deep Dive (Jason Gregory - Naughty Dog)
Modern gaming platforms achieve their blazing speeds via highly parallelized hardware architectures: Multicore CPUs operate in tandem with GPUs containing thousands of SIMD cores. Take an in-depth guided tour through the fascinating, mysterious, and often vexing landscape of multithreading and concurrent programming on parallelized hardware within the context of high-performance real-time game programming. Join programming lead Jason Gregory of Naughty Dog for a deep dive into the intricacies of building a game that maximizes the benefits of parallel hardware. Through lectures, interactive exercises, group discussion and real-world examples, attendees will learn how to write reliable performant programs that take full advantage of multicore CPUs and the GPU. The course does a deep dive into how multithreaded synchronization works under the hood. We’ll discuss how to implement custom locks and the basics of lock-free programming. Participants will also learn how to apply their knowledge to build a job system, and how to build engine systems that fully utilize the hardware. We’ll also cover optimization via SIMD and GPU programming. The course concludes with a discussion of best practices, and how to think in a concurrent, data-oriented manner. October 13th in Bordeaux - October 15th in Paris - October 17th in Lyon Intro: Motivation, The Problem We’re Solving, Agenda I - Hardware and OS for Concurrent Programming II - Race Conditions and Locking III - Common Gotchas in Concurrent Programming IV - Under the Hood: Atomics, Custom Locks V - Concurrent Game Engines and Job Systems VI - Intro to Lock-Free Programming VII - SIMD and GPU Programming VIII - Best Practices and Thinking Concurrently
Objectives of the training
- Master Concurrent Programming Fundamentals
- Design and Implement Scalable Systems
- Optimize Code Using SIMD and GPU Programming
- Apply Best Practices and Real-World Techniques
Profile of beneficiaries
- Runtime game programmers of all specialties: Gameplay, animation, physics, rendering, audio, etc.
- Comfortable programming in C++
- Solid understanding of the basics of game programming
- (Optional) Some exposure to assembly language or CPU hardware architectures
- Masterclass in English
Training content
Hardware and OS for Concurrent Programming
- Implicit parallelism: Pipelining, superscalar
- Explicit parallelism, Flynn’s taxonomy
Race Conditions and Locking
- Semaphores, critical sections, producer/consumer models
- C++ memory ordering semantics
Common Gotchas in Concurrent Programming
- Deadlock, livelock, priority invert, starve
Under the Hood: Atomics, Custom Locks
- Atomic CPU instructions, barriers, fences
- Implementing custom locks
Concurrent Game Engines and Job Systems
- Parallel updates, feed-forward, data-oriented designs
- Building a job system
Teaching team
Monitoring of implementation and evaluation of results
- Feuilles de présence.
- Questions orales ou écrites (QCM).
- Mises en situation.
- Formulaires d'évaluation de la formation.
Technical and educational resources
- Accueil des apprenants dans une salle dédiée à la formation.
- Documents supports de formation projetés.
- Exposés théoriques
- Etude de cas concrets
- Quiz en salle
- Mise à disposition en ligne de documents supports à la suite de la formation.
Quality and satisfaction
Certification procedures
- Délivrance d'une attestation
Reception capacity
Login delay
Accessibility
Pour les entreprises qui souhaitent une prise en charge par leur OPCO, l’inscription doit être réalisée au plus tard deux semaines avant le début de la formation pour respecter les délais d’instruction des OPCO.