什么是.net(C#)的免费(开源)BLAS/LAPACK库?

Egi*_*sen 15 .net matrix scientific-computing blas lapack

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

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

长话短说,任何人都可以推荐免费/开源BLAS或LAPACK库与.net一起使用吗?

最好的问候Egil.

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

Die*_*nte 11

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将执行大约以及英特尔的MKL,但它依赖于算法,矩阵规模,核心,内存拓扑结构和速度,等等,等等的数量等.你的情况可能会有所不同.要确定的唯一方法是运行自己的基准测试.在某些情况下,即使在Itel硬件上,ACML也比MKL快.

对于大型矩阵,任何一个都将明显快于任何"天真"的实现.两者都被设计为在多核处理器上使用多个线程,并且具有手动调整的汇编语言内核以及针对各种机器上的缓存行为的大量调整.

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


小智 5

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


小智 5

类似 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。)