The Asynchronous C++ Parallel Programming Model
summary
Proposes an asynchronous C++ model implemented as HPX that turns code into dependency trees via futures and continuations (when_all / co_await), uses a work‑stealing scheduler and lightweight user‑threads (~800 ns thread overhead), and exposes GPU and distributed ops as futures. Shows it running an adaptive r‑tree astrophysics code across Knights Landing hardware and NERSC resources, scaling to ~650k cores, 25% efficiency (single‑node 70 cores ≈95%), consuming ~30M CPU‑hours — a working, high‑scale system.
AI-written summary · about
chapters (20)
- 0:00Intro
- 3:04The Application Problems
- 5:55Amdahl's Law (Strong Scaling)
- 9:04The 4 Horsemen of the Apocalypse
- 12:09Real-world Problems
- 16:38Fork/Join Parallelism
- 20:31Overheads: Thought-Experiment
- 27:59The Challenges
- 29:53Proposed Solution
- 31:49The Future of Computation
- 44:21Asynchronous Channels
- 45:11Futurized 2D Stencil: Timestep i
- 47:40Asynchrony Everywhere
- 48:54One Timestep: Update Boundaries
- 50:07One Timestep: Interior
- 51:37Futurization
- 53:25HPX - A General Purpose Runtime System
- 54:32Merging White Dwarfs
- 56:53Adaptive Mesh Refinement
- 59:27The Solution to the Application Problem
related talks
23mA Haskell Auto-Parallelizer for Distributed Computing
05mDistributed Object Abstraction in HPX
35mC++ Workflow: Task-based Parallel Computing and Asynchronous Networking Engine
10mGraph Based Pipeline Parallelism
10mOn the Cloud We Can’t Wait: Asynchronous Actors Perform Even Better on the Cloud
22mAsynchronous Computing at Scale: Overview and Learning
20mAdvancing HPC The Hybrid Scheduler Approach at the D.E.Shaw Group
19mPurrrfectly parallel, purrrfectly distributed
