如何将 vec-report 行号与源代码行号对应起来

面向英特尔® MIC 架构的编译器方法

如何将 vec-report 中的行号与源代码行号联系起来

我们将通过下面的示例来提供将源代码行号与 vec-report 行号进行关联的技巧。请注意这是在 C 中提供的示例。但是,下面的情况同样适用于 Fortran。此外,它还适用于面向英特尔® 至强™ 处理器和英特尔® 至强融核™ 协处理器的英特尔® 编译器。

% 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.
  • 上面的源文件有 3 个函数,其编译(以及在可执行文件中列出)顺序取决于编译器的推断(heuristics)。

  • 编译器可对函数进行内联化处理,内联循环的优化(向量化)方式可能与函数中的原始循环不同。根据编译器选项的不同,内联行为也可能发生变化。请注意在默认情况下,基于单个文件的内联优化在 -O2 处启用。跨多个文件的内联需要 -ipo 选项。

  • 在某些情况下,执行内联操作后,编译器可以证明无须保留原始函数体,可能会决定针对函数执行消除死代码操作。

  • 在上面的编译中,我们看到了 4 个 VECTORIZED 循环消息。这分别对应第 6 行(foo1 中的循环,可能会从不同的文件调用 foo1)、第 14 行(foo2 中的循环,可能会从不同的文件调用 foo1),第 22 行中的内联 foo1 调用有一个循环,第 25 行中的内联 foo2 调用有一个循环。

  • 在执行性能分析时,您需要了解哪个版本的循环在运行时执行 — 例如,如果复合函数是上面的热点,那么最重要的行(用于向量化目的)便是具有内联体的第 22 行和第 25 行。

  • 默认情况下,编译器针对内联部分内的所有循环使用调用位置的行数。因此,如果函数 foo1 具有多个循环,那么在默认模式下,这些循环看上去在 vec-report 中都具有行数 22(内联化以后)。

  • 您可以添加选项 "-debug inline-debug-info" 使用报告消息中的被调用方行数。例如,添加此选项后,vec-report 发生如下变化:

% 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.
  • 请注意,-debug 选项在默认情况下假设 -O0,因此您必须明确地向上面的命令行添加 -O2,已保留与上面第一次编译中相同的优化级别。

  • 内联循环的行数更改为与被调用方中循环实际行数相对应的第 6 行和第 14 行。

  • 如果您添加 "-opt-report-phase hlo -opt-report 3" 选项,便可获得关于每个函数的循环优化方面的详细信息。这通常有助于更轻松地分析函数热点 — 您可以直接跳至您感兴趣的函数的优化报告(每个函数在下面的完整报告中获得一个唯一的标题),并查看该函数中所有循环的 vec-report。

% 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

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
  • 通常,编译器会以线性顺序对函数中的循环逐一进行处理,但并不保证总是这样 — 编译器可能会执行优化以便根据控制流图来重新安排代码,而且编译器也可能会以无次序的方式来处理(报告)循环。但是如果您使用 -vec-report2 或 -vec-report3,您应该能够为循环的每个实例找到一个 vec-message。

  • Openmp (-openmp) 和自动并行化 (-parallel) 可能会造成编译器生成更多版本的循环,从而导致每一行会有更多的 vec-message。例如:

% 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

上面的命令同样适用于 Fortran 行数(尽管提供的是 C 中的示例)。

下一步

要在英特尔® 至强融核™ 协处理器上成功调试您的应用,请务必通读此指南,并点击文中的超链接查看相关内容。本指南提供了实现最佳应用性能所要执行的步骤。

返回到“向量化和优化报告”

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.