std::simd: How to Express Inherent Parallelism Efficiently Via Data-parallel Types
Talkat CppCon 2023 · on Monday, 2023-10-02· at 15:15· Cottonwood 2/3, 6700 North Gaylord Rockies Boulevard·
summary
C++26 std::simd gets concrete: code-level API, benchmarks, and pitfalls. Replacing float with simd<float> on AVX‑512 rises from ~0.25 to ~64 flops/cycle — about 256× speedup in the example. Image processing examples show a naive simd rewrite can slow down but a redesign to vectorized pixels or array-of-struct vs struct-of-array yields real gains. Covers execution::simd vs unsequenced/autovec, masks, reductions, permutations and gather/scatter, shows working implementations and measured results plus portability caveats.
AI-written summary · about
chapters (12)
- 0:00std::simd introduction
- 2:47SIMD and data parallelism
- 10:13std::simd class overview
- 23:18Naive SIMD performance limits
- 28:37Data parallelism models
- 35:03Non-matching SIMD sizes
- 39:08Data-parallel types
- 47:40Future of std::simd
- 51:54Q&A: Performance portability
- 55:04Q&A: Code maintenance
- 57:12Q&A: Fixed vs variable SIMD
- 1:00:03Q&A: Array of structs vs struct of arrays for SIMD
related talks
35mBuilding High Performance Search Indexes in Rust with SIMD
53mIntroduction to C++ AMP (GPGPU Computing)
52mC++ Standard Parallelism
12mDemo: Boosting AI on Semidynamics RISC-V Cores with Custom Tensor Instructions
01h 00mThe Blaze High Performance Math Library
01h 06mEfficient GPU Programming with Modern C++
25mAI Acceleration Capabilities Using MMA(Matrix Multiply...
24mMoving to RISC-V Vector: A Practical Journey of AI Operator Optimization
