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

Posted

技术标签:

【中文标题】matlab中用于mex函数的安全、快速的CFLAGS【英文标题】:safe, fast CFLAGS for mex functions in matlab 【发布时间】: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 集,半自动,而不发疯?

【问题讨论】:

【参考方案1】:

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

性能提升可能很大。

【讨论】:

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

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

【讨论】:

以上是关于matlab中用于mex函数的安全、快速的CFLAGS的主要内容,如果未能解决你的问题,请参考以下文章

matlab中的plot函数怎样在c语言中实现

matlab中imagesc如何用C语言去实现

在八度音程中运行 matlab 项目时,mex 函数未定义错误

使用 Eigen 和 MEX 快速评估三角函数的性能瓶颈

在八度音程中运行matlab项目时,mex函数未定义错误

Matlab 在 MEX 函数中崩溃