Compute More in Less Time Using C++ Simd Wrapper Libraries
summary
Shows concrete C++ SIMD wrapper patterns: a pack<T,Width> abstraction, practical APIs for load/store/gather/scatter, masked stores for tails, and vectorized math (sin/cos/tan) with operator-like syntax. Uses header-only libs (examples with TSIMD and Vc, references to boost.simd) and Google Benchmark. Builds saxpy_trig (injected trig calls plus masked stores) and measures a 7–8x speedup on an AVX2 Skylake vs scalar; recommends horizontal vectorization and keeping math masked only at memory writes.
AI-written summary · about
chapters (14)
- 0:00Introduction and agenda
- 1:49Why SIMD matters now
- 5:27SIMD vs SPMD and SIMT
- 11:26SIMD wrapper libraries overview
- 13:37Core SIMD wrapper abstractions
- 23:48Memory operations with SIMD
- 28:35SIMD math functions and algorithms
- 32:06Typical SIMD usage model
- 33:11Demo: SAXPY example
- 36:02Demo: SAXPY with trigonometry
- 40:04Data layout strategies
- 47:39Horizontal vs vertical vectorization
- 51:00SIMD and GPUs relationship
- 53:52Q&A session
related talks
54mFast C++ by using SIMD Types with Generic Lambdas and Filters
24mAdvanced SIMD Algorithms in Pictures
01h 00mSIMD in C++20: EVE of a new Era
57mAdventures in SIMD-Thinking (part 1 of 2)
01h 02mSqueezing the Hardware to Make Performance Juice
43mUnlock the Power of Parallel Computing With SWAR (SIMD Within A Register)
06mLightning Talk: Use SIMD Pairwise Reduction in C++!
04mLightning Talk: How to Leverage SIMD Intrinsics for Massive Slowdowns
