Подтвердить что ты не робот

Что такое бесплатная библиотека с открытым исходным кодом BLAS/LAPACK для .net(С#)?

У меня есть проект, написанный на С#, где мне нужно делать различные линейные алгебраические операции над матрицами (например, LU-факторизация).

Поскольку программа является главным образом прототипом, созданным для подтверждения теории, реализация С# будет достаточной (по сравнению с возможно более быстрой С++), но мне все равно понравилась бы хорошая библиотека BLAS или LAPACK, чтобы сохранить мне некоторую кодировку.

Короче говоря, может ли кто-нибудь рекомендовать библиотеку BLAS или LAPACK с открытым исходным кодом для использования с .net?

С наилучшими пожеланиями Эгил.

Обновление: найдено Math.NET Numerics сегодня, выглядит интересно, у кого-нибудь есть опыт с этим?

4b9b3361

Ответ 1

AMD ACML - это бесплатная загрузка, но это только двоичный код, а не открытый исходный код и собственный код, а не .NET.

Производительность, как правило, превосходит код Netlib.org и, как правило, примерно такая же, как Intel MKL, что не является бесплатным IIRC.

Загрузка включает в себя один образец, демонстрирующий, как связать его с С#. Ничем не отличается от вызова любой другой библиотеки C или С++ из С#.

Библиотека реализует BLAS, LAPACK, FFT и RNG.

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

ИЗМЕНИТЬ, ЧТОБЫ ОТВЕТИТЬ В КОММЕНТАРИЙ:

На процессоре Intel AMD ACML будет работать примерно так же, как Intel MKL, но зависит от алгоритма, размеров матрицы, количества ядер, топологии и скорости памяти и т.д. и т.д. и т.д. Ваш пробег может отличаться. Единственный способ сказать наверняка - запустить свой собственный тест. В некоторых случаях ACML быстрее, чем MKL, даже на оборудовании Itel.

Либо один будет значительно быстрее, чем любая "наивная" реализация для больших матриц. Оба архивируются для использования нескольких потоков на многоядерных процессорах, а также имеют вручную настроенные ядра языка ассемблера и большую настройку поведения кэша на разных машинах.

Для матриц small производительность обычно не требуется, так как любой современный процессор может решить небольшой матикс всего за несколько миллисекунд, даже используя простейший код. В этом случае вы используете только библиотеку, чтобы избежать написания и отладки кода, который уже был написан сотни раз.

Ответ 2

Математическая библиотека DotNumerics - бесплатный проект с открытым исходным кодом, написанный на С#, и содержит перевод Lapack, Blas и Eispack на С#,

Ответ 3

BLIS-подобная библиотека Instantiation Software (BLIS) - это текущий золотой стандарт для библиотек BLAS с открытым исходным кодом. https://github.com/flame/blis Это не так быстро, как MKL (хотя и близко), но быстрее, чем OpenBLAS, вилка легендарного GotoBLAS, по существу всех процессоров (и намного быстрее на новейших архитектурах, включая Intel, AMD, и ARM). Он хорошо поддерживается.

ACML, упомянутый в другом ответе, больше не существует. В настоящее время AMD использует программное обеспечение с открытым исходным кодом как часть своего программного пакета ACL (AMD Compute Library). BLIS является частью этого стека программного обеспечения: https://developer.amd.com/amd-cpu-libraries/blas-library/.

Caviat: плакат является частью проекта BLIS. Вышеупомянутые претензии хорошо документированы.

(Комментарий добавлен позже: не заметил ".NET". К сожалению, BLIS еще не хорошо зарекомендовал себя для Windows.)

Ответ 4

Lutz Roeder имеет хороший порт с открытым исходным кодом Mapack.Net

Использовался в прошлом для различных проектов и нашел, что он работает с