【问题标题】:safe, fast CFLAGS for mex functions in matlabmatlab中用于mex函数的安全、快速的CFLAGS
【发布时间】:2009-12-15 23:38:17
【问题描述】:

我正在将许多低级操作从本机 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 集,半自动,而不发疯?

【问题讨论】:

    标签: c gcc matlab mex


    【解决方案1】:

    如果您知道目标 CPU...或者至少愿意保证“最低”CPU...您绝对应该研究一下 -mcpu-march

    性能提升可能很大。

    【讨论】:

    • 我原则上喜欢这个,但还没有能够正确测试它。会的..
    • 对我来说效果很好。谢谢。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多