Basic Linear Algebra Subprograms

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

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

Зміст

Функціональність[ред.]

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

Рівень 1[ред.]

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

\boldsymbol{y} \leftarrow \alpha \boldsymbol{x} + \boldsymbol{y} \!

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

Рівень 2[ред.]

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

    \boldsymbol{y} \leftarrow \alpha A \boldsymbol{x} + \beta \boldsymbol{y} \!

а також підпрограми знаходження розв'язку рівняння  T \boldsymbol{x} = \boldsymbol{y} для трикутної матриці  T .

Рівень 3[ред.]

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


    C \leftarrow \alpha A B + \beta C \!

а також розв'язок рівняння  B \leftarrow \alpha T^{-1} B для трикутної матриці  T та інші підпрограми. Зокрема сюди входить популярна у використаннях операція перемноження матриць.

Впровадження[ред.]

refblas
Офіційна реалізація з netlib. Існують ферсії на мовах програмування C та Fortran 77
GSL
GNU Scientific Library містить мульти-платформенне впровадження на C, що розповсюджується під ліцензією GNU General Public License.