matlab中mex函数的安全、快速CFLAGS

matlab中mex函数的安全、快速CFLAGS,c,gcc,matlab,mex,C,Gcc,Matlab,Mex,我正在将一些低级操作从本机matlab代码转换为C/mex代码,速度大大加快。(这些低级操作可以在.m代码中进行矢量化,但我想我会得到大数据的b/c内存命中率。不管怎样。)我注意到,使用不同的CFLAG编译mex代码可以带来轻微的改进。例如,CFLAGS=-O3-ffast math确实提供了一些加速,但代价是数值的不精确性 我的问题是:在不产生太多其他副作用的情况下,使用什么样的“最佳”CFLAG?看来,至少 CFLAGS=-O3-fno数学错误-fno不安全数学优化-fno陷阱数学-fno信

我正在将一些低级操作从本机matlab代码转换为C/mex代码,速度大大加快。(这些低级操作可以在.m代码中进行矢量化,但我想我会得到大数据的b/c内存命中率。不管怎样。)我注意到,使用不同的CFLAG编译mex代码可以带来轻微的改进。例如,
CFLAGS=-O3-ffast math
确实提供了一些加速,但代价是数值的不精确性

我的问题是:在不产生太多其他副作用的情况下,使用什么样的“最佳”CFLAG?看来,至少
CFLAGS=-O3-fno数学错误-fno不安全数学优化-fno陷阱数学-fno信令NAN
都正常。我不确定
-funroll循环是否正确


此外,您将如何半自动地优化所使用的CFLAG集,而不会发疯?

如果您知道目标CPU…或者至少愿意保证“最小”CPU…您应该明确查看
-mcpu
-march


性能的提高是非常显著的。

ATLAS在您的机器上使用的任何东西()都可能是一个很好的起点。我不知道ATLAS是否会自动优化特定的编译器标志,但开发人员可能已经花了相当多的时间手动进行优化。

我原则上喜欢这样做,但尚未能够正确测试它。对我来说很好。谢谢