Overview of Vectorization Reports and the -vec-report6 Option

Compiler Methodology for Intel® MIC Architecture

Overview of Vectorization Reports and the -vec-report6 Option

Note: This article applies to Intel Compiler version 14.X and earlier. With version 15.0, the four optimization report options (-opt-report, -vec-report, -openmp-report, and -par-report) have been consolidated under a single -qopt-report interface. It is strongly recommended that you read the documentation for full details. See the Intel Compiler User’s Guide for details (C++ | Fortran)..

Existing -vec-report levels (0 to 5) controls emission of the following vectorization report messages:

  1. Success: “LOOP WAS VECTORIZED”
  2. Unsucessful: “loop was not vectorized: << few words of reason >>”
  3. Reason, dependence information: “dependence from xx to yy”

The least verbose is –vec-report0 (default) which emits no messages. The most verbose is –vec-report3 which emits all three types of messages.

The version 13.0 compiler implementation added one new level of report or category. Recently added level –vec-report6 emits all three message types ,similar to vec-report3, plus adding greater detail from the vectorizer.

For example, under –vec-report3, an example output message might be “loop was not vectorized: unsupported data type”. With –vec-report6, it’ll be followed by “vectorization support: type TTT is not supported for operation OOO”. The customer can then attempt to change the data type and/or the operator.

A few sample messages. These are informational in nature, to help the programmer understand vector code behavior and/or failed vectorization attempt.

foo0.c(8): (col. 12) remark:loop was not vectorized: statement cannot be vectorized.

foo0.c(8): (col. 12) remark: vectorization support: call to function bar cannot be vectorized.

foo1.c(8): (col. 3) remark: LOOP WAS VECTORIZED
foo1.c(8): (col. 3) remark: vectorization support: unroll factor set to 4. vectorization support: unaligned access used inside loop body

vectorization support: call to function %s cannot be vectorized
vectorization support: call to function %s cannot be vectorized with given fp model
vectorization support: assignment cannot be vectorized for variable <<variable_name>>
vectorization support: unsupported reduction <<operator>>
vectorization support: vectorization of single precision division of product and converted double precision is not safe
vectorization support: scalar type occupies entire vector
vectorization support: reference %s has aligned access
vectorization support: reference %s has unaligned access
vectorization support: vectorization of this loop under -Os has impact on code size
vectorization support: %s
vectorization support: unroll factor set to %s
vectorization support: type long long is not supported as indices on given target architecture
vectorization support: type char is not supported for operation %s
vectorization support: type short is not supported for operation %s
vectorization support: type int is not supported for operation %s
vectorization support: type long long is not supported for operation %s
vectorization support: type float is not supported for operation %s
vectorization support: type double is not supported for operation %s
vectorization support: type complex float is not supported for operation %s
vectorization support: type complex double is not supported for operation %s
vectorization support: unaligned %s will be scalarized
vectorization support: conversion from int to float will be emulated
vectorization support: conversion from float to int will be emulated
vectorization support: streaming store was generated for %s

NEXT STEPS

It is essential that you read this guide from start to finish using the built-in hyperlinks to guide you along a path to a successful port and tuning of your application(s) on Intel® Xeon Phi™ coprocessor. The paths provided in this guide reflect the steps necessary to get best possible application performance.

Back to Vectorization and Optimization Reports

Einzelheiten zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.