我在Windows 7上使用Codeblocks作为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:在****中发布(编译器:GNU GCC编译器)---------------
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 \ f.o obj \ Release \ main.o -s " C:\程序 文件... \ libgomp-1.DLL" 输出文件是bin \ Release \ d.exe,大小为21.00 KB进程 以状态0(0分钟,0秒(s))终止0错误(s),0 警告(0分钟,0秒(s))
答案 0 :(得分:18)
CodeBlocks是一个IDE。它没有编译任何东西。海湾合作委员会。 -ftree-vectorizer-verbose
曾用于以前的版本。现在有-fopt-info
,它允许检索有关优化的信息(矢量化);您可以找到相关文档here。
甚至展示了如何将矢量化器输出实际检索到stderr
:
这一个:
gcc -O2 -ftree-vectorize -fopt-info-vec-missed
从矢量化打印有关错过的优化机会的信息 传递给斯特德尔。请注意,-fopt-info-vec-missed等同于 -fopt-INFO-错过-VEC。
您可以将missed
更改为例如列出的optimized
,all
等等。
答案 1 :(得分:0)
gcc 标志 -ftree-vectorizer-verbose
在 gcc 4.9 中已被弃用。
见https://github.com/gcc-mirror/gcc/blob/releases/gcc-4.9/gcc/common.opt
<块引用>ftree-vectorizer-verbose= 常见的连接拒绝否定忽略 什么也没做。为向后兼容而保留。
答案 2 :(得分:-1)
在GCC-9.0.0中,消息现在以优化,丢失或注释为前缀,而不是全部以注释为前缀的旧行为。 如果希望通过-fopt-info的新的-internals子选项来获取矢量化程序做出的所有决策的详尽日志。