如何将 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 中的示例)。
下一步
要在英特尔®至强融核™ 协处理器上成功调试您的应用,请务必通读此指南,并点击文中的超链接查看相关内容。本指南提供了实现最佳应用性能所要执行的步骤。