繁体   English   中英

为什么 GCC 不显示矢量化信息?

[英]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更改为如列出的optimizedall等。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM