Сравнение библиотек линейной алгебры - Comparison of linear algebra libraries

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

Плотная линейная алгебра

Общая информация

СоздательЯзыкПервый публичный релизПоследняя стабильная версияДоступность исходного кодаЛицензияПримечания
АЛГЛИБ[1]Проект ALGLIBC ++, C #, FreePascal, VBA20063.12.0 / 08.2017СвободныйGPL / коммерческийБиблиотека численного анализа общего назначения с интерфейсами C ++ и C #.
АТЛАСR. Clint Whaley et al.C20013.10.3 / 07.2016СвободныйBSDАвтоматически настраиваемая реализация BLAS. Также включает разложения LU и Холецкого.
ДлибДэвис Э. КингC ++200619.7 / 09/2017СвободныйСпособствовать ростуБиблиотека шаблонов C ++; связывается с оптимизированным BLAS, таким как Intel MKL; Включает разложение матриц, нелинейные решатели и инструменты машинного обучения
Научная библиотека GNU[2]Проект GNUC, C ++19962.5 / 06.2018СвободныйGPLБиблиотека численного анализа общего назначения. Включает некоторую поддержку линейной алгебры.
Цифровые библиотеки IMSLПрограммное обеспечение Rogue WaveC, Java, C #, Фортран, Python1970многие компонентыНесвободныйПроприетарныйБиблиотека численного анализа общего назначения.
ЛАПАК[3][4]Фортран19923.9.0 / 11.2019Свободный3-пункт BSDБиблиотека числовой линейной алгебры с долгой историей
MKLIntelC ++, Фортран20032020.0 обновление 1 / 01.2020НесвободныйУпрощенная лицензия на программное обеспечение IntelБиблиотека численного анализа оптимизирована для процессоров Intel
Math.NET ЧислаК. Рюэгг, М. Куда и др.C #20093.20 / 07.2017СвободныйЛицензия MITБиблиотека численного анализа C # с поддержкой линейной алгебры
Цифровая библиотека NAGГруппа численных алгоритмовC, Фортран1971многие компонентыНесвободныйПроприетарныйБиблиотека численного анализа общего назначения.
NMathПрограммное обеспечение CenterSpaceC #20037.1 / декабрь 2019НесвободныйПроприетарныйМатематические и статистические библиотеки для .NET Framework
SciPy[5][6][7]ЗадумалсяPython20011.0.0 / 10.2017СвободныйBSDНа основе Python
ЭйгенБенуа ЖакобC ++20083.3.7 / 12.2018СвободныйMPL2Eigen - это библиотека шаблонов C ++ для линейной алгебры: матриц, векторов, числовых решателей и связанных алгоритмов.
Armadillo[8][9]НИКТАC ++20099.200 / 10.2018СвободныйЛицензия Apache 2.0Библиотека шаблонов C ++ для линейной алгебры; включает различные декомпозиции и факторизации; синтаксис (API ) похоже на MATLAB.
librsbМишель МартонеC, Фортран, M420111.2 / сентябрь 2016 г.СвободныйGPLВысокопроизводительные многопоточные примитивы для больших разреженных матриц. Поддержка операций для итерационных решателей: умножение, треугольное решение, масштабирование, ввод-вывод матрицы, рендеринг матрицы. Множество вариантов: например: симметричный, эрмитовый, комплексный, четырехкратной точности.

Типы матриц и операции

Типы матриц (специальные типы, такие как двунаправленная / трехдиагональная, не перечислены):

  • Настоящий - общие (несимметричные) действительные
  • Сложный - общий (несимметричный) комплекс
  • СПД - симметричный положительно определенный (действительный)
  • HPD - эрмитово положительно определенное (комплексное)
  • SY - симметричный (настоящий)
  • ОН - Эрмитский (комплексный)
  • BND - группа

Операции:

НастоящийСложныйСПДHPDSYОНBNDTFИЗEVPСВДGEVPGSVD
АЛГЛИБдадададаНетНетНетдададададаНет
АТЛАСдадададаНетНетНетдаНетНетНетНетНет
ДлибдадададададаНетдадададаНетНет
Научная библиотека GNUдадададаНетНетНетдададададаНет
ILNumerics.NetдадададаНетНетНетдадададаНетНет
Цифровые библиотеки IMSLдадададаНетНетдадаНетдададаНет
ЛАПАКдадададададададададададада
MKLдадададададададададададада
Цифровая библиотека NAGдадададададададададададада
NMathдададададададададададаНетНет
SciPy (Пакеты Python)дадададаНетНетНетдадададаНетНет
ЭйгендадададададададададададаНет
ArmadilloдадададададаНетдададададаНет

Рекомендации

  1. ^ Бочканов, С., Быстрицкий, В. (2011). ALGLIB - кроссплатформенная библиотека для численного анализа и обработки данных. Проект ALGLIB. Новгород, Россия.
  2. ^ Гоф, Б. (2009). Справочное руководство по научной библиотеке GNU. Network Theory Ltd.
  3. ^ Андерсон, Э., Бай, З., Бишоф, К., Блэкфорд, С., Донгарра, Дж., Дю Кроз, Дж., ... и Соренсен, Д. (1999). LAPACK Руководство пользователя. СИАМ.
  4. ^ Андерсон, Э., Бай, З., Донгарра, Дж., Гринбаум, А., МакКенни, А., Дю Кроз, Дж., ... и Соренсен, Д. (1990, ноябрь). LAPACK: портативная библиотека линейной алгебры для высокопроизводительных компьютеров. В материалах конференции ACM / IEEE 1990 г. по суперкомпьютерам (стр. 2–11). IEEE Computer Society Press.
  5. ^ Джонс, Э., Олифант, Т., и Петерсон, П. (2001). SciPy: научные инструменты с открытым исходным кодом для Python.
  6. ^ Брессерт, Э. (2012). SciPy и NumPy: обзор для разработчиков. "O'Reilly Media, Inc.".
  7. ^ Бланко-Сильва, Ф. Дж. (2013). Изучение SciPy для числовых и научных вычислений. Packt Publishing Ltd.
  8. ^ Сандерсон, К., и Кертин, Р. (2016). Armadillo: основанная на шаблонах библиотека C ++ для линейной алгебры. Журнал программного обеспечения с открытым исходным кодом, 1 (2), 26.
  9. ^ Сандерсон, К. (2010). Armadillo: библиотека линейной алгебры C ++ с открытым исходным кодом для быстрого прототипирования и экспериментов с интенсивными вычислениями (стр. 84). Технический отчет, NICTA.

внешняя ссылка