问题标签 [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.
visual-c++ - 我应该在哪里存储 PGO 数据库文件?
我一直在研究在 Visual C++ 2013 中使用Profile Guided Optimization。我很高兴使用不同的场景作为手动步骤执行训练集,但希望最终优化的构建和链接可以在我们的 CI 构建服务器上工作。
考虑到这一点,我存储 PGO 配置文件数据库的最佳位置在哪里?将它们存储到版本控制(在我们的例子中是 Git)是最方便的地方,但我知道它们是数十甚至可能数百兆字节的二进制文件,而且这些文件不一定能很好地存储在源文件中控制系统。
或者,是否有更好的解决方案或最佳实践将 PGO 集成到我们的自动化构建中?
android - Clang 配置文件引导优化是否适用于 Android 应用程序
Clang 配置文件引导式优化是否适用于具有本机库的 Android 应用程序?我按照此处给出的步骤操作,我能够检测本机库,但在运行我的应用程序时没有生成 .profraw 文件。
java - 在 PGPPublicKeyRing 预期的位置找到 GPEncryptedDataList
我正在用我已经拥有的公钥加密一个文本文件,我有一个基本上从输入流中读取公钥的方法,同时在下一行创建一个对象时我遇到了异常
这是几个小时前的工作,突然停止工作,没有改变代码中的任何内容。现在,以下是我得到的例外
以前有人遇到过这种错误吗?感谢对此的任何帮助
visual-studio - Visual Studio 忽略 CMake 链接器标志以进行配置文件引导优化
我有一个C++
项目,CMake
它在Visual Studio 2017 Enterprise
. 根据文档,我必须使用/LTCG
和链接/GENPROFILE
。在CMake
中,这似乎等同于设置变量CMAKE_EXE_LINKER_FLAGS
:
此外,由于我的应用程序需要命令行参数,因此我必须launch.vs.json
在 this answer中定义它们。
现在,如果我运行应用程序的x64-Release
配置文件,它会以正常、无延迟的Release
构建方式成功完成。没有.pgd
生成,这意味着我传递的链接器标志可能已被忽略。
另一种尝试是添加额外的CMake
链接器标志变量:
这也没有奏效。之后指定/USEPROFILE
不会生成不同的二进制文件。此外,运行时间大致相同。命令行上也没有指示已生成或使用配置文件。
我在这里做错了什么?
c++ - 配置文件引导优化 - __gcov
我正在尝试使用-fprofile-generate
标志对我的代码运行配置文件引导优化。当我用它编译时,我收到以下错误。
obj\Debug\main.o||In function ZNSt10_HashtableIiSt4pairIKiiESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE5clearEv':|
c:\program files (x86)\gfortran\lib\gcc\mingw32\4.10.0\include\c++\bits\hashtable.h|1937|undefined reference to __gcov_indirect_call_profiler_v2'|
c:\program files (x86)\gfortran\lib\gcc\mingw32\4.10.0\include\c++\bits\hashtable.h|1937|undefined reference to __gcov_indirect_call_callee'|
c:\program files (x86)\gfortran\lib\gcc\mingw32\4.10.0\include\c++\bits\hashtable.h|1937|undefined reference to __gcov_time_profiler'|
c:\program files (x86)\gfortran\lib\gcc\mingw32\4.10.0\include\c++\bits\hashtable.h|1942|undefined reference to __gcov_one_value_profiler'|
c:\program files (x86)\gfortran\lib\gcc\mingw32\4.10.0\include\c++\bits\hashtable.h|1942|undefined reference to __gcov_average_profiler'|
c:\program files (x86)\gfortran\lib\gcc\mingw32\4.10.0\include\c++\bits\hashtable.h|1942|undefined reference to __gcov_ior_profiler'|
中还有其他错误消息,但所有这些都与__gcov
我无法在网上找到任何关于此的内容。有人可以帮忙吗?我在 Windows 上使用 g++ 8.1.0 并使用-march=native
,-std=c++14
和-ffast-math
标志。-fprofile-generate
该程序在没有标志的情况下完全符合并运行良好。
windows - 添加 /GENPROFILE 标志后无法打开文件“pgort.llib”
我正在尝试按照此处的说明为我的项目添加 PGO。添加/GENPROFILE
标志后,我开始收到链接错误:
在调试了一下之后,我认为问题在于我的库目录(在VC++ 目录选项卡下找到)的值$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64)
是:
看起来.\spectre\x64
路径没有pgort.lib
库,但非幽灵路径有:
我该怎么做才能解决这个问题?我很难相信,如果我使用幽灵二进制文件(我什至不确定我是如何/为什么首先使用它)我无法优化我的项目。
顺便说一句,我在安装了 Enterprise VS 的机器上试过这个,结果是一样的。所以这不是特定于社区版的。
llvm - 如何将 -pgo-instr-gen 参数与 llvm opt 一起使用
我想测试PGO
with llvm
,我发现互联网上的大部分教程都使用clang
with 参数-fprofile-instr-use
来启用PGO
检测。但是,我拥有的是一个llvm
位码文件而不是源代码,我想应用于PGO
这些位码文件。我注意到该opt
工具有论点-pgo-instr-gen
。
但是,在我将它应用到我的位码之后,例如:
然后尝试运行output.ll
with lli
,我遇到了分段错误。那么,PGO
在这种情况下启用的正确方法是什么?
gcc - Autofdo 是否支持 -fprofile-reorder-functions?
Autofdo 允许收集比使用时更准确的配置文件数据,-fprofile-generate
但它-fauto-profile
不像-fprofile-use
.
这是否意味着它仅适用于-fprofile-use
?