Перейти до вмісту

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.