【发布时间】:2010-06-15 15:26:52
【问题描述】:
你知道哪些 GCC 优化标志最适合构建应用程序,它使用双浮点并实时计算大量,它使用 -lm。目标硬件是两个板载 Linux 的 Dual-Xeon。提前致谢!
【问题讨论】:
标签: c optimization gcc build-process
你知道哪些 GCC 优化标志最适合构建应用程序,它使用双浮点并实时计算大量,它使用 -lm。目标硬件是两个板载 Linux 的 Dual-Xeon。提前致谢!
【问题讨论】:
标签: c optimization gcc build-process
“双至强”并不是您所针对的处理器的精确规格 - “至强”更像是一个营销品牌名称,而不是特定型号。 “至强”甚至不会告诉您您的目标是 IA32 还是 x86-64 架构。
这很重要,因为针对特定 CPU 系列可以显着改善优化。有很多选择described in the GCC documentation;特别是,以-march 开头,为特定指令集生成代码。
如果您的目标不是 x86-64,则使用 -mfpmath=sse(如果您的 CPU 类型支持)将 SSE 指令用于浮点,而不是 387(此选项是 x86-64 上的默认选项)。同样,-malign-double 可以提供加速(但仅在 x86-64 上是默认设置)。
此外,如果您在分析时在 libmath 中使用的函数显示为热点,那么使用更具体的优化标志重新编译该库可能会有所帮助。
【讨论】:
根据它是否安全且适合您的给定应用程序,您可以考虑-ffast-math。不过,请在使用它之前阅读手册页上的警告。
我从经验中知道,它可以对运行数值模拟的程序产生很大影响。当然,您必须进行一些健全性检查以确保输出没有被更改。
【讨论】: