Vectorization, the Other Parallelism Moore's Law correctly
predicted that processor transistor density would increase year
after year. All those extra transistors have been used to make
powerful hardware capabilities like multiple cores and hardware
extensions that improve performance. Intel processors have
extensions that support SIMD (single instruction, multiple data)
parallelism with Intel® SSE and Intel® AVX(2). These
instructions operate on a vector of data in parallel. The vector
width, and therefore the number of elements that can be accessed
in parallel, continues to expand as new processor technologies
are introduced. Applications need to be vectorized to take
advantage of SIMD instructions that utilize the expanded vector
width. There are some pretty easy ways to vectorize your code
like autovectorization. This requires no changes to code. Next
are using libraries that utilize both threading and
vectorization to improve performance. For some applications,
more advanced techniques may be needed to p