BLAS (англ. Basic Linear Algebra Subprograms — базовые подпрограммы линейной алгебры) — стандарт де-факто интерфейса программирования приложений для создания библиотек, выполняющих основные операции линейной алгебры, такие как умножение векторов и матриц.
Впервые опубликован в 1979 году, и использован для создания больших пакетов, например LAPACK. Интенсивно используемые в высокопроизводительных вычислениях, высокооптимизированные реализации интерфейса BLAS были разработаны производителями аппаратного обеспечения, такими как Intel, а также другими авторами (например, ATLAS — переносимый самооптимизирующийся BLAS).
Тест LINPACK Benchmark в своей работе основывается в большой степени на DGEMM, подпрограмме BLAS.
Функциональность BLAS делится на три уровня.
Этот уровень содержит векторные операции вида:
![{\displaystyle {\boldsymbol {y}}\leftarrow \alpha {\boldsymbol {x}}+{\boldsymbol {y}},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/be0417002a3422918cc4a29856fd1c4712e3e6dc)
операции скалярного произведения, взятия нормы вектора и другие операции.
Этот уровень содержит операции матрица-вектор вида:
![{\displaystyle {\boldsymbol {y}}\leftarrow \alpha A{\boldsymbol {x}}+\beta {\boldsymbol {y}},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8e8772ad9216d1c9444ed7b628ae6cf4a09cc337)
решение
для
с треугольной матрицей
и другие операции.
Содержит операции матрица-матрица вида:
![{\displaystyle C\leftarrow \alpha AB+\beta C,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1490ea5c89d3aadc8ecbd086811576643eb3555b)
решение
для треугольной матрицы
и другие операции. Этот уровень содержит широко используемую операцию GEMM (англ. General Matrix Multiply).
- refblas
- Официальная эталонная реализация из netlib. Доступны версии на C и Fortran 77.
- Accelerate
- Фреймворк от Apple для Mac OS X, включающий оптимизированные версии BLAS и LAPACK для процессоров PowerPC и Intel Core.
- ACML
- Основная математическая библиотека AMD, поддерживающая процессоры AMD Athlon и Opteron под Linux и Windows.
- ATLAS
- Самооптимизирующийся программный пакет линейной алгебры (англ. Automatically Tuned Linear Algebra Software), реализация интерфейса BLAS с открытым исходным кодом для C и Fortran 77.
- CUDA SDK
- NVIDIA CUDA SDK включает функциональность BLAS (cuBLAS) для написания программ на C для видеокарт серии GeForce 8, GeForce 200, GeForce 300 (Fermi).
- ESSL
- Библиотека инженерных и научных подпрограмм (англ. Engineering and Scientific Subroutine Library) от IBM, поддерживающая архитектуру PowerPC под AIX и Linux.
- libflame
- Реализация библиотеки линейной алгебры, включающей BLAS, проектом FLAME.
- Goto BLAS
- Реализация Кадзусигэ Гото.
- HP MLIB
- Математическая библиотека от HP, поддерживающая архитектуры IA-64, PA-RISC, x86 и Opteron под HP-UX и Linux.
- Intel MKL
- Основная математическая библиотека Intel (англ. Intel Math Kernel Library), поддерживающая процессоры Intel под Linux, Windows и Mac OS X.
- MathKeisan
- Математическая библиотека от NEC, поддерживающая архитектуру NEC SX под SUPER-UX, и Itanium под Linux.
- PDLIB/SX
- Математическая библиотека, находящаяся в общественном достоянии (англ. Public Domain Mathematical Library), от NEC для системы NEC SX-4.
- SCSL
- Программная библиотека для научных вычислений (англ. Scientific Computing Software Library) от SGI содержит реализации BLAS и LAPACK для рабочих станций SGI Irix.
- Sun Performance Linaray
- Sun Performance Library содержит оптимизированные BLAS и LAPACK для архитектур SPARC и AMD64 под Solaris 8, 9, и 10.
- uBLAS
- Библиотека шаблонных классов C++, обеспечивающая функциональность BLAS. Часть библиотеки Boost. В отличие от других реализаций uBLAS фокусируется больше на правильности алгоритмов, используя продвинутые возможности C++, чем на высокой производительности.
- GSL
- Научная библиотека GNU (англ. GNU Scientific Library) содержит кроссплатформенную неоптимизированную реализацию на C, которая распространяется под GNU GPL.
- CLBlast
- Кросплатформенная библиотека (Windows, Linux, MacOS) C++, реализованная с помощью OpenCL может исполнятся на широком спектре графических процессоров или других устройств поддерживающих параллельные вычисления.