[英]Why doesn't GCC show vectorization information?
我在 Windows 7 上为 C 程序使用代码块。该程序正在使用 OMP 库。 GCC 版本是 4.9.2。 Mingw x86_64-w64-mingw32-gcc-4.9.2.exe。
使用的标志是: -fopenmp -O3 -mfpmath=sse -funroll-loops -ftree-loop-distribution -ftree-vectorize -ftree-vectorizer-verbose=2
。
该程序运行正常,但问题是它没有显示有关哪些循环被矢量化或未矢量化的信息。 我该如何解决?
构建日志信息:
-------------- Build: Release in **** (compiler: GNU GCC Compiler)---------------
x86_64-w64-mingw32-gcc-4.9.2.exe -Wall -O2 -march=corei7 -fexpensive-optimizations -O3 -fopenmp -mfpmath=sse -funroll-loops -ftree-loop-distribution -ftree-vectorize -ftree- vectorizer-verbose=2 -c C:\\Users...\\fc -o obj\\Release\\fo x86_64-w64-mingw32-g++.exe -o bin\\Release\\d.exe obj\\Release\\fo obj\\Release\\ main.o -s "C:\\Program Files...\\libgomp-1.dll" 输出文件是 bin\\Release\\d.exe,大小为 21.00 KB 进程以状态 0(0 分钟,0 秒( s)) 0 个错误,0 个警告(0 分钟,0 秒)
CodeBlocks 是一个 IDE。 它不编译任何东西。 海湾合作委员会可以。 -ftree-vectorizer-verbose
用于在以前的版本中工作。 现在有-fopt-info
,它允许检索有关优化的信息(也是矢量化); 您可以在此处找到相关文档。
它甚至展示了如何将向量化器输出实际检索到stderr
: 和这个:
gcc -O2 -ftree-vectorize -fopt-info-vec-missed
在 stderr 上打印有关从矢量化传递中错过的优化机会的信息。 请注意,-fopt-info-vec-missed 等效于 -fopt-info-missed-vec。
您可以将missed
更改为如列出的optimized
、 all
等。
gcc 标志-ftree-vectorizer-verbose
在 gcc 4.9 中已被弃用。
见https://github.com/gcc-mirror/gcc/blob/releases/gcc-4.9/gcc/common.opt
ftree-vectorizer-verbose= Common Joined RejectNegative Ignore 什么都不做。 为向后兼容而保留。
在 GCC-9.0.0 中,消息现在以优化、错过或注释为前缀,而不是旧的所有行为都以注释为前缀。 如果想通过 -fopt-info 的新 -internals 子选项获得矢量化器做出的所有决定的详尽日志。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.