【问题标题】:GCC special optimization options for double precision floating point arithmetics双精度浮点运算的 GCC 特殊优化选项
【发布时间】:2010-06-15 15:26:52
【问题描述】:

你知道哪些 GCC 优化标志最适合构建应用程序,它使用双浮点并实时计算大量,它使用 -lm。目标硬件是两个板载 Linux 的 Dual-Xeon。提前致谢!

【问题讨论】:

    标签: c optimization gcc build-process


    【解决方案1】:

    “双至强”并不是您所针对的处理器的精确规格 - “至强”更像是一个营销品牌名称,而不是特定型号。 “至强”甚至不会告诉您您的目标是 IA32 还是 x86-64 架构。

    这很重要,因为针对特定 CPU 系列可以显着改善优化。有很多选择described in the GCC documentation;特别是,以-march 开头,为特定指令集生成代码。

    如果您的目标不是 x86-64,则使用 -mfpmath=sse(如果您的 CPU 类型支持)将 SSE 指令用于浮点,而不是 387(此选项是 x86-64 上的默认选项)。同样,-malign-double 可以提供加速(但仅在 x86-64 上是默认设置)。

    此外,如果您在分析时在 libmath 中使用的函数显示为热点,那么使用更具体的优化标志重新编译该库可能会有所帮助。

    【讨论】:

    • 谢谢,-mfpmath=sse 帮助了。现在我的应用程序快了大约 10 倍。
    【解决方案2】:

    根据它是否安全且适合您的给定应用程序,您可以考虑-ffast-math。不过,请在使用它之前阅读手册页上的警告。

    我从经验中知道,它可以对运行数值模拟的程序产生很大影响。当然,您必须进行一些健全性检查以确保输出没有被更改。

    【讨论】:

    • 我不认为这是一个好主意...只是 -O2 可能没问题
    • @Brian:不知道你为什么只用那个链接发表评论。
    • @spudd86:是的,-O2 可能没问题,因此我的回答是。我没有明确提到 -O 选项,因为即使是最粗略的文档检查也会显示这些选项,所以我认为这并不是真正被问到的。我只是指出了一个似乎与这个特定问题相关的更深奥的选项。
    • “请阅读手册页上的警告”让我有一种冲动,想发布一个链接,指向有此类警告的内容。
    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 2010-10-22
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2018-02-23
    相关资源
    最近更新 更多