Optimizing Multithreading Performance
summary
Shows that false sharing causes severe cache-line ping‑pong (benchmarks on a 10M-element sum and row vs column scans), demonstrates fixing it with 64‑byte alignment and alignas or padding, and recommends using the standard’s hardware_destructive_interference_size and C++17 parallel execution policies (transform/reduce, parallel sort) plus async/threadpool to avoid oversubscription. Gives concrete patterns that cause the issue, perf tools to find it, and measurable before/after speedups.
AI-written summary · about
chapters (13)
- 0:00Introduction
- 1:03When to use multithreading
- 3:51Task vs data parallelism
- 7:22Multithreading overheads
- 10:17Multithreading risks
- 15:14CPU caches impact
- 21:26Cache misses and locality
- 25:38False sharing explained
- 32:04False sharing causes
- 37:51False sharing patterns
- 41:28C++ parallel algorithms
- 43:16Multithreading best practices
- 44:44Q&A
related talks
35mAlgorithmic and microarchitecture optimizations of C++ applications
01h 02mInside Visual C++' Parallel Algorithms
01h 37mAn Overview of Program Optimization Techniques
01h 04mDesign for Performance
01h 05mThink Parallel
05mMaximising Throughput & Minimising Latency in High-Performance C++ Code
01h 00mMoving Faster: Everyday efficiency in modern C++
52mWriting fast C code for a modern CPU (and applying it to PostgreSQL)
