SIMD¶
Category: Parallelism · Status: stub
One line: One CPU instruction applied to several numbers at once: parallelism inside a single core.
Also called: vectorization, single instruction, multiple data.
How it connects¶
flowchart LR
n_data_parallelism["Data parallelism"]
n_simd["SIMD"]
n_simd -->|is a| n_data_parallelism
classDef center stroke-width:3px
class n_simd center
classDef outside stroke-dasharray: 4 3
class n_data_parallelism outside
- Is a kind of: Data parallelism
In each language¶
| Rust | Platform intrinsics in std::arch ↗; the portable std::simd ↗ is nightly-only |
| C++ | std::simd ↗ in C++26, after std::experimental::simd ↗ |
| Java | The Vector API ↗, still an incubator module in JDK 25 |
| C# | Vector<T> ↗, which supports hardware acceleration, and the instruction-set register types of System.Runtime.Intrinsics ↗ |
| Swift | SIMD ↗ vector types such as SIMD4<Float> in the standard library |
Where to read more¶
- In the books: Modern Parallel Programming with C++ and Assembly Language, Daniel Kusswurm — ch. 1, 'SIMD Fundamentals'
- In the books: Pro TBB, Michael Voss, Rafael Asenjo, James Reinders — ch. 4, 'TBB and the Parallel Algorithms of the C++ Standard Template Library' → 'Other Ways to Introduce SIMD Parallelism'
- In the books: Data Parallel C++, James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian — ch. 16, 'Programming for CPUs' → 'The Basics of SIMD Hardware'
- In the books: Parallel Programming with Intel Parallel Studio XE, Stephen Blair-Chappell, Andrew Stokes — ch. 4, 'Producing Optimized Code' → 'More on Auto-Vectorization'
- Reference: Wikipedia: Single instruction, multiple data ↗