如何将 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


<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

循环双路径报告

<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

循环双路径报告

<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

循环双路径报告

<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

循环双路径报告

<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

循环双路径报告

<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

循环双路径报告

<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.