Basic Linear Algebra Subprograms

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

BLAS
Тип интерфейс программирования приложений и библиотека функций
Написана на Fortran и C
Первый выпуск 1979
Последняя версия 3.8.0 (12 ноября 2017)
Сайт netlib.org/blas/

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

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

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

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

Уровень 1

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

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

Уровень 2

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

решение для с треугольной матрицей и другие операции.

Уровень 3

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

решение для треугольной матрицы и другие операции. Этот уровень содержит широко используемую операцию 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.

См. также

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.