Базовые подпрограммы линейной алгебры - Basic Linear Algebra Subprograms

BLAS
Стабильный выпуск
3.8.0 / 12 ноября 2017 г.; 3 года назад (2017-11-12)
Написано взависит от реализации
ПлатформаКроссплатформенность
ТипБиблиотека
Интернет сайтwww.netlib.org/ blas/

Базовые подпрограммы линейной алгебры (BLAS) это Технические характеристики который предписывает набор низкоуровневых процедур для выполнения общих линейная алгебра такие операции, как вектор добавление, скалярное умножение, точечные продукты, линейные комбинации и матричное умножение. Они де-факто стандартные низкоуровневые процедуры для библиотек линейной алгебры; подпрограммы имеют привязки для обоих C («Интерфейс CBLAS») и Фортран («Интерфейс BLAS»). Хотя спецификация BLAS является общей, реализации BLAS часто оптимизированы для скорости на конкретном компьютере, поэтому их использование может дать существенные преимущества в производительности. Реализации BLAS будут использовать преимущества специального оборудования с плавающей запятой, такого как векторные регистры или SIMD инструкции.

Она возникла как библиотека Fortran в 1979 году.[1] и его интерфейс был стандартизирован Форумом BLAS Technical (BLAST), последний отчет которого можно найти на netlib интернет сайт.[2] Эта библиотека Fortran известна как эталонная реализация (иногда ошибочно называют то Библиотека BLAS) и не оптимизирована для скорости, но находится в всеобщее достояние.[3][4]

Большинство библиотек, предлагающих подпрограммы линейной алгебры, соответствуют интерфейсу BLAS, что позволяет пользователям библиотеки разрабатывать программы, безразличные к используемой библиотеке BLAS. Примеры библиотек BLAS включают: Математическая библиотека AMD Core (ACML), Библиотеки производительности Arm,[5] АТЛАС, Библиотека ядра Intel Math (MKL) и OpenBLAS. ACML больше не поддерживается его производителем.[6] ATLAS - это портативная библиотека, которая автоматически оптимизируется для произвольной архитектуры. MKL - бесплатная программа[7] и проприетарный[8] библиотека поставщика, оптимизированная для x86 и x86-64 с упором на производительность Intel процессоры.[9] OpenBLAS - это библиотека с открытым исходным кодом, оптимизированная вручную для многих популярных архитектур. В Тесты LINPACK в значительной степени полагаться на процедуру BLAS драгоценность для измерений производительности.

Многие числовые программные приложения используют BLAS-совместимые библиотеки для вычислений линейной алгебры, включая Armadillo, ЛАПАК, LINPACK, GNU Octave, Mathematica,[10] MATLAB,[11] NumPy,[12] р, и Юля.

Фон

С появлением численного программирования стали полезными сложные библиотеки подпрограмм. Эти библиотеки будут содержать подпрограммы для общих математических операций высокого уровня, таких как поиск корня, обращение матриц и решение систем уравнений. Выбранный язык был FORTRAN. Самая известная библиотека численного программирования была IBM с Пакет научных подпрограмм (SSP).[13] Эти библиотеки подпрограмм позволили программистам сосредоточиться на своих конкретных проблемах и избежать повторной реализации хорошо известных алгоритмов. Библиотечные подпрограммы также были бы лучше, чем обычные реализации; матричные алгоритмы, например, могут использовать полное вращение для повышения числовой точности. Библиотечные подпрограммы также будут иметь более эффективные подпрограммы. Например, библиотека может включать программу для решения верхней треугольной матрицы. Библиотеки будут включать версии некоторых алгоритмов с одинарной и двойной точностью.

Первоначально эти подпрограммы использовали жестко запрограммированные циклы для своих низкоуровневых операций. Например, если подпрограмме необходимо выполнить умножение матриц, она будет иметь три вложенных цикла. Программы линейной алгебры имеют много общих низкоуровневых операций (так называемые «ядерные» операции, не связанные с операционные системы ).[14] Между 1973 и 1977 годами было выявлено несколько из этих операций ядра.[15] Эти операции ядра превратились в определенные подпрограммы, которые могли вызывать математические библиотеки. Вызовы ядра имели преимущества по сравнению с жестко запрограммированными циклами: подпрограмма библиотеки была бы более удобочитаемой, было бы меньше шансов на появление ошибок, а реализацию ядра можно было бы оптимизировать по скорости. Спецификация этих операций ядра с использованием скаляры и векторов Базовые подпрограммы линейной алгебры (BLAS) уровня 1 были опубликованы в 1979 году.[16] BLAS использовался для реализации библиотеки подпрограмм линейной алгебры LINPACK.

Абстракция BLAS допускает настройку для достижения высокой производительности. Например, LINPACK - это библиотека общего назначения, которую можно использовать на многих разных машинах без изменений. LINPACK может использовать общую версию BLAS. Для повышения производительности разные машины могут использовать адаптированные версии BLAS. По мере того, как компьютерные архитектуры становились все более сложными, векторные машины появившийся. BLAS для векторной машины может использовать быстрые векторные операции машины. (Хотя векторные процессоры в конечном итоге перестали пользоваться популярностью, векторные инструкции в современных процессорах необходимы для оптимальной производительности в процедурах BLAS.)

Стали доступны и другие функции машины, которые также можно было использовать. Следовательно, BLAS был дополнен с 1984 по 1986 год операциями ядра второго уровня, которые касались векторно-матричных операций. Было также признано, что иерархия памяти может быть использована. Многие компьютеры имеют кэш-память это намного быстрее, чем основная память; локализация манипуляций с матрицей позволяет лучше использовать кеш. В 1987 и 1988 годах BLAS уровня 3 были определены для выполнения матрично-матричных операций. BLAS уровня 3 поощрял блочно-разделенные алгоритмы. В ЛАПАК библиотека использует BLAS уровня 3.[17]

Оригинальный BLAS касался только плотно хранимых векторов и матриц. Были рассмотрены дальнейшие расширения BLAS, например, для разреженных матриц.[18]

АТЛАС

Автоматически настраиваемое программное обеспечение линейной алгебры (ATLAS) пытается сделать реализацию BLAS с более высокой производительностью. ATLAS определяет многие операции BLAS в терминах некоторых основных подпрограмм, а затем пытается автоматически адаптировать основные подпрограммы для обеспечения хорошей производительности. Выполняется поиск для выбора подходящего размера блока. Размеры блоков могут зависеть от размера и архитектуры кэша компьютера. Также проводятся тесты, чтобы убедиться, что копирование массивов и векторов улучшает производительность. Например, может быть выгодно скопировать аргументы, чтобы они были выровнены по строке кеша, чтобы пользовательские процедуры могли использовать SIMD инструкции.

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

Функциональность BLAS подразделяется на три набора подпрограмм, называемых «уровнями», которые соответствуют как хронологическому порядку определения и публикации, так и степени полинома сложности алгоритмов; Операции BLAS уровня 1 обычно требуют линейное время, О(п), Квадратичное время операций уровня 2 и кубическое время операций уровня 3.[19] Современные реализации BLAS обычно предоставляют все три уровня.

1-й уровень

Этот уровень состоит из всех процедур, описанных в исходной презентации BLAS (1979),[1] который определил только векторные операции на полосатые массивы: точечные продукты, векторные нормы, обобщенное векторное сложение вида

(называется "Axpy"," x плюс y ") и несколько других операций.

Уровень 2

Этот уровень содержит матрично-векторные операции включая, среди прочего, geнейтрализованный матриксvЭкторное умножение (gemv):

а также решатель для Икс в линейном уравнении

с Т быть треугольным. Разработка уровня 2 BLAS началась в 1984 году, а результаты были опубликованы в 1988 году.[20] Подпрограммы уровня 2 специально предназначены для повышения производительности программ, использующих BLAS на векторные процессоры, где BLAS уровня 1 неоптимальны, «потому что они скрывают матрично-векторную природу операций от компилятора».[20]

Уровень 3

Этот уровень, официально опубликованный в 1990 г.,[19] содержит матрично-матричные операции, в том числе "общий матричное умножение " (драгоценность), вида

куда А и B необязательно может быть транспонированный или эрмитово-конъюгированный внутри программы и все три матрицы могут быть разделены. Обычное матричное умножение А Б можно выполнить, установив α к одному и C в матрицу из нулей подходящего размера.

В Уровень 3 также включены процедуры решения

куда Т представляет собой треугольную матрицу, среди прочего.

Из-за повсеместного распространения матричных умножений во многих научных приложениях, в том числе для реализации остальной части BLAS уровня 3,[21] и поскольку существуют более быстрые алгоритмы, помимо очевидного повторения умножения матрицы на вектор, драгоценность является основной целью оптимизации для разработчиков BLAS. Например, разложив один или оба А, B в блочные матрицы, драгоценность возможно реализовано рекурсивно. Это одна из мотиваций для включения β параметр,[сомнительный ] так что результаты предыдущих блоков могут быть накоплены. Обратите внимание, что это разложение требует особого случая β = 1 которые оптимизируют многие реализации, тем самым устраняя одно умножение для каждого значения C. Это разложение позволяет лучше местонахождение ссылки как в пространстве, так и во времени данных, используемых в продукте. Это, в свою очередь, использует преимущества тайник в системе.[22] Для систем с более чем одним уровнем кэш-памяти блокировку можно применить второй раз к порядку, в котором блоки используются в вычислениях. Оба эти уровня оптимизации используются в таких реализациях, как АТЛАС. Совсем недавно реализации Казусигэ Гото показали, что блокировка только для Кэш L2 в сочетании с осторожным амортизирующий копирования в непрерывную память, чтобы уменьшить TLB промахивается, превосходит АТЛАС.[23] Тщательно настроенная реализация, основанная на этих идеях, является частью GotoBLAS, OpenBLAS и БЛИС.

Распространенный вариант драгоценность это gemm3m, который вычисляет комплексное произведение с использованием «трех умножений вещественных матриц и пяти сложений вещественных матриц вместо обычных четырех умножений вещественных матриц и двух сложений вещественных матриц», алгоритм, аналогичный Алгоритм Штрассена впервые описан Питером Ангаром.[24]

Реализации

Ускориться
яблоко рамки для macOS и iOS, который включает настроенные версии BLAS и ЛАПАК.[25][26]
Математическая библиотека AMD Core (ACML)
В Математическая библиотека AMD Core, поддерживая AMD Athlon и Opteron Процессоры под Linux и Windows, замененный AOCL.[27]
Оптимизация библиотек ЦП AMD (AOCL)
В AMD Оптимизация библиотек ЦП, настроенный специально для AMD Эпик Процессоры под Linux и Windows.[28]
Библиотеки производительности Arm
Библиотеки производительности Arm, с поддержкой Arm 64-бит AArch64 -процессоры, доступные от Рука.[5]
АТЛАС
Автоматически настраиваемое программное обеспечение линейной алгебры, Открытый исходный код реализация BLAS API за C и Фортран 77.[29]
БЛИС
Программная структура для создания экземпляров библиотек, подобная BLAS, для быстрого создания экземпляров. На основе GotoBLAS.[30]
C ++ AMP BLAS
В C ++ AMP Библиотека BLAS - это Открытый исходный код реализация BLAS для расширения языка Microsoft AMP для Visual C ++.[31]
cuBLAS
Оптимизированный BLAS для видеокарт на базе NVIDIA, требующий нескольких дополнительных вызовов библиотеки.[32]
NVBLAS
Оптимизированный BLAS для видеокарт на базе NVIDIA, обеспечивающий только функции уровня 3, но в качестве прямой замены для других библиотек BLAS.[33]
clBLAS
An OpenCL внедрение BLAS компанией AMD. Часть вычислительных библиотек AMD.[34]
clBLAST
Настроенный OpenCL реализация большей части API BLAS.[35]
Эйген БЛАС
А Фортран 77 и C Библиотека BLAS реализована поверх MPL -лицензированный Библиотека Eigen, поддерживающие x86, x86 64, РУКА (НЕОН), и PowerPC архитектуры.
ESSL
IBM Библиотека инженерных и научных подпрограмм, поддерживающая PowerPC архитектура под AIX и Linux.[36]
GotoBLAS
Казусигэ Гото лицензированная BSD реализация BLAS, настроенная, в частности, для Intel Nehalem /Атом, ЧЕРЕЗ Нанопроцессор, AMD Opteron.[37]
Научная библиотека GNU
Мультиплатформенная реализация многих числовых подпрограмм. Содержит интерфейс CBLAS.
HP MLIB
HP математическая библиотека, поддерживающая IA-64, PA-RISC, x86 и Opteron архитектура под HPUX и Linux.
Intel MKL
В Intel Математическая библиотека ядра, с поддержкой 32-битной и 64-битной архитектуры x86, доступно бесплатно с Intel.[7] Включает оптимизацию для Intel Pentium, Основной и Intel Xeon Процессоры и Intel Ксеон Пхи; Поддержка для Linux, Windows и macOS.[38]
MathKeisan
NEC математическая библиотека, поддерживающая Архитектура NEC SX под SUPER-UX, и Itanium под Linux[39]
Netlib BLAS
Официальная эталонная реализация на Netlib, написано в Фортран 77.[40]
Netlib CBLAS
Ссылка C интерфейс к BLAS. Также возможно (и популярно) вызвать Fortran BLAS из C.[41]
OpenBLAS
Оптимизированный BLAS на основе GotoBLAS, поддерживающий x86, x86-64, MIPS и РУКА процессоры.[42]
PDLIB / SX
NEC Общественная математическая библиотека для NEC SX-4 система.[43]
SCSL
SGI Библиотека программного обеспечения для научных вычислений содержит реализации BLAS и LAPACK для SGI. Ирикс рабочие станции.[44]
Библиотека производительности Sun
Оптимизированы BLAS и LAPACK для SPARC, Основной и AMD64 архитектуры под Solaris 8, 9 и 10, а также под Linux.[45]
uBLAS
Общий C ++ библиотека классов шаблонов, обеспечивающая функциональность BLAS. Часть Библиотека Boost. Он обеспечивает привязку ко многим библиотекам с аппаратным ускорением в унифицированной нотации. Более того, uBLAS делает упор на корректность алгоритмов с использованием расширенных возможностей C ++.[46]

Библиотеки с использованием BLAS

Armadillo
Armadillo - это библиотека линейной алгебры C ++, нацеленная на достижение хорошего баланса между скоростью и простотой использования. Он использует классы шаблонов и имеет дополнительные ссылки на BLAS / ATLAS и LAPACK. Это спонсируется НИКТА (в Австралии) и распространяется по бесплатной лицензии.[47]
ЛАПАК
LAPACK - это библиотека линейной алгебры более высокого уровня, построенная на BLAS. Как и BLAS, существует эталонная реализация, но существует множество альтернатив, таких как libFlame и MKL.
Мир
An LLVM -Ускоренная общая числовая библиотека для науки и машинного обучения, написанная на D. Он предоставляет общие подпрограммы линейной алгебры (GLAS). Он может быть построен на реализации CBLAS.[48]

Похожие библиотеки (не совместимы с BLAS)

Элементаль
Elemental - это программное обеспечение с открытым исходным кодом для распределенная память плотная и разреженно-прямая линейная алгебра и оптимизация.[49]
HASEM
- это библиотека шаблонов C ++, позволяющая решать линейные уравнения и вычислять собственные значения. Он находится под лицензией BSD License.[50]
LAMA
Библиотека для ускоренных математических приложений (LAMA ) - это библиотека шаблонов C ++ для написания числовых решателей, ориентированных на различное оборудование (например, GPU через CUDA или OpenCL ) на распределенная память системы, скрывающие аппаратное программирование от разработчика программы
MTL4
В Библиотека шаблонов матрицы версия 4 - это общий C ++ библиотека шаблонов, обеспечивающая разреженную и плотную функциональность BLAS. MTL4 устанавливает интуитивно понятный интерфейс (похожий на MATLAB ) и широкое применение благодаря общее программирование.

Редкий BLAS

Несколько расширений BLAS для обработки разреженные матрицы были предложены на протяжении истории библиотеки; небольшой набор подпрограмм ядра с разреженными матрицами был окончательно стандартизирован в 2002 году.[51]

Смотрите также

Рекомендации

  1. ^ а б *Lawson, C.L .; Hanson, R.J .; Kincaid, D .; Крог, Ф. Т. (1979). "Основные подпрограммы линейной алгебры для использования FORTRAN". ACM Trans. Математика. Softw. 5 (3): 308–323. Дои:10.1145/355841.355847. HDL:2060/19780018835. Алгоритм 539.
  2. ^ «Технический форум BLAS». netlib.org. Получено 2017-07-07.
  3. ^ хулиган В архиве 2016-10-12 на Wayback Machine «Эти продукты являются реализациями общедоступных подпрограмм BLAS (Basic Linear Algebra Subprograms) и LAPACK (Linear Algebra PACKage), которые были разработаны такими группами людей, как профессор Джек Донгарра, Университет Теннесси, США, и все они опубликованы в WWW (URL: http://www.netlib.org/ )."[постоянная мертвая ссылка ]
  4. ^ Джек Донгарра; Джин Голуб; Эрик Гроссе; Клив Молер; Кейт Мур. «Netlib и NA-Net: построение научного компьютерного сообщества» (PDF). netlib.org. Получено 2016-02-13. Репозиторий программного обеспечения Netlib был создан в 1984 году для облегчения быстрого распространения общедоступных программных процедур для использования в научных вычислениях.
  5. ^ а б "Библиотеки производительности Arm". Рука. 2020. Получено 2020-06-02.
  6. ^ «ACML - математическая библиотека AMD Core». AMD. 2013. Архивировано с оригинал на 2015-09-05. Получено 2015-08-26.
  7. ^ а б «Бесплатные варианты для библиотеки Intel Math Kernel Library (MKL), поддерживайте себя, без лицензионных отчислений». Intel. 2015. Получено 2015-08-31.
  8. ^ «Библиотека ядра Intel Math (Intel MKL)». Intel. 2015. Получено 2015-08-25.
  9. ^ «Уведомление об оптимизации». Intel. 2012. Получено 2013-04-10.
  10. ^ Дуглас Куинни (2003). «Так что же нового в Mathematica 5.0?» (PDF). Соединения MSOR. Академия высшего образования. 3 (4). Архивировано из оригинал (PDF) на 2013-10-29.
  11. ^ Клив Молер (2000). "MATLAB включает LAPACK". MathWorks. Получено 2013-10-26.
  12. ^ Стефан ван дер Вальт; С. Крис Кольбер и Гаэль Вароко (2011). «Массив NumPy: структура для эффективных численных вычислений». Вычислительная техника в науке и технике. 13 (2): 22–30. arXiv:1102.1523. Bibcode:2011arXiv1102.1523V. Дои:10.1109 / MCSE.2011.37.
  13. ^ Бойсверт, Рональд Ф. (2000). «Математическое программное обеспечение: прошлое, настоящее и будущее». Математика и компьютеры в моделировании. 54 (4–5): 227–241. arXiv:cs / 0004004. Bibcode:2000cs ........ 4004B. Дои:10.1016 / S0378-4754 (00) 00185-3.
  14. ^ Даже SSP (который появился примерно в 1966 году) имел некоторые базовые процедуры, такие как RADD (добавление строк), CADD (добавление столбцов), SRMA (масштабирование строки и добавление в другую строку) и RINT (обмен строк). Эти процедуры, по-видимому, не использовались в качестве операций ядра для реализации других процедур, таких как обращение матрицы. Видеть IBM (1970), Пакет подпрограмм System / 360 Scientific, версия III, Руководство программиста (5-е изд.), International Business Machines, GH20-0205-4.
  15. ^ BLAST Forum 2001, п. 1.
  16. ^ Lawson et al. 1979 г..
  17. ^ BLAST Forum 2001, стр. 1–2.
  18. ^ BLAST Forum 2001, п. 2.
  19. ^ а б Донгарра, Джек Дж .; Дю Кроз, Джереми; Хаммарлинг, Свен; Дафф, Иэн С. (1990). «Набор основных подпрограмм линейной алгебры уровня 3». Транзакции ACM на математическом ПО. 16 (1): 1–17. Дои:10.1145/77626.79170. ISSN  0098-3500.
  20. ^ а б Донгарра, Джек Дж .; Дю Кроз, Джереми; Хаммарлинг, Свен; Хэнсон, Ричард Дж. (1988). «Расширенный набор подпрограмм FORTRAN Basic Linear Algebra Subprograms». ACM Trans. Математика. Softw. 14: 1–17. CiteSeerX  10.1.1.17.5421. Дои:10.1145/42288.42291.
  21. ^ Гото, Казушигэ; ван де Гейн, Роберт А. (2008). «Высокопроизводительная реализация BLAS 3-го уровня» (PDF). Транзакции ACM на математическом ПО. 35 (1): 1–14. Дои:10.1145/1377603.1377607.
  22. ^ Голуб, Джин Х.; Ван Лоан, Чарльз Ф. (1996), Матричные вычисления (3-е изд.), Джонс Хопкинс, ISBN  978-0-8018-5414-9
  23. ^ Гото, Казушигэ; ван де Гейн, Роберт А. (2008). «Анатомия высокопроизводительного умножения матриц». Транзакции ACM на математическом ПО. 34 (3): 12:1–12:25. CiteSeerX  10.1.1.111.3873. Дои:10.1145/1356052.1356053. ISSN  0098-3500. (25 страниц) [1]
  24. ^ Van Zee, Field G .; Смит, Тайлер М. (24 июля 2017 г.). «Реализация высокопроизводительного комплексного умножения матриц с помощью методов 3m и 4m». Транзакции ACM на математическом ПО. 44 (1): 1–36. Дои:10.1145/3086466.
  25. ^ «Руководства и образец кода». developer.apple.com. Получено 2017-07-07.
  26. ^ «Руководства и образец кода». developer.apple.com. Получено 2017-07-07.
  27. ^ «Архивная копия». Архивировано из оригинал на 2005-11-30. Получено 2005-10-26.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  28. ^ «Оптимизация библиотек процессоров AMD (AOCL) - AMD».
  29. ^ "Автоматически настраиваемое программное обеспечение линейной алгебры (ATLAS)". math-atlas.sourceforge.net. Получено 2017-07-07.
  30. ^ blis: Программная платформа для создания библиотек в стиле BLAS, пламя, 2017-06-30, получено 2017-07-07
  31. ^ "Библиотека C ++ AMP BLAS". CodePlex. Получено 2017-07-07.
  32. ^ "КУБЛАС". Разработчик NVIDIA. 2013-07-29. Получено 2017-07-07.
  33. ^ «НВБЛАС». Разработчик NVIDIA. 2018-05-15. Получено 2018-05-15.
  34. ^ clBLAS: программная библиотека, содержащая функции BLAS, написанные на OpenCL., clMathLibraries, 03.07.2017, получено 2017-07-07
  35. ^ Нугтерен, Седрик (2017-07-05), CLBlast: настроенный OpenCL BLAS, получено 2017-07-07
  36. ^ Центр знаний IBM: инженерная и научная библиотека подпрограмм
  37. ^ Милфельд, Кент. "GotoBLAS2". Техасский вычислительный центр. В архиве из оригинала 2020-03-23. Получено 2013-08-28.
  38. ^ "Библиотека Intel Math Kernel (Intel MKL) | Программное обеспечение Intel". software.intel.com. Получено 2017-07-07.
  39. ^ Маткейсан, NEC. "MathKeisan". www.mathkeisan.com. Получено 2017-07-07.
  40. ^ "BLAS (Основные подпрограммы линейной алгебры)". www.netlib.org. Получено 2017-07-07.
  41. ^ "BLAS (Основные подпрограммы линейной алгебры)". www.netlib.org. Получено 2017-07-07.
  42. ^ «OpenBLAS: оптимизированная библиотека BLAS». www.openblas.net. Получено 2017-07-07.
  43. ^ «Архивная копия». Архивировано из оригинал на 2007-02-22. Получено 2007-05-20.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  44. ^ «Архивная копия». Архивировано из оригинал на 2007-05-13. Получено 2007-05-20.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  45. ^ «Oracle Developer Studio». www.oracle.com. Получено 2017-07-07.
  46. ^ "Boost Basic Linear Algebra - 1.60.0". www.boost.org. Получено 2017-07-07.
  47. ^ "Armadillo: библиотека линейной алгебры C ++". arma.sourceforge.net. Получено 2017-07-07.
  48. ^ "Числовые и системные библиотеки Dlang".
  49. ^ "Элементаль: плотная и разреженная линейная алгебра с распределенной памятью и оптимизация - Элементаль". libelemental.org. Получено 2017-07-07.
  50. ^ "ХАЗЕМ". SourceForge. Получено 2017-07-07.
  51. ^ Дафф, Иэн С .; Heroux, Michael A .; Посо, Ролдан (2002). «Обзор подпрограмм Sparse Basic Linear Algebra: Новый стандарт Технического форума BLAS». Транзакции ACM на математическом ПО. 28 (2): 239–267. Дои:10.1145/567806.567810.

дальнейшее чтение

  • BLAST Forum (21.08.2001), Базовые подпрограммы линейной алгебры Технический (BLAST) Форумный стандарт, Ноксвилл, Теннесси: Университет Теннесси
  • Додсон, Д. С .; Граймс, Р. Г. (1982), "Замечание об алгоритме 539: основные подпрограммы линейной алгебры для использования Фортрана", ACM Trans. Математика. Софтв., 8 (4): 403–404, Дои:10.1145/356012.356020
  • Додсон, Д. С. (1983), "Исправление: Замечание по" Алгоритму 539: Основные подпрограммы линейной алгебры для использования FORTRAN"", ACM Trans. Математика. Софтв., 9: 140, Дои:10.1145/356022.356032
  • Дж. Дж. Донгарра, Дж. Дю Кроз, С. Хаммарлинг и Р. Дж. Хансон, Алгоритм 656: расширенный набор подпрограмм базовой линейной алгебры FORTRAN, ACM Trans. Математика. Softw., 14 (1988), стр. 18–32.
  • Дж. Дж. Донгарра, Дж. Дю Кроз, И. С. Дафф и С. Хаммарлинг, Набор подпрограмм базовой линейной алгебры уровня 3, ACM Trans. Математика. Softw., 16 (1990), стр. 1–17.
  • Дж. Дж. Донгарра, Дж. Дю Кроз, И. С. Дафф и С. Хаммарлинг, Алгоритм 679: набор подпрограмм базовой линейной алгебры уровня 3, ACM Trans. Математика. Softw., 16 (1990), стр. 18–28.
Новый BLAS
  • Л.С. Блэкфорд, Дж. Деммель, Дж. Донгарра, И. Дафф, С. Хаммарлинг, Дж. Генри, М. Эру, Л. Кауфман, А. Ламсдайн, А. Петите, Р. Позо, К. Ремингтон, Р. К. Уэйли, Обновленный набор подпрограмм базовой линейной алгебры (BLAS), ACM Trans. Математика. Softw., 28-2 (2002), стр. 135–151.
  • Дж. Донгарра, Стандарт Технического форума по подпрограммам базовой линейной алгебры, Международный журнал высокопроизводительных приложений и суперкомпьютеров, 16 (1) (2002), стр. 1–111, и Международный журнал высокопроизводительных приложений и суперкомпьютеров, 16 (2) ( 2002), стр. 115–199.

внешняя ссылка

  • Домашняя страница BLAS на Netlib.org
  • BLAS FAQ
  • Краткое справочное руководство по BLAS из Руководства пользователя LAPACK
  • Лоусон Устная история Один из первоначальных авторов BLAS обсуждает его создание в устном историческом интервью. Чарльз Л. Лоусон Устное историческое интервью Томаса Хэя, 6 и 7 ноября 2004 г., Сан-Клементе, Калифорния. Общество промышленной и прикладной математики, Филадельфия, Пенсильвания.
  • Донгарра Устная история В устном историческом интервью Джек Донгарра исследует раннюю связь BLAS с LINPACK, создание версий BLAS более высокого уровня для новых архитектур и свою более позднюю работу над системой ATLAS для автоматической оптимизации BLAS для определенных машин. Джек Донгарра, Интервью Томаса Хея по устной истории, 26 апреля 2005 г., Университет Теннесси, Ноксвилл, Теннесси. Общество промышленной и прикладной математики, Филадельфия, Пенсильвания
  • Как BLAS обеспечивает такую ​​исключительную производительность? Десять наивных умножений матриц 1000 × 1000 (1010 умножение-сложение с плавающей запятой) занимает 15,77 секунды на процессоре с частотой 2,6 ГГц; Внедрение BLAS занимает 1,32 секунды.
  • Обзор подпрограмм Sparse Basic Linear Algebra: новый стандарт технического форума BLAS [2]