Jump to content

ЛАПАК

(Перенаправлено с Лапака )
LAPACK (эталовая реализация Netlib)
Первоначальный выпуск 1992 год ; 32 года назад ( 1992 )
Стабильная версия
3.12.0 [1]  Отредактируйте это в Викиданных / 24 ноября 2023 г .; 8 месяцев назад ( 24 ноября 2023 г. )
Репозиторий
Написано в Фортран 90
Тип Библиотека программного обеспечения
Лицензия BSD-новый
Веб-сайт нетлиб .org /лапак /  Edit this on Wikidata

LAPACK линейной алгебры » числовой Пакет ) — это стандартная программная библиотека для линейной алгебры . Он предоставляет процедуры для решения систем линейных уравнений и линейных наименьших квадратов , задач на собственные значения и разложения по сингулярным значениям . Он также включает процедуры для реализации соответствующих матричных факторизаций, таких как LU , QR , разложение Холецкого и Шура . [2] LAPACK изначально был написан на FORTRAN 77 , но был перенесен на Fortran 90 в версии 3.2 (2008 г.). [3] Подпрограммы обрабатывают как вещественные , так и комплексные матрицы как с одинарной , так и с двойной точностью . LAPACK опирается на базовую реализацию BLAS , обеспечивая эффективные и портативные вычислительные блоки для своих процедур. [2] : «BLAS как ключ к портативности»

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

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

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

[ редактировать ]

Подпрограммы в LAPACK имеют соглашение об именах, которое делает идентификаторы очень компактными. Это было необходимо, поскольку первые стандарты Фортрана поддерживали идентификаторы длиной до шести символов, поэтому имена приходилось сокращать, чтобы уложиться в этот предел. [2] : «Схема именования»

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

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

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

Типы матриц в схеме именования LAPACK
Имя Описание
БД двудиагональная матрица
ОТ диагональная матрица
ГБ общая полосовая матрица
GE общая матрица (т. е. несимметричная , в некоторых случаях прямоугольная)
GG общие матрицы, обобщенная задача (т. е. пара общих матриц)
ГТ общая трехдиагональная матрица
полупансион ( комплексная ) матрица эрмитовой ленты
ОН ( комплексная ) Эрмитова матрица
ХГ верхняя матрица Хессенберга , обобщенная задача (т.е. матрица Хессенберга и треугольная матрица )
HP ( сложная ) Эрмитова , упакованная матрица хранения
HS верхняя матрица Хессенберга
НА ( действительная ) ортогональная матрица , упакованная матрица хранения
ИЛИ ( действительная ) ортогональная матрица
ПБ симметричная матрица или эрмитовой матрицы положительно определенная зона
PO симметричная матрица или эрмитова матрица положительно определенная
ПП симметричная матрица или эрмитова матрица, положительно определенная , упакованная матрица хранения
ПТ симметричная матрица или эрмитова матрица, положительно определенная трехдиагональная матрица
СБ ( действительная ) симметричная полосовая матрица
СП симметричная , упакованная матрица хранения
СТ ( действительная ) симметричная матрица трехдиагональная матрица
СИ симметричная матрица
туберкулез треугольная ленточная матрица
ТГ треугольные матрицы , обобщенная задача (т. е. пара треугольных матриц )
Город треугольная , упакованная матрица хранения
ТР треугольная матрица (или в некоторых случаях квазитреугольная)
ТЗ трапециевидная матрица
И ( комплексная ) унитарная матрица
ВВЕРХ ( сложная ) унитарная , упакованная матрица хранения

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

[ редактировать ]

Многие среды программирования сегодня поддерживают использование библиотек с привязкой к C , что позволяет напрямую использовать подпрограммы LAPACK при условии соблюдения некоторых ограничений. Кроме того, на основе LAPACK построены многие другие программные библиотеки и инструменты для научных и численных вычислений, такие как R , [6] МАТЛАБ , [7] и СкиПи . [8]

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

Реализации

[ редактировать ]

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

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

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

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

[ редактировать ]

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

Либфлейм
Плотная библиотека линейной алгебры. Имеет оболочку, совместимую с LAPACK. Может использоваться с любым BLAS, хотя BLIS является предпочтительной реализацией. [11]
Собственный
Библиотека заголовков для линейной алгебры. Имеет BLAS и частичную реализацию LAPACK для совместимости.
МАГМА
Проект «Матричная алгебра на графических процессорах и многоядерных архитектурах» (MAGMA) разрабатывает библиотеку плотной линейной алгебры, аналогичную LAPACK, но для гетерогенных и гибридных архитектур, включая многоядерные системы, ускоряемые с помощью GPGPU .
ПЛАЗМА
Проект «Параллельная линейная алгебра для масштабируемых многоядерных архитектур» (PLASMA) — это современная замена LAPACK для многоядерных архитектур. PLASMA — это программная платформа для разработки асинхронных операций и функций внеочередного планирования с помощью планировщика времени выполнения QUARK, который можно использовать для любого кода, выражающего свои зависимости с помощью направленного ациклического графа . [12]

См. также

[ редактировать ]
  1. ^ «Выпуск 3.12.0» . 24 ноября 2023 г. Проверено 19 декабря 2023 г.
  2. ^ Перейти обратно: а б с д и ж Андерсон, Э.; Бай, З.; Бишоф, К.; Блэкфорд, С.; Деммель, Дж. ; Донгарра, Дж. ; Дю Кроз, Ж.; Гринбаум, А .; Хаммарлинг, С.; Маккенни, А.; Соренсен, Д. (1999). Руководство пользователя LAPACK (Третье изд.). Филадельфия, Пенсильвания: Общество промышленной и прикладной математики. ISBN  0-89871-447-8 . Проверено 28 мая 2022 г.
  3. ^ «Примечания к выпуску LAPACK 3.2» . 16 ноября 2008 г.
  4. ^ «PLAPACK: Пакет параллельной линейной алгебры» . www.cs.utexas.edu . Техасский университет в Остине . 12 июня 2007 года . Проверено 20 апреля 2017 г.
  5. ^ "ЛИЦЕНЗИЯ.txt" . Нетлиб . Проверено 28 мая 2022 г.
  6. ^ «R: Библиотека LAPACK» . stat.ethz.ch. ​Проверено 19 марта 2022 г.
  7. ^ «ЛАПАК в MATLAB» . Справочный центр Mathworks . Проверено 28 мая 2022 г.
  8. ^ «Низкоуровневые функции LAPACK» . Руководство по SciPy v1.8.1 . Проверено 28 мая 2022 г.
  9. ^ «Руководства и пример кода» . разработчик.apple.com . Проверено 7 июля 2017 г.
  10. ^ «Руководства и пример кода» . разработчик.apple.com . Проверено 7 июля 2017 г.
  11. ^ «amd/libflame: Высокопроизводительная объектно-ориентированная библиотека для вычислений DLA» . Гитхаб . АМД. 25 августа 2020 г.
  12. ^ «ИКЛ» . icl.eecs.utk.edu . Проверено 7 июля 2017 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0d32de67415dd17ef83c687c3323da10__1703590740
URL1:https://arc.ask3.ru/arc/aa/0d/10/0d32de67415dd17ef83c687c3323da10.html
Заголовок, (Title) документа по адресу, URL1:
LAPACK - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)