gpt4 book ai didi

c - PGO 比静态优化慢(英特尔编译器)

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:57 26 4
gpt4 key购买 nike

我正在为 I-32A 架构使用英特尔 C 编译器。当我使用以下选项编译我的 C 程序时:

icl mytest.c /openmp /QxHost /fp:fast /fast

试运行耗时3.3s。现在我尝试使用 PGO,所以我编译了:

icl mytest.c /openmp /QxHost /fp:fast /fast /Qprof-gen

然后我用我的示例输入运行可执行文件 2-3 次并再次编译:

icl mytest.c /openmp /QxHost /fp:fast /fast /Qprof-use

希望它能考虑收集到的信息。它实际上告诉我它正在使用 .dyn 文件,但生成的可执行文件比没有使用 Qpr​​of 时慢(3.85 秒),并且这是在执行运行的完全相同的数据上(对于 PGO 来说应该是完美的)。我尝试将 openmp 线程设置为一个,认为它可能会混淆 .dyn 输出,但结果是一样的——它比简单编译慢。

我的问题是:这在理论上是否可行,或者我以某种方式使用编译器选项搞乱了 PGO 进程?

最佳答案

一个 3.3 秒的浮点应用程序不会从配置文件引导的优化中受益。根据我的猜测,您正在做某种原始数据处理,如果您需要原始 FLOP,这比 PGO 更适合手工编码的汇编。

PGO 不会告诉编译器如何优化您的内部循环以消除分支延迟并保持流水线满载。它可能会告诉它您的循环是否可能只运行 5,000 次,或者您的 float 是否满足某些条件。

它用于在统计上代表您希望它运行的其他数据的数据。换句话说,您将它与您希望能够以良好剪辑运行其他数据的程序上的数据一起使用。它不一定针对手头的程序进行优化,正如您所说,它甚至可能会放慢速度以获得可能的净 yield 。

这实际上取决于您的程序,但 OpenMP FP 应用程序不是 PGO 的用途。与其他一切一样,它也不是“ Elixir ”。

关于c - PGO 比静态优化慢(英特尔编译器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11593513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com