Basic Linear Algebra Subprograms
Basic Linear Algebra Subprograms (BLAS) (укр. Основні підпрограми з лінійної алгебри) — встановлений де факто стандарт інтерфейсу бібліотек підпрограм, призначених для виконання основних операцій лінійної алгебри, таких як, наприклад, множення матриць та векторів. Уперше такі підпрограми були опубліковані в 1979 році. На їх основі будуються більші пакети, такі як LAPACK. Конкретні втілення протоколу у вигляді бібліотек розробляються як провідними лідерами комп'ютерної технології, наприклад, Intelом, так і іншими авторами. Підпрограми лінійної алгебри широко використовуються в застосуваннях, які вимагають інтенсивних обчислень, а тому вимагають особливо уважної розробки й оптимізації. Наприклад, ATLAS — варіант BLAS, який може легко переноситися з однієї платформи на іншу й оптимізуватися для використання на машинах конкретної архітектури.
Бенчмарк LINPACK сильно залежить від швидкості виконання підпрограми DGEMM, яка входить до BLAS.
Функціональність
Функціональність BLAS розбивається на три рівні
Рівень 1
Цей рівень містить операції загального вигляду
а також скалярного добутку, норми вектора та деякі інші.
Рівень 2
Цей рівень містить операції дій між векторами й матрицями загального вигляду
а також підпрограми знаходження розв'язку рівняння для трикутної матриці .
Рівень 3
Цей рівень містить операції з матрицями вигляду
а також розв'язок рівняння для трикутної матриці та інші підпрограми. Зокрема сюди входить популярна у використаннях операція перемноження матриць.
Реалізації
- Accelarate
- C++ AMP BLAS
-
- Бібліотека C++ AMP BLAS є відкритою реалізацією BLAS для Майкрософтівського розширення Visual C++.[3]
- Goto BLAS
- 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