Designing C++ portable SIMD support
summary
Library approach that exposes CPU SIMD across x86 Power and ARM via a value-type pack abstraction, explicit loads/stores, shuffle/topology recognition and segmented ranges for prologue/epilogue handling. Implementations map to intrinsics, provide scalar fallbacks, and decorate ops (restricted patterns, reductions). Benchmarks show real gains — typical 3x on SSE4 and up to 6.9x on AVX2 for selected kernels (exponentials, fractal), with generated code close to hand-tuned. Source, docs and tests are on GitHub as Boost.SIMD.
AI-written summary · about
chapters (24)
- 0:00Introduction
- 1:00What is SIMD
- 5:58What is available
- 14:12Neon
- 16:32PC
- 19:14Intrinsic
- 20:51Pack
- 27:43Extensions
- 30:07Functions
- 31:53Shuffle
- 36:49Library
- 38:26Algorithm
- 39:44Implementation
- 41:18Specialization
- 42:48Backoverload
- 44:55Element Overload
- 45:52Chuffing
- 49:06Broadcast Identity
- 49:38Topology
- 51:58Reduce
- 53:16Random Shuffle
- 56:26Performance
- 57:51Fractal
- 58:16Code
related talks
44mFastware
01h 12mComparison of C++ Performance Optimization Techniques for C++ Programmers
01h 00mFastware
23mBeating the Benchmarks: Co-evolving the ISA and Development Tools
47mPrepping your Open Source Project for Multi-Platform
01h 03mApplied Best Practices
49mWriting better code with help from Qt and the compiler
15mKeynote: Co-Designing Software and Hardware: Pillars of Advancing RISC-V for Application Success
