The automatic vectorizer (also called the auto-vectorizer) is a component of the Intel® compiler that automatically uses SIMD instructions in the Intel® Streaming SIMD Extensions (Intel® SSE, SSE2, SSE3 and SSE4 Vectorizing Compiler and Media Accelerators), and the Supplemental Streaming SIMD Extensions (SSSE3) instruction sets, and the Intel® Advanced Vector Extension instruction set. The vectorizer detects operations in the program that can be done in parallel, and then converts the sequential operations like one SIMD instruction that processes 2, 4, 8 or up to 16 elements in parallel, depending on the data type.
Automatic vectorization is supported on IA-32 and Intel® 64 architectures.
The section discusses the following topics, among others:
High-level discussion of compiler options used to control or influence vectorization
Vectorization Key Programming Guidelines
Loop parallelization and vectorization
Descriptions of the C++ language features to control vectorization
Discussion and general guidelines on vectorization types:
automatic vectorization
vectorization with user intervention (user-mandated vectorization)
Examples demonstrating typical vectorization issues and resolutions
The compiler supports a variety of auto-vectorizing hints and user-mandated directives that can help the compiler to generate effective vector instructions.
See The Software Vectorization Handbook. Applying Multimedia Extensions for Maximum Performance, A.J.C. Bik. Intel Press, June, 2004, for a detailed discussion of how to vectorize code using the Intel® compiler. Additionally, see the Related Publications topic in this document for other resources.
Using the -vec (Linux*) or the /Qvec (Windows*) option enables vectorization at default optimization levels for both Intel® microprocessors and non-Intel microprocessors. Vectorization may call library routines that can result in additional performance gain on Intel microprocessors than on non-Intel microprocessors. The vectorization can also be affected by certain options, such as /arch or /Qx (Windows) or -m or -x (Linux and Mac OS X).
Copyright © 1996-2010, Intel Corporation. All rights reserved.