英特尔 icc 编译器 -O 标志和 -qopt-report

标签 intel icc

我目前正在开发 HPC,我有一个关于 icc 编译器的问题。

我想做的是看看当我通过 [O0..O3] 更改优化级别时发生了什么。我想要的数据,关于矢量化以及代码是否内联折叠等,似乎在由 -qopt-report 标志生成的报告中。

我决定在报告中使用最详细的内容

-qopt-report5  (I think this is the correct way to use it)

但是,当降低 O 级别时,使用 -O0 标志时,报告会逐渐变小,直到变空:

icc -O0 -qopt-report5 -c test1.c

我会继续寻找,但如果有人注意到我脑死亡,我会很感激指导如何一起使用这些标志!

预先感谢您的任何提示。 干杯, 马克。

最佳答案

当您使用 -O0 时,

-qopt-report5 始终禁用。 这是“根据定义”,因为 opt-report == “优化报告”并且 O0 == “无优化”,所以没有什么可报告的。。 p>

自动矢量化通常从 O2 优化级别开始启用,因此如果您想探索矢量化方面,那么您至少需要使用“-O2 -opt-report5”组合或“更高”。

如果您想要关联性能“峰值”和“优化报告”,请考虑使用英特尔“矢量化顾问”(了解更多信息 here ,立即从此位置下载:https://software.intel.com/en-us/advisor_getting_started_intro )opt-report diagnostics and many other vectorization characteristics in Advisor

关于英特尔 icc 编译器 -O 标志和 -qopt-report,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084382/

相关文章:

linux - Linux 的分析工具和 ARM 的性能监控计数器

c# - 有没有办法自动确定语句可能抛出的异常?

intel - Z80 处理器可以运行 Gameboy 游戏吗?

boost - Ubuntu oneiric 上的 g++ 和 boost 链接器错误

c++ - 使用 constexpr 时的 Intel 编译器和 "cannot have an in-class initializer"

assembly - 什么是描述符寄存器?

使用 RDTSC 的 nanosleep 循环计数

c++ - 使用 C++11 的 boost::date_time 编译失败

c++ - 带有自定义消息的基于模板的编译时断言只能在某些编译器中编译

c++ - 如何让 gcc 完全矢量化这个 sqrt 循环?