GCC双精度浮点算术的特殊优化选项

时间:2010-06-15 15:26:52

标签: c optimization gcc build-process

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

2 个答案:

答案 0 :(得分:3)

“Dual-Xeon”并不是您所针对的处理器的精确规格 - “Xeon”更像是一个营销品牌而非特定型号。 “Xeon”甚至没有告诉您是否正在瞄准IA32或x86-64架构。

这很重要,因为通过定位特定的CPU系列可以显着改善优化。有很多选项described in the GCC documentation;特别是,从-march开始为特定指令集生成代码。

如果您没有针对x86-64,那么使用-mfpmath=sse(如果您的CPU类型支持)使用SSE指令进行浮点运算,而不是387(此选项是x86-64上的默认选项)。同样地,-malign-double可以提供加速(但仅在x86-64上默认)。

此外,如果您在配置文件中将libmath中使用的函数显示为热点,则使用更具体的优化标记重新编译该库可能会有所帮助。

答案 1 :(得分:1)

根据您的应用是否安全和适当,您可以考虑-ffast-math。在使用之前,请阅读手册页上的警告。

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