Введение

Программная библиотека для численной линейной алгебры

LAPACK ("Пакет линейной алгебры") – это стандартная программная библиотека для численной линейной алгебры. Она предоставляет подпрограммы для решения систем линейных уравнений и задач наименьших квадратов, вычисления собственных значений и сингулярного разложения. Также в неё включены подпрограммы для реализации соответствующих матричных разложений, таких как LU, QR, Холецкого и Шура. LAPACK изначально был написан на FORTRAN 77, но перешёл на Fortran 90 в версии 3.2 (2008). Подпрограммы работают как с вещественными, так и с комплексными матрицами одинарной и двойной точности. LAPACK опирается на базовую реализацию BLAS для обеспечения эффективных и переносимых вычислительных блоков для своих подпрограмм. Netlib LAPACK распространяется под трёхпунктной BSD-лицензией, являющейся разрешительной лицензией свободного программного обеспечения с небольшим количеством ограничений.

Реализация

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

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