问题标签 [pgo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4846 浏览

c++ - 配置文件引导优化 (C)

有人知道这个编译器功能吗?GCC 似乎支持这一点。它是如何工作的?潜在收益是多少?在什么情况下好?内循环?

(这个问题是具体的,而不是一般的优化,谢谢)

0 投票
1 回答
1212 浏览

c++ - 在生产环境中使用 PGO(profile-guided optimization)的风险

我有一个系统(Linux 和 C++)进行密集的信号/图像处理操作。我想使用 PGO 来提高我们应用程序的性能。

使用 PGO 时我应该注意哪些风险/潜在问题?

单元测试 + E2E 测试是否足以验证 PGO 没有破坏任何东西?

0 投票
0 回答
354 浏览

c++ - 无法使用 PGO 并出现错误 LNK1270

我正在尝试将 Profile Guided Optimization (PGO) 与 VS8 一起使用。在对有问题的 DLL 进行检测后,我将其复制到安装了我们的应用程序并运行训练场景的机器上。然后,我将pgc培训文件复制回我的开发箱并收到以下错误:

1>StdAfx.obj : 致命错误 LNK1270: 无效文件;时间戳与 /LTCG:PGINSTRUMENT 链接的文件不匹配

此错误的MSDN条目说:

无效文件; 时间戳与使用 /LTCG:PGINSTRUMENT 链接的文件不匹配指定 /LTCG:PGINSTRUMENT 时传递给链接器的相同文件也必须在指定 /LTCG:PGOPTIMIZE 时传递。

/LTCG:PGOPTIMIZE 要求输入与 /LTCG:PGINSTRUMENT 阶段相同。

要解决此警告,请运行 /LTCG:PGINSTRUMENT,重做所有测试运行,然后运行 ​​/LTCG:PGOPTIMIZE,或者使用 /LTCG:PGUPDATE 而不是 /LTCG:PGOPTIMIZE 创建优化的映像。

重新运行测试并不能解决问题(尽管它有时会出现在其他文件中,而不是 stdafx.obj)。

Using/LTCG:PGUPDATE 确实有效,但是我想了解是什么导致了错误,或者失败了,使用PGUPDATE而不是有任何缺点(我在MSDN PGO 页面PGOPTIMIZE中找不到任何相关内容)。

0 投票
2 回答
25173 浏览

c++ - GCC Profile Guided Optimization (PGO) 收集哪些信息以及哪些优化使用它?

当我启用时 GCC 会收集哪些信息-fprofile-generate,哪些优化实际上使用了收集的信息(设置-fprofile-use标志时)?

我需要在这里引用。我已经搜索了一段时间,但没有找到任何记录。

有关链接时间优化 (LTO) 的信息将是一个加分项!=D

0 投票
1 回答
130 浏览

visual-studio-2010 - VS2010 PGO 中的这些“预期失败”消息是什么,我该如何解决?

当我执行 PGO 优化步骤(使用LINK.EXE /LTCG:PGU)时,Visual Studio 2010 链接器抱怨:

是什么导致了这些“预期失败”?我应该如何解决它们?似乎 PGO 仍在优化代码,但我对存在这些消息的优化的质量/完整性有点怀疑。

0 投票
2 回答
422 浏览

optimization - GCC 检测的可执行文件如何比非检测的更快?

我在 SPEC 基准测试中对 GCC Profile-Guided Optimization 的开销进行了基准测试。我在一些基准测试中得到了一些奇怪的结果。事实上,我的两个基准测试在检测时运行得更快。

正常的可执行文件使用以下命令编译: -g -O2 -march=native

检测的可执行文件使用以下命令编译: -g -O2 -march=native -fprofile-generate -fno-vpt

我正在使用 GCC 4.7(准确地说是 Google 分支)。运行基准测试的计算机具有 Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz。

bwaves 是 Fortran 基准测试和 libquantum

结果如下:

我多次运行基准测试,认为这可能是 ma 机器上的问题,但每次我都确认它们。

我会理解某些程序的开销很小,但我看不出有任何改进的理由。

所以我的问题是:GCC 检测的可执行文件如何比优化的普通可执行文件更快?

谢谢

0 投票
1 回答
472 浏览

gcc - 使用 -fprofile-generate 时的 gcc 宏

指定标志时 gcc 是否定义了某种宏-fprofile-generate?基本上,我想在分析时禁用多线程——它似乎有一种破坏 .gcda 文件的方法。

0 投票
2 回答
1042 浏览

visual-studio - Visual Studio:使用从一个 exe 到不同 dll 的配置文件引导优化的结果?

我有一个 dll,core.dll我想使用 Visual Studio 出色的 Profile Guided Optimization 对其进行优化。大多数代码是 dll 实际上编译成一个名为的库core.lib,然后由core.dll.
为了对这段代码进行单元测试,我还有一个名为test_core.exe. 这个可执行文件链接到core.lib它并从中激活各种功能。DLL 的core.dll导出很少,仅足以启动其主要功能。无法使用这些导出完全进行单元测试。
我想要的是通过激活其中的一些测试来收集 PGO 数据test_core.exe,然后使用这些 PGO 数据进行链接和优化core.dll

似乎 Visual Studio 框架的设计使得收集可执行文件和优化的可执行文件是相同的。
一种选择是将相关测试添加到内部core.dll并使用特殊导出运行它们,但这会导致core.dll测试代码膨胀,而在任何其他情况下都不会使用。

0 投票
0 回答
375 浏览

c++ - 为什么 GCC 不能在静态库中使用 -flto 和配置文件引导优化来内联函数?

我正在使用 GCC 版本 4.7.2。我创建了一个包含两个文件“ctest1.cpp”和“ctest2.cpp”的静态库。

ctest1.cpp

ctest2.cpp

头文件“ctest2.h”是,

同样的文件“ctest1.h”,

此静态库链接到以下主文件“in_test.cpp”,

in_test.cpp


我期待在提供适当的反馈并启用 -flto 之后,编译器应该在文件“ctest1.cpp”中内联函数调用 ctest2()(甚至在“in_test.cpp”中调用 ctest1()),但它没有吨。以下是我遵循的编译步骤:

为了训练,我运行可执行文件 n 次,然后

我也尝试过 -fuse-linker-plugin,我在编译命令中给出了黄金链接器的路径,但函数没有内联。我还想提醒您,当我在不创建静态库(带有 flto 和反馈)的情况下尝试此实验时,编译器会内联函数调用。在这种情况下,我只需从所有文件中创建一个可执行文件。这就是我期望它在静态库的情况下工作的原因。有人可以告诉我这里出了什么问题吗?

0 投票
2 回答
714 浏览

linux - 来自 gcc 的 pgo 的优化报告

我可以看到 gcc 的 PGO(配置文件引导优化)在我的应用程序中运行良好(执行速度提高了约 15%)。我正在使用“-fprofile-generate”,然后是“-fprofile-use”。但是有没有办法生成一些报告来描述优化的内容和方式?我知道英特尔编译器(icc)可以做到这一点,但是 gcc 呢?