Basic Linear Algebra Subprograms
Basic Linear Algebra Subprograms (BLAS) (укр. Основні підпрограми з лінійної алгебри) - встановлений де факто стандард інтерфейсу бібліотек підпрограм, призначених для виконання основних операцій лінійної алгебри, такихї як, наприклад, множення матриць та векторів. Уперше такі підпрограми були опубліковані в 1979 році. На їх основі будуються більші пакунки, такі як LAPACK. Конкретні втілення протоколу у вигляді бібліотек розробляються як провідними лідерами комп'ютерної технології, наприклад, Інтелом, так і іншими авторами. Підпограми лінійної алгебри широко використовуються в застосуваннях, які вимагають інтенсивних обчислень, а тому вимагають особливо уважної розробки й оптимізації. Наприклад, ATLAS - варіант BLAS, який може легко переноситися з однієї платформи на іншу й оптимізуватися для використання на машинах конкретної архітектури.
Бенчмарк LINPACK сильно залежить від швидкості виконання підпрограми DGEMM, яка входить до BLAS.
Функціональність
Функціональність BLAS розбивається на три рівні
Рівень 1
Цей рівень містить операції загального вигляду
а також скалярного добутку, норми вектора та деякі інші.
Рівень 2
Цей рівень містить операції дій між векторами й матрицями загального вигляду
а також підпрограми знаходження розв'язку рівняння для трикутної матриці .
Рівень 3
Цей рівень містить операції з матрицями вигляду
а також розв'язок рівняння для трикутної матриці та інше підпрограми. Зокрема сюди входить популярна у використаннях операція перемноження матриць.
Впровадження
- refblas
- Офіційна реалізація з netlib. Існують ферсії на мовах програмування C та Fortran 77
- Accelerate
- Apple Computer's framework for Mac OS X, which includes tuned versions of BLAS and LAPACK for both PowerPC and Intel Core processors.[2]
ACML
- The AMD Core Math Library, supporting the AMD Athlon and Opteron CPUs under Linux and Windows.[3]
ATLAS
- Automatically Tuned Linear Algebra Software, an open source implementation of BLAS APIs for C and Fortran 77.[4]
CUDA SDK
- The NVIDIA CUDA SDK includes BLAS functionality for writing C programs that runs on GeForce 8 Series graphics cards.
ESSL
- IBM's Engineering and Scientific Subroutine Library, supporting the PowerPC architecture under AIX and Linux.[5]
libflame
- FLAME project implementation of dense linear algebra library, including BLAS. [6]
Goto BLAS
- Kazushige Goto's implementation of BLAS.[7]
HP MLIB
- HP's Math library, supporting IA-64, PA-RISC, x86 and Opteron architecture under HPUX and Linux.
Intel MKL
- The Intel Math Kernel Library, supporting the Intel Pentium and Itanium CPUs under Linux, Windows and Mac OS X.[8]
MathKeisan
- NEC's math library, supporting NEC SX architecture under SUPER-UX, and Itanium under Linux. [9]
PDLIB/SX
- NEC's Public Domain Mathematical Library for the NEC SX-4 system.[10]
SCSL
- SGI's Scientific Computing Software Library contains BLAS and LAPACK implementations for SGI's Irix workstations.[11]
Sun Performance Linaray
- Optimized BLAS and LAPACK for SPARC and AMD64 architectures under Solaris 8, 9, and 10.[12]
uBLAS
- A generic C++ template class library providing BLAS functionality. Part of the Boost library. Note that, unlike other implementations, uBLAS focuses on correctness of the algorithms using advanced C++ features, rather than high performance. [13]
GSL
- The GNU Scientific Library Contains a multi-platform implementation in C which is distributed under the GNU General Public License.