C++ Standard Parallelism
summary
Standard C++ now offers a portable parallelism model that claims to run on CPUs, GPUs and clusters without vendor extensions, via three pillars: a corpus of ~100 parallel algorithms that dispatch to vendor libraries, a composable asynchronous model (senders and receivers) for task graphs, and a multidimensional view type (mdspan). A prototype on GitHub supports CPU, GPU and distributed schedulers, runs LULESH and a lattice‑Boltzmann app, matches other backends, and scales to 512 GPUs and to thousands of GPUs in distributed tests.
AI-written summary · about
chapters (35)
- 0:00Introduction to speaker
- 1:30The case for parallelism
- 2:35Strategy for C++ parallelism
- 3:53Parallel algorithms
- 5:07Understanding execution policies
- 6:41Parallel reduction example
- 8:26Ranges and composition
- 10:12Multi-dimensional index spaces
- 11:45Lazy algorithm composition
- 13:00Real-world applications
- 14:32Limitations of current approaches
- 15:40Senders and receivers
- 17:12Schedulers and senders
- 18:59Receivers and connection
- 20:48Composition with pipes
- 22:13Sender adapters
- 23:23Graph construction
- 25:34Sender consumers
- 26:02Under the hood
- 27:47Asynchronous inclusive scan
- 31:56Sender design challenges
- 33:40Prototype results
- 35:19Summary of sender framework
- 35:52Introduction to mdspan
- 37:34Extents and template parameters
- 39:07Mdspan indexing
- 40:15Layouts and accessors
- 41:55Portability with mdspan
- 42:56Stencil kernel example
- 44:16Future mdspan features
- 45:19Submdspan
- 47:27Tiled transpose example
- 49:06Linear algebra standard
- 50:55Linear algebra future
- 51:45Q&A
related talks
57mC++ Standard Parallelism
57mC++17 Parallel Algorithms
50mC++ Parallel Programming Models
01h 02m“Parallelism in Modern C++"
01h 10mC++17 ParallelSTL: A Standardization Experience Report for CPU and GPU on SYCL
57m“The C++17 Parallel Algorithms Library and Beyond"
01h 33mGPU programming with modern C++
01h 32mHeterogeneous Programming in C++ today
