Overview of Parallel Programming in C++
summary
Covers concrete claims, tools and costs: multicore is necessary as clock speeds stall, typical phones have 2–4 cores, laptops 4–8, servers dozens, a Zeon E7 tops out at 15 cores and a Zeon 5 at 57 to 61 cores; demonstrates C++ models like Cilk Plus, TBB, OpenMP and compares std::async; shows worked examples (recursive fib, quicksort, parallel_for), explains reducers and task_region work toward a TS, and measures costs (atomics ~20 cycles, 64‑byte cache lines causing false sharing). Practical fixes—coarsening, divide‑and‑conquer, reductions—are shown and evaluated.
AI-written summary · about
chapters (19)
- 0:00Intro
- 1:13What is parallelism?
- 4:12Vendor solution: Multicore
- 6:12Concurrency and parallelism: They're not the same thing!
- 6:59Sports analogy
- 9:27Parallelism is a graph-theoretical property of the algorithm
- 12:03Types of parallelism
- 15:52The world's worst Fibonacci algorithm
- 19:56Parallelism Libraries: TBB and PPL
- 23:41Parallelism pragmas: OpenMP
- 26:25Parallel language extensions
- 28:24Future C++ standard library for parallelism
- 40:05Mitigating data races: Mutexes and atomics
- 41:28Mitigating data races: Reduction operations
- 46:09Avoiding data races: Divide into disjoint data sets
- 53:28Performance problem: False sharing
- 55:03Avoiding false sharing
- 58:19Performance bug Insufficient parallelism
- 59:14Performance bug: Insufficient parallelism
related talks
59mC++ on its way to exascale and beyond
01h 03mThe Landscape of Parallelism
44mStories from a parallel universe
48mConsiderations for choosing the parallel computing strategy
59mParallel Programming in Rust: Techniques for Blazing Speed
05mFast Parallel Programming using Modern C++
01h 06mTrue parallelism, with no concept of threads
37mC++ for multi-accelerator, multi-vendor systems
