Basic Linear Algebra Subprograms
| 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
Этот уровень содержит векторные операции вида:
операции скалярного произведения, взятия нормы вектора и другие операции.
Уровень 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.
- CLBlast
- Кросплатформенная библиотека (Windows, Linux, MacOS) C++, реализованная с помощью OpenCL может исполнятся на широком спектре графических процессоров или других устройств поддерживающих параллельные вычисления.
См. также
Ссылки
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.