Basic Linear Algebra Subprograms

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
(перенаправлено с «BLAS»)
BLAS
Написана на Fortran и C
Первый выпуск 1979
Последняя версия 3.10.0 (29 июня 2021)
Ссылки
Сайт netlib.org/blas/

BLAS (англ. Basic Linear Algebra Subprograms — базовые подпрограммы линейной алгебры) — стандарт де-факто интерфейса программирования приложений для создания библиотек, выполняющих основные операции линейной алгебры, такие как умножение векторов и матриц.

Впервые опубликован в 1979 году, и использован для создания больших пакетов, например LAPACK. Интенсивно используемые в высокопроизводительных вычислениях, высокооптимизированные реализации интерфейса BLAS были разработаны производителями аппаратного обеспечения, такими как Intel, а также другими авторами (например, ATLAS — переносимый самооптимизирующийся BLAS).

Тест LINPACK Benchmark в своей работе основывается в большой степени на DGEMM, подпрограмме BLAS.

Функциональность

Функциональность BLAS делится на три уровня.

Уровень 1

Этот уровень содержит векторные операции вида:

[math]\displaystyle{ \boldsymbol{y} \leftarrow \alpha \boldsymbol{x} + \boldsymbol{y}, }[/math]

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

Уровень 2

Этот уровень содержит операции матрица-вектор вида:

[math]\displaystyle{ \boldsymbol{y} \leftarrow \alpha A \boldsymbol{x} + \beta \boldsymbol{y}, }[/math]

решение [math]\displaystyle{ T \boldsymbol{x} = \boldsymbol{y} }[/math] для [math]\displaystyle{ x }[/math] с треугольной матрицей [math]\displaystyle{ T }[/math] и другие операции.

Уровень 3

Содержит операции матрица-матрица вида:

[math]\displaystyle{ C \leftarrow \alpha A B + \beta C, }[/math]

решение [math]\displaystyle{ B \leftarrow \alpha T^{-1} B }[/math] для треугольной матрицы [math]\displaystyle{ T }[/math] и другие операции. Этот уровень содержит широко используемую операцию 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 может исполнятся на широком спектре графических процессоров или других устройств поддерживающих параллельные вычисления.

См. также

Ссылки