Intel Vectorization Tools

Published:05/26/2015   Last Updated:05/26/2015

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.

more cores, wider vectors

Vectorization CodeBook

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++ Compiler Getting Started Tutorials

Intel® Fortran Compiler Getting Started Tutorials

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 Essentials
Vectorization: Writing C and C++ code in VECTOR Format
Requirements for Vectorizable Loops

Documentation and Books
Intel® C++ Composer XE documentation, Includes documentation for the Intel® C++ Compiler
Vectorization Advisor-Linux* OS
Vectorization Advisor-Windows* OS

Fortran Compiler

An Introduction to Vectorization with the Intel® Fortran Compiler
Vectorization Essentials
Software Blog by "Dr. Fortran" with Steve Lionel. Dr. Fortran discusses topics of interest to Fortran developers.
Requirements for Vectorizable Loops

Documentation and Books
Intel® Fortran Composer XE documentation
Quick-Reference Guide to optimization with Intel® Compilers version 15, For IA-32 processors and Intel® 64 processors.
Vectorization Advisor-Linux* OS
Vectorization Advisor-Windows* OS

Product and Performance Information


Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804