【问题标题】:C library for linear algebra [closed]用于线性代数的 C 库 [关闭]
【发布时间】:2011-08-29 09:53:43
【问题描述】:

请给我一些关于线性代数(矩阵代数、特征值、特征向量等)的高性能 C 库的提示。可以是开源的也可以是闭源的。

【问题讨论】:

  • 谁曾经努力编写这样的库并使其性能降低?购物问题在 SE 上是题外话。
  • GSL 做到了。他们制作了一个非常可移植且功能广泛的库,但在多平台方式和平台依赖方式方面都没有很好地优化它。

标签: c linear-algebra


【解决方案1】:
  1. CLAPACK (f2c'ed version of LAPACK)
  2. GSL - GNU Scientific Library

编辑感谢来自 osgx 的 cmets:

  • CLAPACK 是在底层使用非常高性能的 BLAS 库的库,与 ATLAS 等其他库一样。
  • GSL 是一个独立的 C 库,速度不如任何基于 BLAS 的库。然而,它的性能仍然相当好(虽然不是非常好)并且经常被使用;主要是因为它的便携性。

我知道 LAPACK 和 GSL,我可以同时推荐它们。 LAPACK 是非常底层的库,GSL 使用起来可能更舒服,但说到性能好——它是基于 BLAS 的库。

【讨论】:

  • 当然,还有分解等。参见:netlib.org/lapack/lawn41/node111.html(以及其他文档)。
  • SVD 和特征向量哪个更好/更快?
  • 良好的 BLAS 库(基本矩阵矩阵;向量矩阵;向量向量运算),例如ATLAS 或 GotoBLAS 或 Intel MKL + 一些使用 BLAS 的 LAPACK(所有 BLAS 库具有相同的接口)。 GSL 不会使用高性能的 BLAS。
  • 其实LAPACK主要是基于BLAS(3级)。我没有使用 ATLAS,但据我所知,它的性能与 LAPACK 相当。
  • 所以我们有一个约定:任何基于 BLAS 的库都适合高性能计算。 GSL 是更高级别的独立库,但仍然适用于许多情况(但并非全部)。
【解决方案2】:

ATLAS,也许吧?

编辑:如果您对 C++ 持开放态度,则绝对应该检查 Eigen,根据基准,它是一个非常简洁的库,而且速度也非常快。

【讨论】:

    【解决方案3】:

    同样,如果您真的在寻找/打开现代 C++ 代码,Armadillo 正变得非常流行/流行。 另请参阅他们自己的 benchmarking 对抗 IT++ 和 Newmat。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多