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

Basic Linear Algebra Subprograms

Матеріал з Вікіпедії — вільної енциклопедії.

Basic Linear Algebra Subprograms (BLAS) (укр. Основні підпрограми з лінійної алгебри) — встановлений де факто стандарт інтерфейсу бібліотек підпрограм, призначених для виконання основних операцій лінійної алгебри, таких як, наприклад, множення матриць та векторів. Уперше такі підпрограми були опубліковані в 1979 році. На їх основі будуються більші пакети, такі як LAPACK. Конкретні втілення протоколу у вигляді бібліотек розробляються як провідними лідерами комп'ютерної технології, наприклад, Intelом, так і іншими авторами. Підпрограми лінійної алгебри широко використовуються в застосуваннях, які вимагають інтенсивних обчислень, а тому вимагають особливо уважної розробки й оптимізації. Наприклад, ATLAS — варіант BLAS, який може легко переноситися з однієї платформи на іншу й оптимізуватися для використання на машинах конкретної архітектури.

Бенчмарк LINPACK сильно залежить від швидкості виконання підпрограми DGEMM, яка входить до BLAS.

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

Функціональність BLAS розбивається на три рівні

Рівень 1

Цей рівень містить операції загального вигляду

а також скалярного добутку, норми вектора та деякі інші.

Рівень 2

Цей рівень містить операції дій між векторами й матрицями загального вигляду

а також підпрограми знаходження розв'язку рівняння для трикутної матриці .

Рівень 3

Цей рівень містить операції з матрицями вигляду

а також розв'язок рівняння для трикутної матриці та інші підпрограми. Зокрема сюди входить популярна у використаннях операція перемноження матриць.

Реалізації

Accelarate
Платформа від Apple створена для Mac OS X та iOS, яка містить адаптовані версії BLAS і LAPACK.[1] [2]
C++ AMP BLAS
Бібліотека C++ AMP BLAS є відкритою реалізацією BLAS для Майкрософтівського розширення Visual C++.[3]
Goto BLAS
Опублікована під ліцензією BSD реалізація BLAS, адаптована під Intel Nehalem/Atom, VIA Nanoprocessor, AMD Opteron.[4]
GSL
GNU Scientific Library бібліотека обчислювальних методів для мов C та С++, що розповсюджується під ліцензією GNU General Public License.[5]
Intel MKL
Інтелівська математична бібліотека (Math Kernel Library), розрахована під x86 32-бітну і 64-бітну архітектуру. Включає оптимізації для Intel Pentium, Core та Intel Xeon процесорів і Intel Xeon Phi; підтримується Linux, Windows і Mac OS X.[6]
Netlib BLAS
Офіційна реалізація з netlib. Існують версії на мовах програмування C та Fortran 77