【问题标题】:Linear Algebra Library for Sparse Matrices [closed]稀疏矩阵的线性代数库
【发布时间】: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


【解决方案1】:

不确定您要做什么,但请尝试SPAMS。这是一个良好且快速的稀疏建模实现。

【讨论】:

    【解决方案2】:

    3.6.2 版支持更多稀疏矩阵。

    【讨论】:

      【解决方案3】:

      从 3.4 版开始,Armadillo 初步支持稀疏矩阵。这可能会在未来的版本中变得更加完整。

      【讨论】:

        猜你喜欢
        • 2019-09-06
        • 2019-10-04
        • 2011-10-07
        • 1970-01-01
        • 2018-01-19
        • 1970-01-01
        • 1970-01-01
        • 2012-01-10
        • 1970-01-01
        相关资源
        最近更新 更多