LAPACK

редактировать
Программное обеспечение библиотека числовой линейной алгебры
LAPACK
LAPACK logo.svg
Первоначальный выпуск1992 г.; 28 лет назад (1992 г.)
Стабильный выпуск 3.9.0 / 21 ноября 2019 г.; 11 месяцев назад (2019-11-21)
Написано наFortran 90
Тип Программная библиотека
Лицензия BSD-new
Веб-сайтwww.netlib.org / lapack /

LAPACK ("Linear A lgebra Pack age ") - стандартная библиотека программного обеспечения для числовая линейная алгебра. Предоставляет процедуры для решения систем линейных уравнений и линейных наименьших квадратов, задач на собственные значения и разложение по сингулярным числам. Он также включает процедуры для реализации связанных матричных факторизаций, таких как LU, QR, разложение Холецкого и разложение Шура. LAPACK изначально был написаны на FORTRAN 77, но перемещены в Fortran 90 в версии 3.2 (2008). Подпрограммы обрабатывают как вещественные, так и комплексные матрицы в и single, и двойной точности.

LAPACK был разработан как преемник линейных уравнений и линейных программ наименьших квадратов LINPACK и подпрограмм собственных значений EISPACK. LINPA CK, написанный в 1970-х и 1980-х годах, был разработан для работы на современных в то время векторных компьютерах с общей памятью. LAPACK, напротив, был разработан для эффективного использования кэшей в современных архитектурах на основе кеша и, таким образом, может работать на порядки быстрее, чем LINPACK на таких машинах, при условии хорошо настроенного BLAS реализация. LAPACK также был расширен для работы в системах с распределенной памятью в более поздних пакетах, таких как ScaLAPACK и PLAPACK.

LAPACK лицензируется в соответствии с тремя пунктами BSD style license, разрешающая лицензия свободных программ с некоторыми ограничениями.

Содержание
  • 1 Схема именования
  • 2 Использование с другими языками программирования
  • 3 Реализации
    • 3.1 Подобные проекты
  • 4 См. Также
  • 5 Ссылки
  • 6 Дополнительная литература
  • 7 Внешние ссылки
Схема именования

Подпрограммы в LAPACK имеют соглашение об именах, которое делает идентификаторы очень компактными. Это было необходимо, поскольку первые стандарты Fortran поддерживали только идентификаторы длиной до шести символов, поэтому имена пришлось сократить, чтобы соответствовать этому пределу.

Имя подпрограммы LAPACK имеет вид pmmaaa, где:

  • p- однобуквенный код, обозначающий тип используемых числовых констант. S, Dобозначают действительную арифметику с плавающей запятой соответственно с одинарной и двойной точностью, а Cи Zобозначают комплексную арифметику с соответственно одинарная и двойная точность. В более новой версии, LAPACK95, используются общие подпрограммы , чтобы избежать необходимости явно указывать тип данных.
  • mm- это двухбуквенный код, обозначающий тип матрицы, ожидаемой алгоритмом. Коды для различных типов матриц приведены ниже; фактические данные хранятся в другом формате в зависимости от конкретного вида; например, когда задан код DI, подпрограмма ожидает вектор длины n, содержащий элементы по диагонали, а когда задан код GE, подпрограмма ожидает массив размером n × n, содержащий элементы матрицы.
  • aaa- это однобуквенный или трехбуквенный код, описывающий фактический алгоритм, реализованный в подпрограмме, например SVобозначает подпрограмму для решения линейной системы, а Rобозначает обновление ранга 1.

Например, подпрограмма для решения линейной системы с общая (неструктурированная) матрица, использующая реальную арифметику двойной точности, называется DGESV.

Типы матриц в схеме именования LAPACK
ИмяОписание
BDдвудиагональная матрица
DIдиагональная матрица
GBобщая полосовая матрица
GEобщая матрица (т. Е. несимметричная, в некоторых случаях прямоугольные)
GGобщие матрицы, обобщенная задача (т. Е. Пара общих матриц)
GTобщая трехдиагональная матрица
HB(комплексный ) эрмитова полосовая матрица
HE(комплексная ) эрмитова матрица
HGверхняя матрица Гессенберга, обобщенная задача (т.е. треугольная матрица Хессенберга и )
HP(комплексная ) Эрмитова, матрица упакованной памяти
HSверхняя матрица Хессенберга
OP(вещественная ) ортогональная матрица, упакованная матрица хранения
OR(вещественное ) ортогональная матрица
PBсимметричная матрица или Эрмитова матрица положительно определенная полоса
POсимметричная матрица или эрмитова матрица положительно определенная
PPсимметричная матрица или эрмитова матрица положительно определенная, упакованная матрица хранения
PTсимметричная матрица или эрмитова матрица положительно определенная трехдиагональная матрица
SB(вещественная ) симметричная матрица полос
SPсимметричная, упакованная матрица хранения
ST(вещественная ) симметричная матрица трехдиагональная матрица
SYсимметричная матрица
TBтреугольная полосная матрица
TGтреугольные матрицы, обобщенная задача (т. е. пара треугольных матриц )
TPтреугольных, упакованная матрица хранения
TRтреугольная матрица (или в некоторых случаях квазитреугольная)
TZтрапециевидная матрица
UN(comp lex ) унитарная матрица
UP(комплексная ) унитарная, матрица упакованного хранения

Подробную информацию об этой схеме можно найти в разделе Схема именования в Руководстве пользователя LAPACK.

Использование с другими языками программирования

Сегодня многие среды программирования поддерживают использование библиотек с привязкой C. Подпрограммы LAPACK могут использоваться как функции C, если соблюдаются некоторые ограничения.

Также доступны несколько альтернативных языковых привязок :

Реализации

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

Accelerate
Apple для macOS и iOS, которая включает настроенные версии BLAS и LAPACK.
Netlib LAPACK
Официальный LAPACK.
Netlib ScaLAPACK
Масштабируемый (многоядерный) LAPACK, построенный на основе PBLAS.
Intel MKL
Математические процедуры Intel для своих процессоров x86.
OpenBLAS
Повторная реализация BLAS и LAPACK с открытым исходным кодом.

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

Подобные проекты

Эти проекты предоставляют функциональность, аналогичную LAPACK, но основной интерфейс отличается от LAPACK:

Libflame
Плотная библиотека линейной алгебры. Имеет оболочку, совместимую с LAPACK. Может использоваться с любым BLAS, хотя BLIS является предпочтительной реализацией.
Eigen
Библиотека заголовков для линейной алгебры. Имеет BLAS и частичную реализацию LAPACK для совместимости.
MAGMA
В проекте Matrix Algebra на GPU и многоядерных архитектурах (MAGMA) разрабатывается библиотека плотной линейной алгебры, аналогичная LAPACK, но для гетерогенных и гибридных архитектур включая многоядерные системы, ускоренные с помощью GPGPU.
PLASMA
(PLASMA). Проект является современной заменой LAPACK для многоядерных архитектур. PLASMA - это программная среда для разработки асинхронных операций и функций внеочередного планирования с помощью планировщика времени выполнения под названием QUARK, который можно использовать для любого кода, который выражает свои зависимости с помощью направленного ациклического графа.
См. Также
  • Бесплатно и портал программного обеспечения с открытым исходным кодом
Ссылки
Дополнительная литература
Внешние ссылки
Последняя правка сделана 2021-05-26 08:16:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте