Compiler Methodology for Intel® MIC Architecture
Vectorization Essentials, Vectorization and Optimization Reports, Overview of vectorization reports and new vec-report6
Existing –vec-report levels (0 to 5) controls emission of the following vectorization report messages:
- Success: “LOOP WAS VECTORIZED”
- Unsucessful: “loop was not vectorized: << few words of reason >>”
- 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 3 kinds of messages.
The version 13.0 compiler implementation added one new level of report or category. Recently added level –vec-report6 emits all 3 kinds similar to vec-report3, plus adding greater detail from the vectorizer. REVIEW THE -vec-report COMPILER OPTION
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.