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

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.