关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
3年前关闭。
Improve this question
我有一个用 C# 编写的项目,我需要对矩阵进行各种线性代数运算(如 LU 分解)。
由于该程序主要是为确认理论而创建的原型(prototype),因此 C# 实现就足够了(与可能更快的 C++ 相比),但我仍然想要一个好的 BLAS 或 LAPACK 库来为我节省一些编码。
长话短说,任何人都可以推荐一个免费/开源的 BLAS 或 LAPACK 库来与 .net 一起使用吗?
最好的问候埃吉尔。
更新:找到 Math.NET Numerics今天,看起来很有趣,有人有这方面的经验吗?
最佳答案
AMD 的 ACML 是 免费下载,但它只是二进制文件,不是开源的,是 native 代码,不是 .NET。
性能通常优于 Netlib.org 代码,并且通常与英特尔的 MKL 大致相同——这不是免费的 IIRC。
下载包含一个示例,演示如何将其绑定(bind)到 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 快。
对于,任何一个都比任何“幼稚”的实现都要快得多。大矩阵。两者的架构都是为了在多核处理器上使用多个线程,并且具有手动调整的汇编语言内核和对各种机器上的缓存行为进行大量调整。
对于 小 矩阵,性能通常是无关紧要的,因为任何现代 cpu 都可以在几毫秒内解决一个小矩阵,即使使用最简单的代码。在这种情况下,您只是使用库来避免编写和调试已经编写了数百次的代码。
关于.net - 什么是 .net (C#) 的免费(开源)BLAS/LAPACK 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1437501/