Subprogramas Básicos de Álgebra Linear
| BLAS | ||
|---|---|---|
| Informações gerais | ||
| tipo de programa | álgebra Linear | |
| lançamento inicial | 1979 | |
| Informação técnica | ||
| Programado em | Fortran | |
| Plataformas compatíveis | Multi plataforma | |
| Versões | ||
| Última versão estável | 3.10.0 (29 de julho de 2021) | |
| Links | ||
Subprogramas Básicos de Álgebra Linear ( BLAS ), em espanhol Subprogramas Básicos de Álgebra Lineal , é uma especificação que define um conjunto de rotinas de baixo nível para realizar operações comuns de álgebra linear , como adição de vetores, multiplicação escalar , produto escalar , combinações lineares e multiplicação de matrizes . Eles são as rotinas padrão de baixo nível de fato para bibliotecas de álgebra linear, com ligações para C (interface CBLAS) e Fortran (interface BLAS). Embora a especificação BLAS seja geral, implementações específicas geralmente são otimizadas para acelerar em uma determinada máquina ou arquitetura, de modo que seu uso pode levar a ganhos substanciais de desempenho. As implementações BLAS podem tirar vantagem da existência de hardware especial de ponto flutuante , como registradores vetoriais ou instruções SIMD.
Originou-se como uma biblioteca Fortran em 1979 [ 1 ] e sua interface foi padronizada pelo BLAS Technical Forum (BLAST), cujo último relatório sobre BLAS pode ser encontrado no site da netlib . [ 2 ] Esta biblioteca é conhecida como a implementação de referência e é de domínio público (às vezes referida como biblioteca BLAS), embora não seja otimizada para velocidade.
A maioria das bibliotecas que fornecem rotinas de álgebra linear estão em conformidade com a interface BLAS, permitindo que os usuários da biblioteca desenvolvam programas independentes da biblioteca BLAS em uso. Exemplos de bibliotecas BLAS incluem: AMD Core Math Library (ACML), Arm Performance Libraries, [ 3 ] ATLAS , Intel Math Kernel Library (MKL) e OpenBLAS . ACML não é mais suportado pelo seu produtor. [ 4 ] ATLAS é uma biblioteca portátil que se otimiza automaticamente para uma arquitetura arbitrária. MKL é uma biblioteca de fornecedor gratuita [ 5 ] e proprietária [ 6 ] otimizada para x86 e x86-64 com ênfase no desempenho dos processadores Intel . [ 7 ] OpenBLAS é uma biblioteca de código aberto que é otimizada manualmente para muitas das arquiteturas populares. Os benchmarks LINPACK dependem muito da gemmrotina BLAS para suas medições de desempenho.
Muitos aplicativos de software numérico usam bibliotecas compatíveis com BLAS para realizar cálculos de álgebra linear, como Armadillo, LAPACK , LINPACK , GNU Octave , Mathematica , [ 8 ] MATLAB , [ 9 ] NumPy , [ 10 ] R e Julia .
Plano de fundo
Com o advento da programação numérica, bibliotecas de sub-rotinas sofisticadas tornaram-se úteis. Essas bibliotecas conteriam sub-rotinas para operações matemáticas comuns de alto nível, como descoberta de raízes, inversão de matrizes e resolução de sistemas de equações. O idioma escolhido foi o FORTRAN . A biblioteca de programação numérica mais proeminente foi o Scientific Subroutine Package (SSP) da IBM . [ 11 ] Essas bibliotecas de sub-rotinas permitiram que os programadores se concentrassem em seus problemas específicos e evitassem a reimplementação de algoritmos conhecidos. As rotinas de biblioteca também seriam melhores que as implementações médias; Algoritmos de matriz, por exemplo, podem usar pivotagem total para obter melhor precisão numérica. As rotinas da biblioteca também teriam rotinas mais eficientes. Por exemplo, uma biblioteca pode incluir um programa para resolver uma matriz triangular superior. As bibliotecas incluiriam versões de precisão simples e precisão dupla de alguns algoritmos.
Inicialmente, essas sub-rotinas usavam loops codificados para suas operações de baixo nível. Por exemplo, se uma sub-rotina precisa realizar a multiplicação de matrizes, então a sub-rotina teria três loops aninhados. Os programas de álgebra linear têm muitas operações comuns de baixo nível (as chamadas operações "kernel", não relacionadas a sistemas operacionais ). [ 12 ] Entre 1973 e 1977, várias dessas operações principais foram identificadas. [ 13 ] Essas operações do kernel tornaram-se sub-rotinas definidas que as bibliotecas matemáticas poderiam chamar. As chamadas do kernel tinham vantagens sobre os loops codificados: a rotina da biblioteca seria mais legível, haveria menos chance de bugs e a implementação do kernel poderia ser otimizada para velocidade. Uma especificação para essas operações do kernel usando escalares e vetores , as sub-rotinas de álgebra linear básica de nível 1 (BLAS), foi publicada em 1979. [ 14 ] BLAS foi usado para implementar a biblioteca LINPACK de sub-rotinas de álgebra linear .
A abstração BLAS permite customização para alto desempenho. Por exemplo, LINPACK é uma biblioteca de uso geral que pode ser usada em muitas máquinas diferentes sem modificação. O LINPACK pode usar uma versão genérica do BLAS. Para desempenho, máquinas diferentes podem usar versões personalizadas do BLAS. À medida que as arquiteturas de computação se tornaram mais sofisticadas, surgiram as máquinas vetoriais . O BLAS para uma máquina vetorial pode usar as operações rápidas da máquina vetorial. [ 15 ]
Outros recursos da máquina ficaram disponíveis e também puderam ser explorados. Consequentemente, BLAS foi aumentado de 1984 a 1986 com operações de kernel de nível 2 referentes a operações de matrizes vetoriais. A hierarquia da memória também foi reconhecida como algo a ser explorado. Muitos computadores têm memória cache que é muito mais rápida que a memória principal; manter as manipulações de array localizadas permite um melhor uso do cache. Em 1987 e 1988, BLAS nível 3 foram identificados para realizar operações matriz-matriz. BLAS nível 3 incentivou algoritmos de blocos particionados. A biblioteca LAPACK usa BLAS nível 3. [ 16 ]
O BLAS original estava preocupado apenas com vetores e matrizes densamente armazenados. Outras extensões para BLAS foram abordadas, como para matrizes esparsas. [ 17 ]
ATLAS
O Software Automatically Tuned Linear Algebra Software (ATLAS), em espanhol: software de álgebra linear automaticamente ajustado, busca uma implementação BLAS com maior desempenho. O ATLAS define muitas operações BLAS em termos de algumas rotinas principais e, em seguida, tenta adaptar automaticamente as rotinas principais para um bom desempenho. Uma pesquisa é feita para escolher bons tamanhos de bloco. Os tamanhos dos blocos podem depender do tamanho e da arquitetura do cache do computador. Também são feitos testes para verificar se copiar arrays e vetores melhora o desempenho. Por exemplo, pode ser vantajoso copiar argumentos para que sejam alinhados na linha de cache para que rotinas fornecidas pelo usuário possam usar instruções SIMD .
Funcionalidade
A funcionalidade BLAS é classificada em três conjuntos de rotinas denominados "níveis", que correspondem tanto à ordem cronológica de definição e publicação, quanto ao grau de polinômio nas complexidades dos algoritmos; As operações de nível 1 BLAS geralmente levam tempo linear, O ( n ) , tempo quadrático de operações de nível 2 e tempo cúbico de operações de nível 3. [ 18 ] As implementações modernas de BLAS normalmente fornecem todos os três níveis.
Nível 1
Este nível consiste em todas as rotinas descritas na apresentação original do BLAS (1979), [ 1 ] que definia apenas operações vetoriais em matrizes escalonadas: produtos escalares , normas vetoriais , uma adição vetorial generalizada da forma
(chamado "axpy") e muitas outras operações.
Nível 2
Este nível contém operações matriz-vetor que incluem, entre outras coisas, uma multiplicação generalizada de matriz-vetor ( gemv):
bem como um solucionador para x na equação linear
sendo T triangular. O projeto do BLAS de nível 2 começou em 1984, e os resultados foram publicados em 1988. As subrotinas de nível 2 são especialmente destinadas a melhorar o desempenho de programas que usam BLAS em processadores vetoriais , onde os BLAS de nível 1 são subótimos" porque ocultam o array- natureza vetorial das operações do compilador." [ 19 ]
Nível 3
Este nível, publicado formalmente em 1990, [ 18 ] contém operações matriz-matriz , incluindo uma " multiplicação geral de matrizes " ( gemm), da forma
onde A e B podem opcionalmente ser transpostos ou conjugados hermitianos dentro da rotina e todas as três matrizes podem ser escalonadas. A multiplicação de matriz ordinária AB pode ser realizada definindo α para um e C para uma matriz totalmente nula de tamanho apropriado.
Também estão incluídas no Nível 3 rotinas para resolver
onde T é uma matriz triangular, entre outras características.
Por causa da onipresença das multiplicações de matrizes em muitas aplicações científicas, incluindo o resto da implementação do BLAS nível 3, e porque existem algoritmos mais rápidos além da repetição óbvia da multiplicação de matrizes e vetores, gemmé uma otimização alvo principal para implementadores de BLAS. Por exemplo, decompor um ou ambos de A , B em arrays de blocos gemmpode ser implementado recursivamente. Esta é uma das razões para incluir o parâmetro β , para que os resultados dos blocos anteriores possam ser acumulados. Observe que essa decomposição requer o caso especial β = 1 que muitas implementações otimizam, eliminando assim uma multiplicação para cada valor de C. Essa decomposição permite uma melhor localidade de referência tanto no espaço quanto no tempo dos dados utilizados no produto. Isso, por sua vez, aproveita o cache do sistema . [ 20 ] Para sistemas com mais de um nível de cache, o bloqueio pode ser aplicado uma segunda vez na ordem em que os blocos são usados na computação. Ambos os níveis de otimização são usados em implementações como ATLAS. Mais recentemente, as implementações do Kazushige Goto mostraram que o bloqueio apenas para o cache L2 , combinado com uma cuidadosa amortização de cópia para memória contígua para reduzir as falhas de TLB , é superior ao ATLAS. Uma implementação altamente ajustada com base nessas ideias faz parte do GotoBLAS, OpenBLAS e BLIS.
Uma variação comum de gemmé gemm3m, que calcula um produto complexo usando "três multiplicações de matrizes reais e cinco adições de matrizes reais em vez das convencionais quatro multiplicações de matrizes reais e duas adições de matrizes reais", um algoritmo semelhante ao algoritmo de Strassen descrito pela primeira vez por Peter. Ungar. [ 21 ]
Implementações
- Acelerar
- A estrutura da Apple para macOS e iOS , incluindo versões otimizadas de BLAS e LAPACK . [ 22 ] [ 23 ]
- ACML
- A biblioteca AMD Core Math, suportada pelas CPUs AMD Athlon e Opteron no Linux e Windows . [ 24 ]
- C++ AMP BLAS
- A biblioteca AMP BLAS C++ é uma implementação de código aberto do BLAS para a extensão de linguagem AMP da Microsoft para Visual C++. [ 25 ]
- ATLAS
- Software de álgebra linear otimizado automaticamente, uma implementação de código aberto das APIs BLAS para C e Fortran 77 . [ 26 ]
- BLIS
- Estrutura de software de instanciação de biblioteca semelhante ao BLAS para instanciação rápida. Baseado em GotoBLAS. [ 27 ]
- cuBlos
- BLAS otimizado para placas de GPU baseadas em NVIDIA, exigindo poucas chamadas de biblioteca adicionais. [ 28 ]
- NVBLAS
- BLAS otimizado para placas de GPU baseadas em NVIDIA, fornecendo apenas recursos de nível 3, mas como um substituto direto para outras bibliotecas BLAS. [ 29 ]
- CLBLAS
- Uma implementação OpenCL do BLAS pela AMD. Parte das Bibliotecas de Computadores da AMD. [ 30 ]
- CLAST
- Uma implementação OpenCL enxuta do BLAS. [ 31 ]
- Eigen BLAS
- Uma biblioteca Fortran 77 e C BLAS implementada sobre a biblioteca Eigen licenciada por MPL , suportando arquiteturas x86 , x86 64 , ARM (NEON) e PowerPC .
- ESSL
- Biblioteca de Sub-rotinas Científicas e de Engenharia da IBM , suportando a arquitetura PowerPC em AIX e Linux . [ 32 ]
- GotoBLAS
- Implementação de BLAS licenciada por BSD de Kazushige Goto, ajustada em particular para Intel Nehalem / Atom , VIA Nanoprocessor , AMD Opteron .
- Biblioteca Científica GNU
- Implementação multiplataforma de muitas rotinas numéricas. Ele contém uma interface CBLAS.
- HPMLIB
- HP Math Library com suporte à arquitetura IA-64 , PA-RISC , x86 e Opteron em HPUX e Linux .
- Intel MKL
- Intel Math Kernel Library, compatível com x86 de 32 e 64 bits, disponível gratuitamente na Intel . [ 5 ] Inclui otimizações para CPUs Intel Pentium , Core e Intel Xeon e Intel Xeon Phi ; suporte para Linux , Windows e macOS . [ 33 ]
- MathKeisanGenericName
- Bibliotecas matemáticas NEC , suportando arquitetura NEC SX sob SUPER-UX e Itanium sob Linux . [ 34 ]
- Netlib BLAS
- A implementação de referência oficial em Netlib, escrita em Fortran 77 . [ 35 ]
- Netlib CBLAS
- Interface C de referência ao BLAS. Também é possível (e popular) chamar Fortran BLAS de C. [ 36 ]
- OpenBLAS
- BLAS otimizado baseado em GotoBLAS, compatível com processadores x86 , x86-64 , MIPS e ARM . [ 37 ]
- PDLIB/SX
- Domínio público da NEC Mathematical Library para o sistema NEC SX-4 . [ 38 ]
- SCSL
- A Biblioteca de Software de Computação Científica da SGI contém implementações BLAS e LAPACK para as estações de trabalho Irix da SGI . [ 39 ]
- Biblioteca de desempenho da Sun
- BLAS e LAPACK otimizados para arquiteturas SPARC , Core e AMD64 no Solaris 8, 9 e 10, bem como no Linux. [ 40 ]
- uBLAS
- Uma biblioteca de classes de modelo C++ genérica que fornece funcionalidade BLAS. Parte da biblioteca Boost . Fornece ligações para muitas bibliotecas aceleradas por hardware em uma notação unificadora. Além disso, o uBLAS se concentra na correção de algoritmos que usam recursos avançados de C++. [ 41 ]
Bibliotecas usando BLAS
- Tatu
- Biblioteca de álgebra linear C++ que atinge um bom equilíbrio entre velocidade e facilidade de uso. Ele usa classes de modelo e tem ligações opcionais para BLAS/ATLAS e LAPACK. É patrocinado pela NICTA (na Austrália) e tem uma licença gratuita. [ 42 ]
- LAPACK
- Biblioteca de álgebra linear de nível superior construída em cima do BLAS. Assim como o BLAS, existe uma implementação de referência, mas existem muitas alternativas como libFlame e MKL.
- olhar
- LLVM - biblioteca numérica genérica acelerada para ciência e aprendizado de máquina escrita em D. Fornece subprogramas de álgebra linear genérica (GLAS). Ele pode ser construído em cima de uma implementação do CBLAS. [ 43 ]
Bibliotecas semelhantes (não suportadas pelo BLAS)
- Elementar
- Elemental é um software de código aberto para álgebra linear densa e esparsa e otimização em memória distribuída. [ 44 ]
- HASEM
- Biblioteca de modelos C++, que pode resolver equações lineares e calcular autovalores. Tem uma licença BSD. [ 45 ]
- O MA
- A Library for Accelerated Mathematical Applications (LAMA) é uma biblioteca de modelos C++ para escrever solucionadores numéricos visando vários tipos de hardware (por exemplo, GPU via CUDA ou OpenCL ) em sistemas de memória distribuída, ocultando a programação específica de hardware no desenvolvedor do programa
- MTL4
- Matrix Template Library versão 4 é uma biblioteca de template C++ genérica que fornece funcionalidade BLAS densa e esparsa. O MTL4 estabelece uma interface intuitiva (semelhante ao MATLAB ) e ampla aplicabilidade graças à programação genérica .
BLAS para matrizes esparsas
Várias extensões para BLAS para lidar com matrizes esparsas foram sugeridas ao longo da história da biblioteca; um pequeno conjunto de rotinas de kernel de matriz esparsa foi finalmente padronizado em 2002. [ 46 ]
Veja também
- Álgebra linear numérica , o tipo de problema que BLAS resolve
- LAPACK
Referências
- ↑ a b Lawson, CL; Hanson, R.J.; Kincaid, D.; Krogh, F.T. (1979). «Subprogramas básicos de álgebra linear para uso em FORTRAN». ACM Trans. Matemática. Softw. 5 (3):308-323. doi : 10.1145/355841.355847 . Algoritmo 539 .
- ^ "Fórum Técnico BLAS" . netlib.org . Recuperado em 7 de julho de 2017 .
- ^ "Bibliotecas de desempenho do braço" . Braço . 2020 . Recuperado em 2 de junho de 2020 .
- ^ "ACML - AMD Core Math Library" . AMD . 2013. Arquivado a partir do original em 2015-09-05 . Recuperado em 26 de agosto de 2015 .
- ^ a b "Opções sem custo para Intel Math Kernel Library (MKL), apoie-se, Royalty-Free" . Intel . 2015 . Recuperado em 31 de agosto de 2015 .
- ^ "Biblioteca Intel Math Kernel (Intel MKL)" . Intel . 2015 . Recuperado em 25 de agosto de 2015 .
- ^ "Aviso de Otimização" . Intel . 2012 . Recuperado em 10 de abril de 2013 .
- ^ Douglas Quinney (2003). "Então, o que há de novo no Mathematica 5.0?" . MSOR Connections (The Higher Education Academy) 3 (4). Arquivado do original em 29 de outubro de 2013.
- ↑ Cleve Moler (2000). "MATLAB Incorpora LAPACK" . MathWorks . Recuperado em 26 de outubro de 2013 .
- ↑ Stefan van der Walt; S. Chris Colbert; Gaël Varoquaux (2011). «O array NumPy: uma estrutura para computação numérica eficiente». Computação em Ciência e Engenharia 13 (2): 22-30. Bibcode : 2011arXiv1102.1523V . arXiv : 1102.1523 . doi : 10.1109/MCSE.2011.37 .
- ↑ Boisvert, Ronald F. (2000). «Software matemático: passado, presente e futuro». Matemática e Computadores na Simulação 54 (4–5): 227-241. Bibcode : 2000cs........4004B . arXiv : cs/0004004 . doi : 10.1016/S0378-4754(00)00185-3 .
- ↑ Até o SSP (que apareceu por volta de 1966) tinha algumas rotinas básicas como RADD (adicionar linhas), CADD (adicionar colunas), SRMA (escalar linha e adicionar a outra linha) e RINT (intercâmbio de linhas). Essas rotinas aparentemente não foram usadas como operações do kernel para implementar outras rotinas, como inversão de matrizes. Veja IBM (1970), System/360 Scientific Subroutine Package, Version III, Programmer's Manual (5ª edição), International Business Machines, GH20-0205-4 ..
- ↑ Fórum BLAST, 2001 , p. 1.
- ^ Lawson e outros ., 1979 .
- ↑ Embora os processadores vetoriais tenham caído em desuso, as instruções vetoriais em CPUs modernas são essenciais para o desempenho ideal em rotinas BLAS.
- ↑ Fórum BLAST, 2001 , p. 1–2.
- ↑ Fórum BLAST, 2001 , p. dois.
- ^ a b Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). «Um conjunto de subprogramas básicos de álgebra linear de nível 3». Transações ACM em Software Matemático 16 (1): 1-17. ISSN 0098-3500 . doi : 10.1145/77626.79170 .
- ↑ Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). "Um conjunto estendido de subprogramas de álgebra linear básica FORTRAN". ACM Trans. Matemática. Softw. 14 : 1-17. doi : 10.1145/42288.42291 .
- ↑ Golub, Gene H. ; Van Loan, Charles F. (1996), Matrix Computations (3ª Edição), Johns Hopkins, ISBN 978-0-8018-5414-9 .
- ↑ Van Zee, Campo G.; Smith, Tyler M. (24 de julho de 2017). "Implementando a Multiplicação de Matriz Complexa de Alto Desempenho através dos Métodos 3m e 4m". Transações ACM em Software Matemático 44 (1): 1-36. doi : 10.1145/3086466 .
- ^ "Guias e código de exemplo" . developer.apple . com . Recuperado em 7 de julho de 2017 .
- ^ "Guias e código de exemplo" . developer.apple . com . Recuperado em 7 de julho de 2017 .
- ^ "Cópias arquivadas" . Arquivado a partir do original em 30 de novembro de 2005 . Recuperado em 26 de outubro de 2005 .
- ↑ "Biblioteca C++ AMP BLAS" . CodePlex (em inglês) . Arquivado do original em 8 de julho de 2017 . Recuperado em 7 de julho de 2017 .
- ^ "Software de álgebra linear ajustado automaticamente (ATLAS)" . math-atlas.sourceforge.net . Recuperado em 7 de julho de 2017 .
- ↑ blis: BLAS-like Library Instantiation Software Framework , flame, 30 de junho de 2017 , recuperado em 7 de julho de 2017 .
- ^ "cuBLAS" (em inglês) . 29 de julho de 2013 . Recuperado em 7 de julho de 2017 .
- ^ "NVBLAS" (em inglês) . 15 de maio de 2018 . Recuperado em 15 de maio de 2018 .
- ↑ clBLAS: uma biblioteca de software contendo funções BLAS escritas em OpenCL , clMathLibraries, 3 de julho de 2017 , recuperada em 7 de julho de 2017 .
- ↑ Nugteren, Cedric (5 de julho de 2017), CLBlast: Tuned OpenCL BLAS , recuperado em 7 de julho de 2017 .
- ↑ Centro de Conhecimento IBM: Biblioteca de Sub-rotinas Científicas e de Engenharia .
- ↑ "Biblioteca Intel Math Kernel (Intel MKL) | IntelSoftware» . software.intel.com (em inglês) . Recuperado em 7 de julho de 2017 .
- ↑ Mathkeisan, NEC. "MathKeisan" . www.mathkeisan.com (em inglês) . Recuperado em 7 de julho de 2017 .
- ^ "BLAS (Subprogramas Básicos de Álgebra Linear)" . www.netlib.org . Recuperado em 7 de julho de 2017 .
- ^ "BLAS (Subprogramas Básicos de Álgebra Linear)" . www.netlib.org . Recuperado em 7 de julho de 2017 .
- ^ "OpenBLAS: Uma biblioteca BLAS otimizada" . www.openblas.net . Recuperado em 7 de julho de 2017 .
- ^ "Cópias arquivadas" . Arquivado a partir do original em 22 de fevereiro de 2007 . Recuperado em 20 de maio de 2007 .
- ^ "Cópias arquivadas" . Arquivado a partir do original em 13 de maio de 2007 . Recuperado em 20 de maio de 2007 .
- ^ "Oracle Developer Studio" . www.oracle.com . Recuperado em 7 de julho de 2017 .
- ^ "Aumento Álgebra Linear Básica - 1.60.0" . www.boost.org . Recuperado em 7 de julho de 2017 .
- ^ "Tatu: biblioteca de álgebra linear C++" . arma.sourceforge.net . Recuperado em 7 de julho de 2017 .
- ^ "Bibliotecas numéricas e de sistema Dlang" .
- ^ "Elementar: memória distribuída densa e álgebra linear esparsa-direta e otimização — Elementar" . lielemental.org . Recuperado em 7 de julho de 2017 .
- ↑ "HASSEM" . SourceForge (em inglês) . Recuperado em 7 de julho de 2017 .
- ↑ Duff, Iain S.; Heroux, Michael A.; Bem, Roldan (2002). "Uma Visão Geral dos Subprogramas de Álgebra Linear Básica Esparsa: O Novo Padrão do Fórum Técnico BLAS" . Transações ACM em Software Matemático 28 (2): 239-267. doi : 10.1145/567806.567810 .
Erro de citação: A tag <ref>definida no <references>nome "Kazushige_2008" não é usada no texto anterior.
Erro de citação: Tag <ref>definida no <references>nome "GotoBLAS2" não é usada no texto anterior.
<ref>definida no <references>nome "Geijn_2008" não é usada no texto anterior.Outra leitura
- Fórum BLAST (21 de agosto de 2001), Padrão de Fórum Técnico de Subprogramas de Álgebra Linear Básica (BLAST) , Knoxville, TN: University of Tennessee .
- Dodson, D.S.; Grimes, RG (1982), "Observação sobre o algoritmo 539: Subprogramas de álgebra linear básica para uso de Fortran", ACM Trans. Matemática. Softw. 8 (4):403-404, doi : 10.1145/356012.356020 .
- Dodson, DS (1983), "Corrigendum: Observação sobre "Algoritmo 539: Sub-rotinas de álgebra linear básica para uso de FORTRAN " , ACM Trans. Matemática. Softw. 9 :140, doi : 10.1145/356022.356032 .
- JJ Dongarra, J. Du Croz, S. Hammarling e RJ Hanson, Algoritmo 656: Um Conjunto Estendido de Subprogramas de Álgebra Linear Básica FORTRAN, ACM Trans. Matemática. Softw., 14 (1988), p. 18-32.
- JJ Dongarra, J. Du Croz, IS Duff e S. Hammarling, A Nível 3 Conjunto de Subprogramas de Álgebra Linear Básica, ACM Trans. Matemática. Softw., 16 (1990), págs. 1-17.
- JJ Dongarra, J. Du Croz, IS Duff e S. Hammarling, Algoritmo 679: Um Conjunto de Subprogramas Básicos de Álgebra Linear de Nível 3, ACM Trans. Matemática. Softw., 16 (1990), págs. 18-28.
- Novo BLAS
- LS Blackford, J. Demmel, J. Dongarra, I. Duff, S. Hammarling, G. Henry, M. Heroux, L. Kaufman, A. Lumsdaine, A. Petitet, R. Pozo, K. Remington, RC Whaley, Um conjunto atualizado de applets básicos de álgebra linear (BLAS), ACM Trans. Matemática. Softw., 28-2 (2002), págs. –
- J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High-Performance Applications and Supercomputing, 16(1) (2002), pp. 1 – 111, e International Journal of High Performance Applications and Supercomputing, 16(2) (2002), pp. –
Links externos
- Página inicial do BLAS em Netlib.org
- Perguntas frequentes sobre BLAS
- Guia do Usuário LAPACK Guia de Referência Rápida do BLAS
- Lawson Oral History Um dos autores originais do BLAS discute sua criação em uma entrevista de história oral. Entrevista de História Oral de Charles L. Lawson por Thomas Haigh, 6-7 de novembro de 2004, San Clemente, Califórnia. Society for Industrial and Applied Mathematics, Filadélfia, PA.
- História Oral de Dongarra Em uma entrevista de história oral, Jack Dongarra explora o relacionamento inicial do BLAS com o LINPACK, a criação de versões de alto nível do BLAS para novas arquiteturas e seu trabalho posterior no sistema ATLAS para otimizar automaticamente o BLAS para máquinas específicas. Jack Dongarra, entrevista de história oral por Thomas Haigh, 26 de abril de 2005, Universidade do Tennessee, Knoxville TN. Society for Industrial and Applied Mathematics, Filadélfia, PA
- Como o BLAS alcança um desempenho tão extremo? Dez multiplicações de matriz 1000 × 1000 ingênuas (10 10 pontos flutuantes multiplicar-adicionar) levam 15,77 segundos no processador de 2,6 GHz; A implementação do BLAS leva 1,32 segundos.
- Uma Visão Geral dos Subprogramas de Álgebra Linear Básica Esparsa: O Novo Padrão do Fórum Técnico BLAS