What is a good free (open source) BLAS/LAPACK library for .net (C#)? [closed]

我是研究僧i 提交于 2019-12-02 19:28:24

AMD's ACML is a free download, but it is binary only, not open source, and native code, not .NET.

Performance is generally superior to the Netlib.org code, and generally roughly the same as Intel's MKL -- which is not free IIRC.

The download includes one sample that demonstrates how to bind it to C#. Not any different from calling any other C or C++ library from C#.

Library implements BLAS, LAPACK, FFTs, and RNGs.

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

EDIT TO RESPOND TO COMMENT:

On an Intel CPU, AMD's ACML will perform approximately as well as Intel's MKL, but it depends on the algorithm, matrix sizes, number of cores, memory topology and speed, etc. etc. etc. Your mileage may vary. The only way to tell for sure is to run your own benchmark. In some cases, ACML is faster than MKL even on Itel hardware.

Either one will be significantly faster than any "naive" implementation for large matrixes. Both are architected to use multiple threads on multicore processors, and have hand-tweaked assembly language kernels and a lot of tuning for the cache behaviours on various machines.

For small matrixes, performance is generally a don't-care, since any modern cpu can solve a small matix in just a few milliseconds, even using the simplest code. In that case, you're only using a library to avoid writing and debugging code that has been written hundreds of times already.

The math library DotNumerics is free/open source project written in C# and contains the translation of Lapack, Blas, and Eispack to C#.

Robert van de Geijn

The BLIS-like Library Instantiation Software (BLIS) is the current gold standard for open source BLAS libraries. https://github.com/flame/blis It is not as fast as MKL (although close) but faster than OpenBLAS, a fork of the legendary GotoBLAS, on essentially all CPUs (and much faster on the latest architectures including Intel, AMD, and ARM). It is well maintained.

ACML, mentioned in another answer, no longer exists. AMD now uses open source software as part of their ACL (AMD Compute Library) software stack. BLIS is what is part of that software stack: https://developer.amd.com/amd-cpu-libraries/blas-library/.

Caviat: poster is part of the BLIS project. The above claims are well-documented.

(Comment added later: Didn't notice the ".NET". Unfortunately BLIS is not yet supported well for Windows.)

Lutz Roeder has a good open source port Mapack.Net

Used in the past for various projects and found it eary to work with

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!