Основные подпрограммы линейной алгебры
Стабильная версия | 3.11.0 / 11 ноября 2022 г |
---|---|
Написано в | зависит от реализации |
Платформа | Кросс-платформенный |
Тип | Библиотека |
Веб-сайт | www |
Базовые подпрограммы линейной алгебры ( BLAS ) — это спецификация , которая предписывает набор подпрограмм низкого уровня для выполнения общих операций линейной алгебры, таких как сложение векторов , скалярное умножение , скалярное произведение , линейные комбинации и умножение матриц . Это де-факто стандартные низкоуровневые процедуры для библиотек линейной алгебры; подпрограммы имеют привязки как для C («интерфейс CBLAS»), так и для Fortran («интерфейс BLAS»). Хотя спецификация BLAS является общей, реализации BLAS часто оптимизированы для скорости на конкретной машине, поэтому их использование может принести существенный выигрыш в производительности. Реализации BLAS будут использовать преимущества специального оборудования с плавающей запятой, такого как векторные регистры или инструкции SIMD .
Она возникла как библиотека Фортрана в 1979 году. [1] а его интерфейс был стандартизирован Техническим форумом BLAS (BLAST), последний отчет которого по BLAS можно найти на веб-сайте netlib . [2] Эта библиотека Фортрана известна как эталонная реализация (иногда ее ошибочно называют библиотекой BLAS) и не оптимизирована по скорости, но находится в свободном доступе . [3] [4]
Большинство библиотек, предлагающих процедуры линейной алгебры, соответствуют интерфейсу BLAS, что позволяет пользователям библиотеки разрабатывать программы, не зависящие от используемой библиотеки BLAS.
Было разработано множество библиотек BLAS для различных аппаратных платформ. Примеры включают cuBLAS (NVIDIA GPU, GPGPU ), rocBLAS (AMD GPU) и OpenBLAS . Примеры ветвей библиотеки BLAS на базе ЦП включают: OpenBLAS , BLIS (программное обеспечение для создания экземпляров библиотек, подобных BLAS) , библиотеки Arm Performance Libraries, [5] ATLAS и библиотека математического ядра Intel (iMKL). AMD поддерживает версию BLIS, оптимизированную для платформы AMD . [6] ATLAS — это переносимая библиотека, которая автоматически оптимизируется под произвольную архитектуру. iMKL — бесплатная программа [7] и собственность [8] библиотека поставщика, оптимизированная для x86 и x86-64 с упором на производительность процессоров Intel . [9] OpenBLAS — это библиотека с открытым исходным кодом, вручную оптимизированная для многих популярных архитектур. Тесты LINPACK в значительной степени зависят от процедуры BLAS. gemm
для измерения его производительности.
Многие численные программные приложения используют BLAS-совместимые библиотеки для выполнения вычислений линейной алгебры, включая LAPACK , LINPACK , Armadillo , GNU Octave , Mathematica , [10] МАТЛАБ , [11] НумПи , [12] R , Джулия и Lisp-Stat.
Фон
[ редактировать ]С появлением численного программирования стали полезны сложные библиотеки подпрограмм. Эти библиотеки будут содержать подпрограммы для общих математических операций высокого уровня, таких как поиск корня, обращение матрицы и решение систем уравнений. Языком выбора был FORTRAN . Самой известной библиотекой числового программирования была IBM Scientific Subroutine Package (SSP). [13] Эти библиотеки подпрограмм позволяли программистам сосредоточиться на своих конкретных проблемах и избежать повторной реализации хорошо известных алгоритмов. Библиотечные процедуры также будут лучше, чем средние реализации; матричные алгоритмы, например, могут использовать полный поворот для повышения числовой точности. Библиотечные процедуры также будут иметь более эффективные процедуры. Например, библиотека может включать программу для решения матрицы верхней треугольной формы. Библиотеки будут включать версии некоторых алгоритмов с одинарной и двойной точностью.
Первоначально эти подпрограммы использовали жестко запрограммированные циклы для своих низкоуровневых операций. Например, если подпрограмме необходимо выполнить умножение матриц, то она будет иметь три вложенных цикла. Программы линейной алгебры имеют множество общих операций низкого уровня (так называемые «ядерные» операции, не относящиеся к операционным системам ). [14] Между 1973 и 1977 годами было обнаружено несколько таких операций ядра. [15] Эти операции ядра стали определенными подпрограммами, которые могли вызывать математические библиотеки. Вызовы ядра имели преимущества перед жестко запрограммированными циклами: библиотечная процедура была бы более читабельной, было бы меньше шансов на ошибки, а реализацию ядра можно было бы оптимизировать по скорости. Спецификация для этих операций ядра с использованием скаляров и векторов , базовых подпрограмм линейной алгебры уровня 1 (BLAS), была опубликована в 1979 году. [16] BLAS использовался для реализации библиотеки подпрограмм линейной алгебры LINPACK .
Абстракция BLAS позволяет настроить высокую производительность. Например, LINPACK — это библиотека общего назначения, которую можно использовать на многих разных машинах без изменений. LINPACK может использовать общую версию BLAS. Для повышения производительности разные машины могут использовать адаптированные версии BLAS. По мере усложнения компьютерной архитектуры векторные машины появились . BLAS для векторной машины может использовать быстрые векторные операции машины. (Хотя векторные процессоры со временем вышли из моды, векторные инструкции в современных процессорах необходимы для оптимальной производительности в процедурах BLAS.)
Другие функции машины стали доступны и их также можно было использовать. Следовательно, с 1984 по 1986 год BLAS был дополнен операциями ядра уровня 2, которые касались векторно-матричных операций. Иерархия памяти также была признана объектом использования. Многие компьютеры имеют кэш-память , которая намного быстрее основной памяти; локализация манипуляций с матрицами позволяет лучше использовать кеш. В 1987 и 1988 годах было установлено, что BLAS уровня 3 выполняет матрично-матричные операции. BLAS уровня 3 поощрял алгоритмы, разделенные на блоки. Библиотека LAPACK использует BLAS уровня 3. [17]
Оригинальный BLAS касался только плотно хранящихся векторов и матриц. Были рассмотрены дальнейшие расширения BLAS, например, для разреженных матриц. [18]
Функциональность
[ редактировать ]Функциональность BLAS разделена на три набора процедур, называемых «уровнями», которые соответствуют как хронологическому порядку определения и публикации, так и степени полинома сложности алгоритмов; Операции BLAS уровня 1 обычно занимают линейное время O ( n ) , операции уровня 2 квадратичное время и операции уровня 3 кубическое время. [19] Современные реализации BLAS обычно обеспечивают все три уровня.
Уровень 1
[ редактировать ]Этот уровень состоит из всех процедур, описанных в оригинальной презентации BLAS (1979). [1] который определял только векторные операции над пошаговыми массивами : скалярное произведение , векторные нормы , обобщенное векторное сложение формы
(называется " axpy
", "топор плюс y") и ряд других операций.
Уровень 2
[ редактировать ]Этот уровень содержит операции , в том числе обобщенное матрично- векторные матрично - векторное умножение ( gemv
):
а также решатель для x в линейном уравнении
причем T треугольный. Разработка BLAS уровня 2 началась в 1984 году, а результаты были опубликованы в 1988 году. [20] Подпрограммы уровня 2 специально предназначены для повышения производительности программ, использующих BLAS на векторных процессорах , где BLAS уровня 1 неоптимальны, «поскольку скрывают от компилятора матрично-векторный характер операций». [20]
Уровень 3
[ редактировать ]Этот уровень, официально опубликованный в 1990 году, [19] содержит матричные операции , включая «общее матричное умножение » ( gemm
), вида
где A и B могут быть транспонированы или эрмитово сопряжены внутри процедуры, и все три матрицы могут быть пошаговыми. Обычное умножение матриц AB можно выполнить, присвоив α значение единицы, а C — матрицу соответствующего размера, состоящую из всех нулей.
В уровень 3 также включены процедуры для вычислений.
где T — треугольная матрица , помимо других функций.
Из-за повсеместного распространения матричных умножений во многих научных приложениях, в том числе для реализации остальной части BLAS уровня 3, [21] и поскольку существуют более быстрые алгоритмы, помимо очевидного повторения умножения матрицы на вектор, gemm
является основной целью оптимизации для разработчиков BLAS. Например, разложив один или оба A , B на блочные матрицы , gemm
может быть реализовано рекурсивно . Это одна из причин включения параметра β , [ сомнительно – обсудить ] поэтому результаты предыдущих блоков могут быть аккумулированы. Обратите внимание, что это разложение требует особого случая β = 1 , для которого оптимизируются многие реализации, тем самым исключая одно умножение для каждого значения C . Такое разложение обеспечивает лучшую локальность ссылок как в пространстве, так и во времени для данных, используемых в продукте. Это, в свою очередь, использует кэш системы. [22] Для систем с более чем одним уровнем кэша блокировка может применяться второй раз в том порядке, в котором блоки используются в вычислениях. Оба эти уровня оптимизации используются в таких реализациях, как ATLAS . Совсем недавно реализации Кадзусигэ Гото показали, что блокировка только для кэша L2 в сочетании с тщательной амортизацией копирования в непрерывную память для уменьшения промахов TLB превосходит ATLAS . [23] Тщательно настроенная реализация, основанная на этих идеях, является частью GotoBLAS , OpenBLAS и BLIS .
Распространенная вариация gemm
это gemm3m
, который вычисляет сложное произведение, используя «три умножения действительных матриц и пять сложений действительных матриц вместо обычных умножений четырех действительных матриц и двух сложения действительных матриц», алгоритм, аналогичный алгоритму Штрассена, впервые описанному Питером Унгаром. [24]
Реализации
[ редактировать ]- Ускорение
- Apple Платформа для macOS и iOS , включающая настроенные версии BLAS и LAPACK . [25] [26]
- Библиотеки производительности рук
- Библиотеки производительности Arm , поддерживающие 64-битные процессоры Arm на базе AArch64 , доступные на сайте Arm . [5]
- АТЛАС
- Автоматически настраиваемое программное обеспечение для линейной алгебры — с открытым исходным кодом BLAS реализация API для C и Fortran 77 . [27]
- ВСПЫШКА
- Программное обеспечение для создания экземпляров BLAS-подобных библиотек для быстрого создания экземпляров. Оптимизирован для большинства современных процессоров. BLIS — это полный рефакторинг GotoBLAS, который уменьшает объем кода, который необходимо написать для данной платформы. [28] [29]
- C++ AMP-BLAS
- Библиотека C++ AMP BLAS — это реализация BLAS с открытым исходным кодом для языкового расширения Microsoft AMP для Visual C++. [30]
- куБЛАС
- Оптимизированный BLAS для графических карт на базе NVIDIA, требующий небольшого количества дополнительных вызовов библиотеки. [31]
- НВБЛАС
- Оптимизированный BLAS для карт графического процессора на базе NVIDIA, обеспечивающий только функции уровня 3, но в качестве прямой замены других библиотек BLAS. [32]
- clBLAS
- OpenCL - реализация BLAS от AMD. Часть вычислительных библиотек AMD. [33]
- clBLAST
- Настроенная реализация OpenCL большей части API BLAS. [34]
- Собственный БЛАС
- Библиотека Fortran 77 и C BLAS, реализованная поверх MPL под лицензией библиотеки Eigen , поддерживающая x86 , x86-64 , ARM (NEON) и PowerPC . архитектуры
- ЭССЛ
- архитектуру Библиотека инженерных и научных подпрограмм IBM, поддерживающая PowerPC под управлением AIX и Linux . [35]
- ГотоБЛАС
- Kazushige Goto Реализация BLAS под лицензией BSD от , настроенная, в частности, для Intel Nehalem / Atom , VIA Nanoprocessor , AMD Opteron . [36]
- Научная библиотека ГНУ
- Мультиплатформенная реализация многих числовых процедур. Содержит интерфейс CBLAS.
- HP МЛИБ
- архитектуру Математическая библиотека HP поддерживает IA-64 , PA-RISC , x86 и Opteron под HP-UX и Linux .
- Интел МКЛ
- Библиотека Intel Math Kernel Library , поддерживающая 32- и 64-разрядные версии x86, доступна бесплатно на сайте Intel . [7] Включает оптимизацию для Intel Pentium , Core , Intel Xeon процессоров и Intel Xeon Phi ; поддержка Linux , Windows и macOS . [37]
- МатКейсан
- архитектуру Математическая библиотека NEC, поддерживающая NEC SX под SUPER-UX и Itanium под Linux. [38]
- Нетлиб БЛАС
- Официальная эталонная реализация Netlib , написанная на Fortran 77 . [39]
- Нетлиб CBLAS
- Ссылка на интерфейс C для BLAS. Также возможно (и популярно) вызывать Fortran BLAS из C. [40]
- OpenBLAS
- Оптимизированный BLAS на основе GotoBLAS, поддерживающий x86 , x86-64 , MIPS и ARM . процессоры [41]
- ПДЛИБ/SX
- системы Общественная математическая библиотека NEC для NEC SX-4 . [42]
- рокБЛАС
- Реализация, работающая на графических процессорах AMD через ROCm . [43]
- SCSL
- Библиотека программного обеспечения для научных вычислений SGI содержит реализации BLAS и LAPACK для рабочих станций SGI Irix . [44]
- Библиотека производительности Sun
- Оптимизированы BLAS и LAPACK для архитектур SPARC , Core и AMD64 под Solaris 8, 9 и 10, а также Linux. [45]
- УБЛАС
- Универсальная библиотека классов шаблонов C++, обеспечивающая функциональность BLAS. Часть библиотеки Boost . Он обеспечивает привязки ко многим библиотекам с аппаратным ускорением в унифицированной нотации. Более того, uBLAS фокусируется на корректности алгоритмов с использованием расширенных функций C++. [46]
Библиотеки, использующие BLAS
[ редактировать ]- Броненосец
- Armadillo — это библиотека линейной алгебры C++, целью которой является обеспечение хорошего баланса между скоростью и простотой использования. Он использует классы шаблонов и имеет дополнительные ссылки на BLAS/ATLAS и LAPACK. Он спонсируется NICTA (в Австралии) и распространяется по свободной лицензии. [47]
- ЛАПАК
- LAPACK — это библиотека линейной алгебры более высокого уровня, построенная на базе BLAS. Как и в случае с BLAS, существует эталонная реализация, но существует множество альтернатив, таких как libFlame и MKL.
- Мне
- Универсальная числовая библиотека с ускорением LLVM для науки и машинного обучения, написанная D. на Он предоставляет общие подпрограммы линейной алгебры (GLAS). Он может быть построен на основе реализации CBLAS. [48]
Похожие библиотеки (несовместимы с BLAS)
[ редактировать ]- Элементаль
- Elemental — это программное обеспечение с открытым исходным кодом для памятью и оптимизации. линейной алгебры с плотной и разреженной [49]
- Басем
- — это библиотека шаблонов C++, позволяющая решать линейные уравнения и вычислять собственные значения. Он распространяется по лицензии BSD. [50]
- ДЛИННЫЙ
- Библиотека для приложений ускоренной математики ( LAMA ) — это библиотека шаблонов C++ для написания числовых решателей, предназначенных для различных типов оборудования (например, графических процессоров через CUDA или OpenCL ) в системах с распределенной памятью , скрывающих программирование, специфичное для оборудования, от разработчика программы.
- МТЛ4
- Библиотека шаблонов Matrix версии 4 — это универсальная библиотека шаблонов C++, обеспечивающая разреженную и плотную функциональность BLAS. MTL4 имеет интуитивно понятный интерфейс (похожий на MATLAB ) и широкую применимость благодаря универсальному программированию .
Редкий BLAS
[ редактировать ]несколько расширений BLAS для работы с разреженными матрицами За время существования библиотеки было предложено ; небольшой набор подпрограмм ядра с разреженной матрицей был окончательно стандартизирован в 2002 году. [51]
Пакетный БЛАС
[ редактировать ]Традиционные функции BLAS также были перенесены на архитектуры, поддерживающие высокий уровень параллелизма, такие как графические процессоры . Здесь традиционные функции BLAS обычно обеспечивают хорошую производительность для больших матриц. Однако при вычислении, например, произведений матрицы-матрицы множества небольших матриц с использованием процедуры GEMM эти архитектуры демонстрируют значительные потери производительности. Для решения этой проблемы в 2017 году была указана пакетная версия функции BLAS. [52]
Взяв в качестве примера приведенную выше процедуру GEMM, пакетная версия выполняет следующие вычисления одновременно для многих матриц:
Индекс в квадратных скобках указано, что операция выполняется для всех матриц в стопке. Часто эта операция реализуется для пошаговой пакетной компоновки памяти, где все матрицы объединены в массивы. , и .
Пакетные функции BLAS могут быть универсальным инструментом и позволяют, например, быстро реализовать экспоненциальные интеграторы и интеграторы Магнуса , которые обрабатывают длительные периоды интегрирования со многими временными шагами. [53] Здесь возведение матрицы в степень , вычислительно затратная часть интегрирования, может быть реализовано параллельно для всех временных шагов с помощью пакетных функций BLAS.
См. также
[ редактировать ]- Список числовых библиотек
- Math Kernel Library , математическая библиотека, оптимизированная для архитектуры Intel ; включает BLAS, LAPACK
- Численная линейная алгебра , тип проблемы, которую решает BLAS
Ссылки
[ редактировать ]- ↑ Перейти обратно: Перейти обратно: а б * Лоусон, CL; Хэнсон, Р.Дж.; Кинкейд, Д.; Крог, FT (1979). «Основные подпрограммы линейной алгебры для использования FORTRAN». АКМ Транс. Математика. Программное обеспечение . 5 (3): 308–323. дои : 10.1145/355841.355847 . hdl : 2060/19780018835 . S2CID 6585321 . Алгоритм 539.
- ^ «Технический форум БЛАС» . netlib.org . Проверено 7 июля 2017 г.
- ^ blaseman. Архивировано 12 октября 2016 г. на Wayback Machine. «Эти продукты представляют собой реализации общедоступных BLAS (базовые подпрограммы линейной алгебры) и LAPACK (ПАКЕТ линейной алгебры), которые были разработаны такими группами людей, как профессор Джек. Донгарра, Университет Теннесси, США, и все они опубликованы в WWW (URL: https://www.netlib.org/ )». [ постоянная мертвая ссылка ]
- ^ Джек Донгарра; Джин Голуб; Эрик Гросс; Клив Молер; Кейт Мур. «Netlib и NA-Net: создание научного вычислительного сообщества» (PDF) . netlib.org . Проверено 13 февраля 2016 г.
Репозиторий программного обеспечения Netlib был создан в 1984 году для облегчения быстрого распространения общедоступных программных процедур для использования в научных вычислениях.
- ↑ Перейти обратно: Перейти обратно: а б «Библиотеки производительности рук» . Рука . 2020 . Проверено 16 декабря 2020 г.
- ^ «Библиотека БЛАС» .
- ↑ Перейти обратно: Перейти обратно: а б «Бесплатные варианты использования библиотеки Intel Math Kernel Library (MKL). Поддержите себя, без лицензионных отчислений» . Интел . 2015 . Проверено 31 августа 2015 г.
- ^ «Библиотека ядра Intel Math (Intel MKL)» . Интел . 2015 . Проверено 25 августа 2015 г.
- ^ «Уведомление об оптимизации» . Интел . 2012 . Проверено 10 апреля 2013 г.
- ^ Дуглас Куинни (2003). «Так что же нового в системе Mathematica 5.0?» (PDF) . Соединения МСОР . 3 (4). Академия высшего образования. Архивировано из оригинала (PDF) 29 октября 2013 г.
- ^ Клив Молер (2000). «МАТЛАБ объединяет LAPACK» . Матворкс . Проверено 26 октября 2013 г.
- ^ Стефан ван дер Вальт; С. Крис Колберт и Гаэль Варокво (2011). «Массив NumPy: структура для эффективных численных вычислений». Вычисления в науке и технике . 13 (2): 22–30. arXiv : 1102.1523 . Бибкод : 2011CSE....13b..22V . дои : 10.1109/MCSE.2011.37 . S2CID 16907816 .
- ^ Буасверт, Рональд Ф. (2000). «Математическое программное обеспечение: прошлое, настоящее и будущее». Математика и компьютеры в моделировании . 54 (4–5): 227–241. arXiv : cs/0004004 . Бибкод : 2000cs........4004B . дои : 10.1016/S0378-4754(00)00185-3 . S2CID 15157725 .
- ^ Даже в SSP (появившемся примерно в 1966 году) были некоторые базовые процедуры, такие как RADD (добавление строк), CADD (добавление столбцов), SRMA (масштабирование строки и добавление к другой строке) и RINT (обмен строк). Эти процедуры, очевидно, не использовались в качестве операций ядра для реализации других процедур, таких как инверсия матрицы. Видеть IBM (1970), Пакет научных подпрограмм System/360, версия III, Руководство программиста (5-е изд.), International Business Machines, GH20-0205-4 .
- ^ Форум BLAST 2001 , с. 1.
- ^ Лоусон и др. 1979 год .
- ^ BLAST Forum 2001 , стр. 1–2.
- ^ Форум BLAST 2001 , с. 2.
- ↑ Перейти обратно: Перейти обратно: а б Донгарра, Джек Дж.; Дю Кроз, Джереми; Хаммарлинг, Свен; Дафф, Иэн С. (1990). «Набор базовых подпрограмм линейной алгебры уровня 3» . Транзакции ACM в математическом программном обеспечении . 16 (1): 1–17. дои : 10.1145/77626.79170 . ISSN 0098-3500 . S2CID 52873593 .
- ↑ Перейти обратно: Перейти обратно: а б Донгарра, Джек Дж.; Дю Кроз, Джереми; Хаммарлинг, Свен; Хэнсон, Ричард Дж. (1988). «Расширенный набор подпрограмм базовой линейной алгебры FORTRAN». АКМ Транс. Математика. Программное обеспечение . 14 : 1–17. CiteSeerX 10.1.1.17.5421 . дои : 10.1145/42288.42291 . S2CID 3579623 .
- ^ Гото, Казусигэ ; ван де Гейн, Роберт А. (2008). «Высокопроизводительная реализация BLAS уровня 3» (PDF) . Транзакции ACM в математическом программном обеспечении . 35 (1): 1–14. дои : 10.1145/1377603.1377607 . S2CID 14722514 .
- ^ Голуб, Джин Х .; Ван Лоан, Чарльз Ф. (1996), Матричные вычисления (3-е изд.), Джонс Хопкинс, ISBN 978-0-8018-5414-9
- ^ Гото, Казусигэ ; ван де Гейн, Роберт А. (2008). «Анатомия высокопроизводительного умножения матриц». Транзакции ACM в математическом программном обеспечении . 34 (3): 12:1–12:25. CiteSeerX 10.1.1.111.3873 . дои : 10.1145/1356052.1356053 . ISSN 0098-3500 . S2CID 9359223 . (25 страниц) [1]
- ^ Ван Зи, Филд Г.; Смит, Тайлер М. (24 июля 2017 г.). «Реализация высокопроизводительного умножения комплексных матриц с помощью методов 3m и 4m». Транзакции ACM в математическом программном обеспечении . 44 (1): 1–36. дои : 10.1145/3086466 . S2CID 25580883 .
- ^ «Руководства и пример кода» . разработчик.apple.com . Проверено 7 июля 2017 г.
- ^ «Руководства и пример кода» . разработчик.apple.com . Проверено 7 июля 2017 г.
- ^ «Автоматически настраиваемое программное обеспечение для линейной алгебры (ATLAS)» . math-atlas.sourceforge.net . Проверено 7 июля 2017 г.
- ^ blis: Платформа программного обеспечения для создания экземпляров BLAS-подобных библиотек , Flame, 30 июня 2017 г. , получено 7 июля 2017 г.
- ^ Репозиторий BLIS на GitHub , 15 октября 2021 г.
- ^ «Библиотека C++ AMP BLAS» . КодПлекс . Архивировано из оригинала 8 июля 2017 г. Проверено 7 июля 2017 г.
- ^ «куБЛАС» . Разработчик NVIDIA . 29 июля 2013 г. Проверено 7 июля 2017 г.
- ^ «НВБЛАС» . Разработчик NVIDIA . 15 мая 2018 г. Проверено 15 мая 2018 г. [ постоянная мертвая ссылка ]
- ^ clBLAS: программная библиотека, содержащая функции BLAS, написанные на OpenCL , clMathLibraries, 03 июля 2017 г. , получено 7 июля 2017 г.
- ^ Нугтерен, Седрик (05 июля 2017 г.), CLBlast: настроенный OpenCL BLAS , получено 7 июля 2017 г.
- ^ Центр знаний IBM: Библиотека инженерных и научных подпрограмм
- ^ Милфельд, Кент. «ГотоБЛАС2» . Техасский центр перспективных вычислений . Архивировано из оригинала 23 марта 2020 г. Проверено 17 марта 2024 г.
- ^ «Библиотека ядра Intel Math (Intel MKL) | Программное обеспечение Intel» . программное обеспечение.intel.com . Проверено 7 июля 2017 г.
- ^ Маткейсан, NEC. «Матикейсан» . www.mathkeisan.com . Проверено 7 июля 2017 г.
- ^ «BLAS (Базовые подпрограммы линейной алгебры)» . www.netlib.org . Проверено 7 июля 2017 г.
- ^ «BLAS (Базовые подпрограммы линейной алгебры)» . www.netlib.org . Проверено 7 июля 2017 г.
- ^ «OpenBLAS: оптимизированная библиотека BLAS» . www.openblas.net . Проверено 7 июля 2017 г.
- ^ «PDLIB/SX: Бизнес-решение | NEC» . Архивировано из оригинала 22 февраля 2007 г. Проверено 20 мая 2007 г.
- ^ "рокБЛАС" . rocmdocs.amd.com . Проверено 21 мая 2021 г.
- ^ "SGI - Научная библиотека SCSL: Домашняя страница" . Архивировано из оригинала 13 мая 2007 г. Проверено 20 мая 2007 г.
- ^ «Студия разработчиков Oracle» . www.oracle.com . Проверено 7 июля 2017 г.
- ^ «Boost Basic Linear Algebra — 1.60.0» . www.boost.org . Проверено 7 июля 2017 г.
- ^ «Армадилло: библиотека линейной алгебры C++» . Arma.sourceforge.net . Проверено 7 июля 2017 г.
- ^ «Численные и системные библиотеки Дланга» . Гитхаб .
- ^ «Элементал: плотная распределенная память и прямая линейная алгебра с разреженной памятью и оптимизация — Элементал» . libelemental.org . Проверено 7 июля 2017 г.
- ^ «ХАСЕМ» . СоурсФордж . 17 августа 2015 г. Проверено 7 июля 2017 г.
- ^ Дафф, Иэн С.; Геру, Майкл А.; Позо, Ролдан (2002). «Обзор разреженных базовых подпрограмм линейной алгебры: новый стандарт с Технического форума BLAS». Транзакции ACM в математическом программном обеспечении . 28 (2): 239–267. дои : 10.1145/567806.567810 . S2CID 9411006 .
- ^ Донгарра, Джек; Хаммарлинг, Свен; Хайэм, Николас Дж.; Релтон, Сэмюэл Д.; Валеро-Лара, Педро; Зоунон, Мавусси (2017). «Проектирование и производительность пакетного BLAS на современных высокопроизводительных вычислительных системах» . Procedia Информатика . 108 : 495–504. дои : 10.1016/j.procs.2017.05.138 . hdl : 2117/106913 .
- ^ Херб, Константин; Велтер, Пол (2022). «Параллельная интеграция по времени с использованием процедур пакетного BLAS (базовые подпрограммы линейной алгебры)». Компьютерная физика. Коммуникации . 270 : 108181. arXiv : 2108.07126 . дои : 10.1016/j.cpc.2021.108181 . S2CID 237091802 .
Дальнейшее чтение
[ редактировать ]- Форум BLAST (21 августа 2001 г.), Стандарт технического форума по базовым подпрограммам линейной алгебры (BLAST) , Ноксвилл, Теннесси: Университет Теннесси
- Додсон, Д.С.; Граймс, Р.Г. (1982), «Замечание об алгоритме 539: базовые подпрограммы линейной алгебры для использования Фортрана», ACM Trans. Математика. Программное обеспечение , 8 (4): 403–404, doi : 10.1145/356012.356020 , S2CID 43081631
- Додсон, Д.С. (1983), «Исправление: Замечание к «Алгоритму 539: базовые подпрограммы линейной алгебры для использования FORTRAN»» , ACM Trans. Математика. Программное обеспечение , 9 : 140, doi : 10.1145/356022.356032 , S2CID 22163977
- Дж. Дж. Донгарра, Дж. Дю Кроз, С. Хаммарлинг и Р. Дж. Хэнсон, Алгоритм 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), ACM Trans. Математика. Softw., 28-2 (2002), стр. 135–151.
- Дж. Донгарра, Стандарт технического форума по базовым подпрограммам линейной алгебры, Международный журнал высокопроизводительных приложений и суперкомпьютеров, 16 (1) (2002), стр. 1–111, и Международный журнал высокопроизводительных приложений и суперкомпьютеров, 16 (2) ( 2002), стр. 115–199.
Внешние ссылки
[ редактировать ]- Домашняя страница BLAS на Netlib.org
- Часто задаваемые вопросы по БЛАС
- Краткое справочное руководство BLAS из Руководства пользователя LAPACK
- Устная история Лоусона Один из первоначальных авторов BLAS обсуждает его создание в устном интервью. Чарльз Л. Лоусон Устное историческое интервью Томаса Хейга, 6 и 7 ноября 2004 г., Сан-Клементе, Калифорния. Общество промышленной и прикладной математики, Филадельфия, Пенсильвания.
- Устная история Донгарры В устном интервью Джек Донгарра исследует раннюю связь BLAS с LINPACK, создание версий BLAS более высокого уровня для новых архитектур и свою более позднюю работу над системой ATLAS для автоматической оптимизации BLAS для конкретных машин. Джек Донгарра, интервью Томаса Хейга по устной истории, 26 апреля 2005 г., Университет Теннесси, Ноксвилл, штат Теннесси. Общество промышленной и прикладной математики, Филадельфия, Пенсильвания
- Как BLAS достигает такой экстремальной производительности? Десять наивных матричных умножений 1000×1000 (10 10 умножение-сложение с плавающей запятой) занимает 15,77 секунды на процессоре с частотой 2,6 ГГц; Реализация BLAS занимает 1,32 секунды.
- Обзор подпрограмм разреженной базовой линейной алгебры: новый стандарт с Технического форума BLAS [2]