安全,快速的CFLAGS for matx中的mex函数

时间:2009-12-15 23:38:18

标签: c gcc matlab mex

我正在将一些低级操作从原生matlab代码转换为C / mex代码,并且速度非常快。 (这些低级操作可以在.m代码中进行矢量化,但我认为我的内存命中大数据b / c。无论如何。)我注意到用不同的CFLAGS编译mex代码可以引起轻微的改进。例如,CFLAGS = -O3 -ffast-math确实提供了一些加速,但代价是温和的数字不准确。

我的问题:使用哪种“最佳”CFLAGS,而不会产生太多其他副作用?看来,至少就是这样 CFLAGS = -O3 -fno-math-errno -fno-unsafe-math-optimizations -fno-trapping-math -fno-signaling-nans都没关系。我不确定-funroll-loops

另外,你如何优化半自动使用的CFLAGS套装,而不会疯狂?

2 个答案:

答案 0 :(得分:1)

如果你知道目标CPU ......或者至少愿意保证“最小”CPU ......你一定要考虑-mcpu-march

性能提升可能很大。

答案 1 :(得分:1)

无论ATLAS在您的机器上使用什么(http://math-atlas.sourceforge.net/)都可能是一个很好的起点。我不知道ATLAS会自动优化特定的编译器标志,但开发人员可能花了相当多的时间手工完成。