Vectorization

The vectorizer speeds up your code by automatically generating Single-Instruction Multiple-Data (SIMD) code for qualifying loops. These SIMD instructions can be found on processors employing Intel® MMX™ technology, Streaming SIMD Extensions (SSE), and the Pentium® 4 processor's Streaming SIMD Extensions 2 (SSE2) and Streaming SIMD Extensions 3 (SSE3).

The vectorizer can also use the Short Vector Math library.

For a detailed discussion of MMX technology, SSE and SSE2, see the following pages at the Intel® Software College:

The following book, available from Intel Press, includes information on vectorization, including information on SSE3:

The Software Vectorization Handbook: Applying Intel® Multimedia Extensions for Maximum Performance

In order to take advantage of the vectorizer, a loop must meet the following criteria:

  • iteration independence
  • memory disambiguation—All memory references within the loop are unique.
  • high loop count

To enable the vectorizer, use the following options (shown previously):

For detailed information on the vectorizer, see the tutorial Optimizing Performance Using Intel's Vectorizing Compilers at the Intel® Software College.