ЛАПАК - LAPACK

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

ЛАПАК ("Lв ухе Аlgebra Упаковкавозраст ") является стандартом библиотека программного обеспечения для числовая линейная алгебра. Это обеспечивает распорядки для решения системы линейных уравнений и линейный метод наименьших квадратов, проблемы с собственными значениями, и разложение по сингулярным числам. Он также включает процедуры для реализации связанных матричные факторизации такие как LU, QR, Холецкий и Разложение Шура. LAPACK изначально был написан на FORTRAN 77, но переехал в Фортран 90 в версии 3.2 (2008 г.).[1] Подпрограммы обрабатывают оба настоящий и сложный матрицы в обоих не замужем и двойная точность.

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

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

Схема именования

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

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

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

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

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

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

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

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

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

Реализации

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

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

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

Похожие проекты

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

Libflame
Плотная библиотека линейной алгебры. Имеет оболочку, совместимую с LAPACK. Может использоваться с любым BLAS, хотя БЛИС является предпочтительной реализацией.[5]
Эйген
Библиотека заголовков для линейной алгебры. Имеет BLAS и частичную реализацию LAPACK для совместимости.
МАГМА
В проекте Matrix Algebra on GPU and Multicore Architectures (MAGMA) разрабатывается библиотека плотной линейной алгебры, аналогичная LAPACK, но для гетерогенных и гибридных архитектур, включая многоядерные системы, ускоренные с помощью GPGPU.
ПЛАЗМА
Параллельная линейная алгебра для масштабируемых многоядерных архитектур (PLASMA) - это современная замена LAPACK для многоядерных архитектур. PLASMA - это программная структура для разработки асинхронных операций и функций внеочередного планирования с помощью планировщика времени выполнения под названием QUARK, который может использоваться для любого кода, который выражает свои зависимости с помощью ориентированный ациклический граф.[6]

Смотрите также

использованная литература

  1. ^ «Примечания к выпуску LAPACK 3.2». 16 ноября 2008 г.
  2. ^ "PLAPACK: Пакет параллельной линейной алгебры". www.cs.utexas.edu. Техасский университет в Остине. 12 июня 2007 г.. Получено 20 апреля 2017.
  3. ^ «Руководства и образец кода». developer.apple.com. Получено 2017-07-07.
  4. ^ «Руководства и образец кода». developer.apple.com. Получено 2017-07-07.
  5. ^ "amd / libflame: высокопроизводительная объектно-ориентированная библиотека для вычислений DLA". GitHub. AMD. 25 августа 2020.
  6. ^ «ICL». icl.eecs.utk.edu. Получено 2017-07-07.

дальнейшее чтение

внешние ссылки