【发布时间】:2012-07-05 15:52:08
【问题描述】:
我有兴趣将我的 Matlab 实现移植到 C++ 以提高速度。我试过犰狳。它非常适合从 Matlab 移植代码,因为 Armadillo 的库函数名称/语法非常接近于 Matlab 编程。但是我意识到,在某些地方,Matlab 的表现不如犰狳,因为我的数据主要是稀疏的,而犰狳没有给它任何特殊处理,只是将其视为密集矩阵。 Armadillo 团队正在研究稀疏矩阵支持,但目前不可用。所以我正在寻找一个像 Armadillo 这样的库,其语法非常接近 Matlab(或易于使用),并且支持稀疏矩阵以实现速度和空间优化。
【问题讨论】:
-
在将您的代码移植到 C++ 之前,您应该说服自己这样做是值得的。 SO 充满了人们的悲惨故事,他们认为他们可以做到这一点,编写 C++ 代码以超越 Matlab,并想知道为什么尽管付出了巨大的努力,他们还是失败了。在许多情况下,只是他们没有意识到 Matlab 的许多核心数学例程都使用编译代码,而实际上他们试图做的是编写 C++ 代码,其性能优于 Mathworks 专家编写的编译代码.
-
我同意高性能标志。 Matlab 内置函数具有令人难以置信的性能和优化。它们建立在旧的 fortran 或 C 代码之上,非常有效。如果您在 Matlab 脚本中使用矢量化代码,Matlab 很可能会优于其他线性代数函数实现。你究竟需要什么来加速?
-
您是否考虑过使用 GPU 计算来加速您的代码? Jacket 很棒,并为此提供了稀疏的功能。
-
@HighPerformanceMark user1241315 和 Ben Stewart,感谢您的回复。我做了一些速度比较,并完全意识到你们在说什么。本斯图尔特,谢谢你的想法。我也去找找。
-
感谢您回来更新我们。
标签: matlab linear-algebra sparse-matrix blas armadillo