How to Correlate vec-report Line Numbers with Source Line Numbers

Compiler Methodology for Intel® MIC Architecture

How to correlate line-numbers in vec-report with source line numbers

Here is a working example that we will use to provide some tips on correlating source line numbers with line-numbers in vec-reports.  Note that his example is in C.  However the following also applies to Fortran.  Also this sample is applicable to the Intel® Compilers for both Intel® Xeon® processors and Intel® Xeon Phi™ Coprocessors:

% cat -n t1.c

1 #include <stdio.h>
2
3 void foo1(float *a, float *b, float *c, int n)
4 {
5 int i;
6 for (i=0; i<n; i++) {
7 a[i] *= b[i] + c[i];
8 }
9 }
10
11 void foo2(float *a, float *b, float *c, int n)
12 {
13 int i;
14 for (i=0; i<n; i++) {
15 a[i] *= b[i] - c[i];
16 }
17 }
18
19 void composite(float *a, float *b, float *c, int n)
20 {
21 if (n > 1000) {
22 foo1(a, b, c, n);
23 }
24 else {
25 foo2(a, b, c, n);
26 }
27 }

% icc -mmic -vec-report2 t1.c -c
t1.c(6): (col. 3) remark: LOOP WAS VECTORIZED.
t1.c(6): (col. 3) remark: loop skipped: multiversioned.
t1.c(14): (col. 3) remark: LOOP WAS VECTORIZED.
t1.c(14): (col. 3) remark: loop skipped: multiversioned.
t1.c(22): (col. 5) remark: LOOP WAS VECTORIZED.
t1.c(22): (col. 5) remark: loop skipped: multiversioned.
t1.c(25): (col. 5) remark: LOOP WAS VECTORIZED.
t1.c(25): (col. 5) remark: loop skipped: multiversioned.


  • The source-file above has 3 functions, and the order in which these functions are compiled (and laid out in the executable) are based on compiler heuristics.

  • Functions can get inlined by the compiler, and the way in which the inlined loop gets optimized (vectorized) may differ from the original loop inside the function. The inlining behavior can also change based on compiler options. Note that single-file-based inlining optimization is enabled by default at -O2. Inlining across multiple files requires -ipo option.

  • In some cases, after inlining, the compiler can prove that there is no need to retain the original function-body and may decide to do dead-code-elimination of the function.

  • In the compilation above, we see 4 VECTORIZED loop-messages. These correspond to lines 6 (loop inside foo1, there may be calls to foo1 from a different file), lines 14 (loop inside foo2, there may be calls to foo1 from a different file), call to foo1 inlined in line 22 has a loop, call to foo2 inlined in line 25 has a loop.

  • While doing performance analysis, it is very important to understand which version of the loop gets executed at runtime - for example, if the function composite is a hotspot above, then the lines (for vectorization purposes) most important are lines 22 and 25 that have the inlined bodies.

  • By default, compiler uses the line-number of the call-site for all loops inside the inlined-portion. So if the function foo1 had multiple loops, all of them will appear to have line number 22 (after inlining) in the vec-report in the default mode.
  • You can add the option "-debug inline-debug-info" to use line-numbers of the callee in the reporting messages. For example, with this option added, the vec-report changes as follows:
% icc -mmic -vec-report2 t1.c -c -debug inline-debug-info -O2
    t1.c(6): (col. 3) remark: LOOP WAS VECTORIZED.
    t1.c(6): (col. 3) remark: loop skipped: multiversioned.
    t1.c(14): (col. 3) remark: LOOP WAS VECTORIZED.
    t1.c(14): (col. 3) remark: loop skipped: multiversioned.
    t1.c(6): (col. 3) remark: LOOP WAS VECTORIZED.
    t1.c(6): (col. 3) remark: loop skipped: multiversioned.
    t1.c(14): (col. 3) remark: LOOP WAS VECTORIZED.
    t1.c(14): (col. 3) remark: loop skipped: multiversioned.

  • Note that the -debug option assumes -O0 by default, so you have to explicitly add -O2 to the command-line above to retain the same optimization level as in the first compilation above.

  • The line numbers for the inlined loops change to lines 6 and 14 corresponding to the actual line-numbers of the loops inside the callees.
  • You can get more details on the loop-optimizations on a function-by-function basis if you add the "-opt-report-phase hlo -opt-report 3" options. This typically makes it easier to analyze function hotspots - you can jump directly to the optimization report corresponding to the functions you are interested in (each function gets a unique header in the full report below) and look at the vec-reports for all loops inside that function:

% icc -mmic -vec-report2 t1.c -c -O2 -opt-report-phase hlo -opt-report 3

HLO REPORT LOG OPENED ON Tue May 8 15:41:27 2012


<t1.c;-1:-1;hlo;foo1;0>
High Level Optimizer Report (foo1)
QLOOPS 1/1/0 ENODE LOOPS 1 unknown 0 multi_exit_do 0 do 1 linear_do 1 lite_throttled 0
LINEAR HLO EXPRESSIONS: 12 / 12
------------------------------------------------------------------------------
t1.c(6): (col. 3) remark: LOOP WAS VECTORIZED.
t1.c(6): (col. 3) remark: loop skipped: multiversioned.
Total #of lines prefetched in foo1 for loop at line 6=12
# of initial-value prefetches in foo1 for loop at line 6=6
# of dynamic_mapped_array prefetches in foo1 for loop at line 6=12, dist=8
Total #of lines prefetched in foo1 for loop at line 6=12
# of initial-value prefetches in foo1 for loop at line 6=6
# of dynamic_mapped_array prefetches in foo1 for loop at line 6=12, dist=8
Total #of lines prefetched in foo1 for loop at line 6=6
# of initial-value prefetches in foo1 for loop at line 6=6
# of dynamic_mapped_array prefetches in foo1 for loop at line 6=6, dist=16
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 7

Loop dual-path report:

<t1.c;6:6;hlo;foo1;0>
Loop at 6 -- selected for multiversion - DD


<t1.c;-1:-1;hlo;foo2;0>
High Level Optimizer Report (foo2)
QLOOPS 1/1/0 ENODE LOOPS 1 unknown 0 multi_exit_do 0 do 1 linear_do 1 lite_throttled 0
LINEAR HLO EXPRESSIONS: 12 / 12
------------------------------------------------------------------------------
t1.c(14): (col. 3) remark: LOOP WAS VECTORIZED.
t1.c(14): (col. 3) remark: loop skipped: multiversioned.
Total #of lines prefetched in foo2 for loop at line 14=12
# of initial-value prefetches in foo2 for loop at line 14=6
# of dynamic_mapped_array prefetches in foo2 for loop at line 14=12, dist=8
Total #of lines prefetched in foo2 for loop at line 14=12
# of initial-value prefetches in foo2 for loop at line 14=6
# of dynamic_mapped_array prefetches in foo2 for loop at line 14=12, dist=8
Total #of lines prefetched in foo2 for loop at line 14=6
# of initial-value prefetches in foo2 for loop at line 14=6
# of dynamic_mapped_array prefetches in foo2 for loop at line 14=6, dist=16
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 15

Loop dual-path report:

<t1.c;14:14;hlo;foo2;0>
Loop at 14 -- selected for multiversion - DD


<t1.c;-1:-1;hlo;composite;0>
High Level Optimizer Report (composite)
QLOOPS 2/2/0 ENODE LOOPS 2 unknown 0 multi_exit_do 0 do 2 linear_do 2 lite_throttled 0
LINEAR HLO EXPRESSIONS: 24 / 24
------------------------------------------------------------------------------
t1.c(22): (col. 5) remark: LOOP WAS VECTORIZED.
t1.c(22): (col. 5) remark: loop skipped: multiversioned.
t1.c(25): (col. 5) remark: LOOP WAS VECTORIZED.
t1.c(25): (col. 5) remark: loop skipped: multiversioned.
Total #of lines prefetched in composite for loop at line 22=12
# of initial-value prefetches in composite for loop at line 22=6
# of dynamic_mapped_array prefetches in composite for loop at line 22=12, dist=8
Total #of lines prefetched in composite for loop at line 22=12
# of initial-value prefetches in composite for loop at line 22=6
# of dynamic_mapped_array prefetches in composite for loop at line 22=12, dist=8
Total #of lines prefetched in composite for loop at line 22=6
# of initial-value prefetches in composite for loop at line 22=6
# of dynamic_mapped_array prefetches in composite for loop at line 22=6, dist=16
Total #of lines prefetched in composite for loop at line 25=12
# of initial-value prefetches in composite for loop at line 25=6
# of dynamic_mapped_array prefetches in composite for loop at line 25=12, dist=8
Total #of lines prefetched in composite for loop at line 25=12
# of initial-value prefetches in composite for loop at line 25=6
# of dynamic_mapped_array prefetches in composite for loop at line 25=12, dist=8
Total #of lines prefetched in composite for loop at line 25=6
# of initial-value prefetches in composite for loop at line 25=6
# of dynamic_mapped_array prefetches in composite for loop at line 25=6, dist=16
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 25

Loop dual-path report:

<t1.c;22:22;hlo;composite;0>
Loop at 22 -- selected for multiversion - DD

<t1.c;25:25;hlo;composite;0>
Loop at 25 -- selected for multiversion - DD

  • Typically loops inside a function will get processed from beginning to end in linear order by the compiler, but this is not always guaranteed - Compiler may perform optimizations that rearrange code based on the control-flow graph, and the loops may get processed (and reported) by the compiler in non-sequential manner. But you should be able to find one vec-message per every instance of a loop if you use -vec-report2 or -vec-report3.

  • Openmp (-openmp) and auto-parallelization (-parallel) may cause compiler to generate even more versions of the loops, and lead to more vec-messages for each line. For example:

% icc -mmic -vec-report2 -par-report2 t1.c -c -O2 -parallel -par-threshold0 -opt-report-phase hlo -opt-report 3
procedure: foo1

HLO REPORT LOG OPENED ON Tue May 8 15:50:52 2012


<t1.c;-1:-1;hlo;foo1;0>
High Level Optimizer Report (foo1)
QLOOPS 1/1/0 ENODE LOOPS 1 unknown 0 multi_exit_do 0 do 1 linear_do 1 lite_throttled 0
LINEAR HLO EXPRESSIONS: 12 / 12
------------------------------------------------------------------------------
t1.c(6): (col. 3) remark: LOOP WAS AUTO-PARALLELIZED.
t1.c(6): (col. 3) remark: loop was not parallelized: existence of parallel dependence.
t1.c(6): (col. 3) remark: LOOP WAS VECTORIZED.
t1.c(6): (col. 3) remark: loop skipped: multiversioned.
t1.c(6): (col. 3) remark: LOOP WAS VECTORIZED.
Total #of lines prefetched in foo1 for loop at line 6=12
# of initial-value prefetches in foo1 for loop at line 6=6
# of dynamic_mapped_array prefetches in foo1 for loop at line 6=12, dist=8
Total #of lines prefetched in foo1 for loop at line 6=12
# of initial-value prefetches in foo1 for loop at line 6=6
# of dynamic_mapped_array prefetches in foo1 for loop at line 6=12, dist=8
Total #of lines prefetched in foo1 for loop at line 6=6
# of initial-value prefetches in foo1 for loop at line 6=6
# of dynamic_mapped_array prefetches in foo1 for loop at line 6=6, dist=16
Total #of lines prefetched in foo1 for loop at line 6=12
# of initial-value prefetches in foo1 for loop at line 6=6
# of dynamic_mapped_array prefetches in foo1 for loop at line 6=12, dist=8
Total #of lines prefetched in foo1 for loop at line 6=12
# of initial-value prefetches in foo1 for loop at line 6=6
# of dynamic_mapped_array prefetches in foo1 for loop at line 6=12, dist=8
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 7

Loop dual-path report:

<t1.c;6:6;hlo;foo1;0>
Loop at 6 -- selected for multiversion - DD
procedure: foo2


<t1.c;-1:-1;hlo;foo2;0>
High Level Optimizer Report (foo2)
QLOOPS 1/1/0 ENODE LOOPS 1 unknown 0 multi_exit_do 0 do 1 linear_do 1 lite_throttled 0
LINEAR HLO EXPRESSIONS: 12 / 12
------------------------------------------------------------------------------
t1.c(14): (col. 3) remark: LOOP WAS AUTO-PARALLELIZED.
t1.c(14): (col. 3) remark: loop was not parallelized: existence of parallel dependence.
t1.c(14): (col. 3) remark: LOOP WAS VECTORIZED.
t1.c(14): (col. 3) remark: loop skipped: multiversioned.
t1.c(14): (col. 3) remark: LOOP WAS VECTORIZED.
Total #of lines prefetched in foo2 for loop at line 14=12
# of initial-value prefetches in foo2 for loop at line 14=6
# of dynamic_mapped_array prefetches in foo2 for loop at line 14=12, dist=8
Total #of lines prefetched in foo2 for loop at line 14=12
# of initial-value prefetches in foo2 for loop at line 14=6
# of dynamic_mapped_array prefetches in foo2 for loop at line 14=12, dist=8
Total #of lines prefetched in foo2 for loop at line 14=6
# of initial-value prefetches in foo2 for loop at line 14=6
# of dynamic_mapped_array prefetches in foo2 for loop at line 14=6, dist=16
Total #of lines prefetched in foo2 for loop at line 14=12
# of initial-value prefetches in foo2 for loop at line 14=6
# of dynamic_mapped_array prefetches in foo2 for loop at line 14=12, dist=8
Total #of lines prefetched in foo2 for loop at line 14=12
# of initial-value prefetches in foo2 for loop at line 14=6
# of dynamic_mapped_array prefetches in foo2 for loop at line 14=12, dist=8
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 15

Loop dual-path report:

<t1.c;14:14;hlo;foo2;0>
Loop at 14 -- selected for multiversion - DD
procedure: composite

<t1.c;-1:-1;hlo;composite;0>
High Level Optimizer Report (composite)
QLOOPS 2/2/0 ENODE LOOPS 2 unknown 0 multi_exit_do 0 do 2 linear_do 2 lite_throttled 0
LINEAR HLO EXPRESSIONS: 24 / 24
------------------------------------------------------------------------------
t1.c(22): (col. 5) remark: LOOP WAS AUTO-PARALLELIZED.
t1.c(22): (col. 5) remark: loop was not parallelized: existence of parallel dependence.
t1.c(25): (col. 5) remark: LOOP WAS AUTO-PARALLELIZED.
t1.c(25): (col. 5) remark: loop was not parallelized: existence of parallel dependence.
t1.c(22): (col. 5) remark: LOOP WAS VECTORIZED.
t1.c(22): (col. 5) remark: loop skipped: multiversioned.
t1.c(25): (col. 5) remark: LOOP WAS VECTORIZED.
t1.c(25): (col. 5) remark: loop skipped: multiversioned.
t1.c(22): (col. 5) remark: LOOP WAS VECTORIZED.
t1.c(25): (col. 5) remark: LOOP WAS VECTORIZED.
Total #of lines prefetched in composite for loop at line 22=12
# of initial-value prefetches in composite for loop at line 22=6
# of dynamic_mapped_array prefetches in composite for loop at line 22=12, dist=8
Total #of lines prefetched in composite for loop at line 22=12
# of initial-value prefetches in composite for loop at line 22=6
# of dynamic_mapped_array prefetches in composite for loop at line 22=12, dist=8
Total #of lines prefetched in composite for loop at line 22=6
# of initial-value prefetches in composite for loop at line 22=6
# of dynamic_mapped_array prefetches in composite for loop at line 22=6, dist=16
Total #of lines prefetched in composite for loop at line 25=12
# of initial-value prefetches in composite for loop at line 25=6
# of dynamic_mapped_array prefetches in composite for loop at line 25=12, dist=8
Total #of lines prefetched in composite for loop at line 25=12
# of initial-value prefetches in composite for loop at line 25=6
# of dynamic_mapped_array prefetches in composite for loop at line 25=12, dist=8
Total #of lines prefetched in composite for loop at line 25=6
# of initial-value prefetches in composite for loop at line 25=6
# of dynamic_mapped_array prefetches in composite for loop at line 25=6, dist=16
Total #of lines prefetched in composite for loop at line 22=12
# of initial-value prefetches in composite for loop at line 22=6
# of dynamic_mapped_array prefetches in composite for loop at line 22=12, dist=8
Total #of lines prefetched in composite for loop at line 22=12
# of initial-value prefetches in composite for loop at line 22=6
# of dynamic_mapped_array prefetches in composite for loop at line 22=12, dist=8
Total #of lines prefetched in composite for loop at line 25=12
# of initial-value prefetches in composite for loop at line 25=6
# of dynamic_mapped_array prefetches in composite for loop at line 25=12, dist=8
Total #of lines prefetched in composite for loop at line 25=12
# of initial-value prefetches in composite for loop at line 25=6
# of dynamic_mapped_array prefetches in composite for loop at line 25=12, dist=8
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 8 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 22
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25
Using second-level distance 4 for prefetching dyn-map memory reference in stmt at line 25

Loop dual-path report:

<t1.c;22:22;hlo;composite;0>
Loop at 22 -- selected for multiversion - DD

<t1.c;25:25;hlo;composite;0>
Loop at 25 -- selected for multiversion - DD

The comments above apply to Fortran line numbers as well (even though the example is in C).


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

Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione