【问题标题】:What is a good free (open source) BLAS/LAPACK library for .net (C#)? [closed]什么是 .net (C#) 的免费(开源)BLAS/LAPACK 库? [关闭]
【发布时间】:2010-11-29 01:54:23
【问题描述】:

我有一个用 C# 编写的项目,我需要对矩阵进行各种线性代数运算(如 LU 分解)。

由于该程序主要是为确认理论而创建的原型,因此 C# 实现就足够了(与可能更快的 C++ 相比),但我仍然想要一个好的 BLAS 或 LAPACK 库来节省我的一些编码。

长话短说,谁能推荐一个免费/开源的 BLAS 或 LAPACK 库以用于 .net?

最好的问候埃吉尔。

更新:今天找到Math.NET Numerics,看起来很有趣,有人有这方面的经验吗?

【问题讨论】:

  • 这正是我讨厌 stackoverflow.com 的地方。这种热心的监管会阻止人们提出有用的问题。你猜怎么着,我搜索了这个完全相同的问题,发现它被标记了。顺便说一句,这不是第一次了。

标签: .net matrix scientific-computing lapack blas


【解决方案1】:

类 BLIS 库实例化软件 (BLIS) 是当前开源 BLAS 库的黄金标准。 https://github.com/flame/blis 它没有 MKL 快(虽然接近),但比 OpenBLAS(传奇 GotoBLAS 的一个分支)快,基本上在所有 CPU 上(在包括 Intel、AMD 和 ARM 在内的最新架构上更快)。保养得很好。

另一个答案中提到的 ACML 不再存在。 AMD 现在使用开源软件作为其 ACL(AMD 计算库)软件堆栈的一部分。 BLIS 是该软件堆栈的一部分:https://developer.amd.com/amd-cpu-libraries/blas-library/

Caviat:海报是 BLIS 项目的一部分。上述声明有据可查。

(后来添加的评论:没有注意到“.NET”。不幸的是,Windows 还没有很好地支持 BLIS。)

【讨论】:

    【解决方案2】:

    数学库DotNumerics 是用 C# 编写的免费/开源项目,包含从 Lapack、Blas 和 Eispack 到 C# 的翻译。

    【讨论】:

    • Lapack 和 Blas 基本都是接口规范。如果 DotNumerics 翻译了错误的实现,即 netlib 参考标准,那么这没什么价值。请澄清他们是否使用了优化的实现,如果是,基于什么。
    【解决方案3】:

    AMD 的 ACML 是免费下载,但它只是二进制文件,不是开源的,是原生代码,不是 .NET。

    性能通常优于 Netlib.org 代码,并且与英特尔的 MKL 大致相同——它不是免费的 IIRC。

    下载包含一个示例,演示如何将其绑定到 C#。与从 C# 调用任何其他 C 或 C++ 库没有任何不同。

    库实现了 BLAS、LAPACK、FFT 和 RNG。

    http://developer.amd.com/cpu/Libraries/acml/downloads/pages/default.aspx

    编辑回复评论:

    在 Intel CPU 上,AMD 的 ACML 的性能大约与 Intel 的 MKL 一样,但它取决于算法、矩阵大小、内核数量、内存拓扑和速度等等等。 。 你的旅费可能会改变。唯一可以确定的方法是运行您自己的基准测试。在某些情况下,即使在 Itel 硬件上,ACML 也比 MKL 更快。

    对于 large 矩阵,任何一个都将比任何“幼稚”实现要快得多。两者的架构都是为了在多核处理器上使用多线程,并具有手动调整的汇编语言内核和对各种机器上的缓存行为进行大量调整。

    对于 small 矩阵,性能通常是无关紧要的,因为任何现代 cpu 都可以在几毫秒内解决小矩阵,即使使用最简单的代码也是如此。在这种情况下,您只是使用库来避免编写和调试已经编写了数百次的代码。

    【讨论】:

    • 因此,如果我的目标是 Intel CPU,AMDS ACML 的性能将不如 Intels MLK,但仍然比简单的 C# 实现好得多?
    • 嗯,您的编辑与here 的答案完全矛盾。他们还提到了良好的sources 那里......不确定这个编辑是正确的答案......但你是对的,至少 ACML 是免费的......
    【解决方案4】:

    Lutz Roeder 有一个很好的开源端口Mapack.Net

    过去曾用于各种项目并发现它很容易使用

    【讨论】:

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