C++ SIMD parallelism with Intel Cilk Plus and OpenMP 4.0
summary
Shows concrete, compiler-level ways to force SIMD: use pragma omp simd or Intel Cilk Plus pragma simd / array notation to generate scalar + vector kernels, specify simdlen/safe_len (example uses simdlen 16 for AVX and safe_len 32), and declare alignment/aliasing to unblock vectorization. Demonstrations compile with GCC 4.9 (OpenMP4 simd) and Intel compilers, produce vectorized code and reports, and highlight that alignment, pointer aliasing, and control flow determine whether vectorization actually works.
AI-written summary · about
chapters (13)
- 0:00Start
- 2:49Parallelism
- 5:59Evolution of SIMD for Intel Processors
- 8:15SIMD Types for Intel® Architecture
- 10:28Many Ways to Vectorize
- 13:59SIMD via Compiler vs. Library
- 18:56Stumbling Stones for Vectorization
- 24:07Reference Example
- 44:14SIMD-Enabled Functions Syntax
- 47:40SIMD-Enabled Functions: Invocation
- 49:09Array Notation Extension: Syntax
- 53:32Array Notation Extension: Operators
- 54:58Array Notation Extension: Reductions
related talks
53mAsync sequences and algorithms to compose them
13mDemo: RISC-V as an Enabler of Heterogeneous Compute
01h 04mThe Magic Behind Optimizing Compilers: Static Program Analysis
01h 03mWhat I Talk About When I Talk About Cross Platform Development
01h 05mThe Imperatives Must Go!
01h 00mBack to Basics: (Range) Algorithms in C++
01h 04mA Pattern Language for Expressing Concurrency in Cpp
01h 00mC++ Mythbusters
