Data-Parallel Vector Library
The data-parallel vector library provides data-parallel (SIMD) programming via vector types. SIMD stands for Single Instruction Multiple Data and means that one operation is performed on many data in parallel. Each modern processor architecture provides SIMD extensions, but there exists no standardised C++ interface to use them. The following table gives an overview of various SIMD extensions.
Architecture | SIMD Extension | Register Width |
---|---|---|
ARM 32 / 64 | NEON | 128 bit |
Power / PowerPC | AltiVec | 128 bit |
 | VSX | 128 bit |
x86 / AMD 64 | MMX / 3DNow | 64 bit |
 | SSE | 128 bit |
 | AVX / AVX2 / AVX-512 | 128 bit / 256 bit / 512 bit |
For example, the SSE extension allows it to add four 32 bit int
s in parallel. The effect is that it is...