gpt4 book ai didi

c - gcc 中的 funroll 循环选项和调整参数

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:54 27 4
gpt4 key购买 nike

我正在研究用 C 语言编写的基准测试。我尝试使用优化标志 - gcc 中存在的 funroll-loops 对其进行编译。我只用 funroll-loops 编译它,然后用 funroll-loops --param max-unrolled-insns=10 编译它,令人惊讶的是,用 funroll-loops --param max-unrolled-insns=10 编译的二进制文件多花了 50 秒比使用简单的 funroll-loops 编译的二进制文件运行的选项。funroll-all-loops 也是同样的情况。我无法理解 gcc 的这种行为。为什么当我们使用调优参数 max-unrolled-insns 时性能会下降?请帮忙。

最佳答案

你说加了50秒,指的是什么,总数是多少?

max-unrolled-insns 将设置一个循环可以展开的指令数,因此如果将其设置为 10,很有可能会损失一些百分比。例如.. 如果您有一个包含 6 条指令的循环,它根本不会展开,因为展开会使它变成 12 条指令。

在这种情况下不展开会使您丢失一些指令并强制执行一个分支..因此它可能会增加几个百分点的运行时间。

关于c - gcc 中的 funroll 循环选项和调整参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29530457/

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