1)
icpc -std=c++11 -mavx2 -O3 -qopt-report -qopt-report-phase=vec 04-dot-product.c -o 04-dot-product
2)
Intel(R) Advisor can now assist with vectorization and show optimization
report messages with your source code.
See "https://software.intel.com/en-us/intel-advisor-xe" for details.
Begin optimization report for: main()
Report from: Vector optimizations [vec]
LOOP BEGIN at 04-dot-product.c(56,3)
remark #15300: LOOP WAS VECTORIZED
LOOP END
===========================================================================
Begin optimization report for: slow_dot_product(const double *, const double *)
Report from: Vector optimizations [vec]
LOOP BEGIN at 04-dot-product.c(11,3)
<Peeled loop for vectorization>
LOOP END
LOOP BEGIN at 04-dot-product.c(11,3)
remark #15300: LOOP WAS VECTORIZED
LOOP END
LOOP BEGIN at 04-dot-product.c(11,3)
<Remainder loop for vectorization>
remark #15301: REMAINDER LOOP WAS VECTORIZED
LOOP END
LOOP BEGIN at 04-dot-product.c(11,3)
<Remainder loop for vectorization>
LOOP END
===========================================================================
Begin optimization report for: dot_product(const double *, const double *)
Report from: Vector optimizations [vec]
LOOP BEGIN at 04-dot-product.c(37,3)
remark #15344: loop was not vectorized: vector dependence prevents vectorization. First dependence is shown below. Use level 5 report for details
remark #15346: vector dependence: assumed ANTI dependence between sum_vec (41:15) and sum_vec (41:15)
LOOP END
===========================================================================
确实会有一些提示信息,这些比较有用。