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 provide information to the compiler, including using special build logs and features such as Intel® Cilk™ Plus.
A great place to start is by downloading the Vectorization CodeBook. You will find simple, yet powerful vectorization techniques that can be used by just about any application developer using Intel® Compilers and libraries. If you came from the Vectorization CodeBook, explore additional topics included on the right.
Download the Vectorization CodeBook >
Learning Tools
Performance essentials using OpenMP* 4.0 vectorization with C/C++
Future-Proof Your Application's Performance With Vectorization Technical Presentation, Webinar Replay
Vectorization Toolkit - This toolkit outlines 6 Steps to Increase Performance Through Vectorization in Your Application.
Intel® C++ Composer XE Getting Started Tutorials
- Windows* Getting Started C++ Tutorial
- Linux* Getting Started C++ Tutorial
- OS X* Getting Started C++ Tutorial
Intel® Fortran Composer XE Getting Started Tutorials
- Windows Getting Started Fortran Tutorial
- Linux* Getting Started Fortran Tutorial
- OS X* Getting Started Fortran Tutorial
Intel Software Product Tutorials, A complete listing of getting started tutorials and show-me videos for many Intel development products.
Intel Learning Lab, Repository of learning materials, videos, guides filterable by expertise, product, operating system and more.
Additional Reading
C++ Compiler
An Introduction to Vectorization with the Intel® C++ Compiler
A Guide to Vectorization with Intel® C++ Compilers
Vectorization with the Intel® Compilers (Part 1) Intel Developer Zone Knowledge base and search the title in the keyword search. This article offers good bibliographical references.
The Software Vectorization Handbook. Applying Multimedia Extensions for Maximum Performance,
Vectorization: Writing C and C++ code in VECTOR Format, Intel Developer Zone Knowledge base and search the title in the keyword search
Intel® Cilk™ Plus Introductory Information. Overviews, videos, getting started guide, documentation, white papers and a link to the community.
Elemental functions: Writing data parallel code in C/C++ using
Intel® Cilk™ Plus
Requirements for Vectorizable Loops
Documentation and Books
Intel® C++ Composer XE documentation, Includes documentation
for the Intel® C++ Compiler.
The Software Optimization Cookbook, Second Edition, High-Performance Recipes for IA-32 Platforms.
Fortran Compiler
An Introduction to Vectorization with the Intel® Fortran Compiler
Vectorization with the Intel® Compilers (Part 1). This article offers good bibliographical references.
Software Blog by "Dr. Fortran" with Steve Lionel. Dr. Fortran discusses topics of interest to Fortran developers.
The Software Vectorization Handbook. Applying Multimedia Extensions for Maximum Performance. A detailed discussion of how to vectorize code using the Intel® compiler.
Requirements for Vectorizable Loops
Documentation and Books
Intel® Fortran Composer XE documentation
Quick-Reference Guide to Optimization with Intel® Compilers version 12, For IA-32 processors and Intel® 64 processors.
The Software Vectorization Handbook, Applying Multimedia Extensions for Maximum Performance.
The Software Optimization Cookbook, Second Edition, High-Performance Recipes for IA-32 Platforms.