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.
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.
An Introduction to Vectorization with the Intel® C++ Compiler
A Guide to Vectorization with Intel® C++ Compilers
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
An Introduction to Vectorization with the Intel® Fortran Compiler
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
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