Subprograme de bază de algebră liniară
| BLAS | ||
|---|---|---|
| Informatii generale | ||
| tip de program | algebră liniară | |
| lansarea inițială | 1979 | |
| Informații tehnice | ||
| Programat în | Fortran | |
| Platforme acceptate | Platformă multiplă | |
| Versiuni | ||
| Ultima versiune stabilă | 3.10.0 (29 iulie 2021) | |
| Legături | ||
Subprogramele de algebră liniară de bază ( BLAS ), în spaniolă Subprogramas Básicos de Álgebra Lineal , este o specificație care definește un set de rutine de nivel scăzut pentru a efectua operații comune de algebră liniară , cum ar fi adunarea vectorială, înmulțirea scalară , produsul scalar , combinațiile liniare și înmulțirea matricei . Acestea sunt rutinele standard de nivel scăzut de facto pentru bibliotecile de algebră liniară, cu legături pentru C (interfață CBLAS) și Fortran (interfață BLAS). Deși specificația BLAS este generală, anumite implementări sunt adesea optimizate pentru accelerare pe o anumită mașină sau arhitectură, astfel încât utilizarea lor poate duce la câștiguri substanțiale de performanță. Implementările BLAS pot profita de existența unui hardware special în virgulă mobilă , cum ar fi registre vectoriale sau instrucțiuni SIMD.
A apărut ca o bibliotecă Fortran în 1979 [ 1 ] și interfața sa a fost standardizată de Forumul Tehnic BLAS (BLAST), al cărui cel mai recent raport despre BLAS poate fi găsit pe site-ul netlib . [ 2 ] Această bibliotecă este cunoscută ca implementarea de referință și este în domeniul public (uneori denumită în mod confuz biblioteca BLAS), deși nu este optimizată pentru viteză.
Majoritatea bibliotecilor care furnizează rutine de algebră liniară se conformează cu interfața BLAS, permițând utilizatorilor bibliotecii să dezvolte programe independente de biblioteca BLAS utilizată. Exemple de biblioteci BLAS includ: AMD Core Math Library (ACML), Arm Performance Libraries, [ 3 ] ATLAS , Intel Math Kernel Library (MKL) și OpenBLAS . ACML nu mai este susținut de producătorul său. [ 4 ] ATLAS este o bibliotecă portabilă care se optimizează automat pentru o arhitectură arbitrară. MKL este o bibliotecă gratuită [ 5 ] și proprietară [ 6 ] optimizată pentru x86 și x86-64, cu accent pe performanța procesoarelor Intel . [ 7 ] OpenBLAS este o bibliotecă open source care este optimizată manual pentru multe dintre arhitecturile populare. Benchmark -urile LINPACK se bazează în mare măsură pe gemmrutina BLAS pentru măsurarea performanței.
Multe aplicații software numerice folosesc biblioteci compatibile cu BLAS pentru a efectua calcule de algebră liniară, cum ar fi Armadillo, LAPACK , LINPACK , GNU Octave , Mathematica , [ 8 ] MATLAB , [ 9 ] NumPy , [ 10 ] R și Julia .
Fundal
Odată cu apariția programării numerice, bibliotecile de subrutine sofisticate au devenit utile. Aceste biblioteci ar conține subrutine pentru operații matematice comune de nivel înalt, cum ar fi găsirea rădăcinilor, inversarea matricei și rezolvarea sistemelor de ecuații. Limba aleasă a fost FORTRAN . Cea mai proeminentă bibliotecă de programare numerică a fost IBM Scientific Subroutine Package (SSP) . [ 11 ] Aceste biblioteci de subrutine le-au permis programatorilor să se concentreze asupra problemelor lor specifice și să evite reimplementarea algoritmilor cunoscuți. Rutinele bibliotecii ar fi, de asemenea, mai bune decât implementările medii; Algoritmii de matrice, de exemplu, pot folosi pivotarea completă pentru a obține o precizie numerică mai bună. Rutinele bibliotecii ar avea, de asemenea, rutine mai eficiente. De exemplu, o bibliotecă poate include un program pentru a rezolva o matrice triunghiulară superioară. Bibliotecile ar include versiuni cu precizie unică și precizie dublă ale unor algoritmi.
Inițial, aceste subrutine foloseau bucle codificate hard pentru operațiunile lor de nivel scăzut. De exemplu, dacă o subrutină trebuie să efectueze multiplicarea matricei, atunci subprogramul ar avea trei bucle imbricate. Programele de algebră liniară au multe operații comune de nivel scăzut (așa-numitele operațiuni „kernel”, fără legătură cu sistemele de operare ). [ 12 ] Între 1973 și 1977, au fost identificate mai multe astfel de operațiuni de bază. [ 13 ] Aceste operațiuni ale nucleului au devenit subrutine definite pe care bibliotecile matematice le puteau apela. Apelurile la kernel aveau avantaje față de buclele hard-coded: rutina bibliotecii ar fi mai lizibilă, ar exista mai puține șanse de erori și implementarea kernel-ului ar putea fi optimizată pentru viteză. O specificație pentru aceste operații de nucleu folosind scalari și vectori , subrutinele de algebră liniară de bază de nivel 1 (BLAS), a fost publicată în 1979. [ 14 ] BLAS a fost folosit pentru a implementa biblioteca LINPACK de subrutine de algebră liniară .
Abstracția BLAS permite personalizarea pentru performanțe ridicate. De exemplu, LINPACK este o bibliotecă de uz general care poate fi utilizată pe multe mașini diferite fără modificări. LINPACK ar putea folosi o versiune generică a BLAS. Pentru performanță, diferite mașini pot folosi versiuni personalizate ale BLAS. Pe măsură ce arhitecturile de calcul au devenit mai sofisticate, au apărut mașinile vectoriale . BLAS pentru o mașină vectorială ar putea folosi operațiunile rapide ale mașinii vectoriale. [ 15 ]
Alte caracteristici ale mașinii au devenit disponibile și au putut fi, de asemenea, exploatate. În consecință, BLAS a fost mărit din 1984 până în 1986 cu operațiuni de nivel 2 nucleu care se referă la operațiuni cu matrice vectorială. Ierarhia memoriei a fost, de asemenea, recunoscută ca ceva de exploatat. Multe computere au memorie cache care este mult mai rapidă decât memoria principală; menținerea manipulărilor de matrice localizate permite o mai bună utilizare a cache-ului. În 1987 și 1988, nivelul 3 BLAS au fost identificați pentru a efectua operații matrice-matrice. Nivelul 3 BLAS a încurajat algoritmii de blocuri partiționați. Biblioteca LAPACK folosește BLAS nivelul 3. [ 16 ]
BLAS inițial era preocupat doar de vectori și matrice stocați dens. Au fost abordate și alte extensii ale BLAS, cum ar fi matricele rare. [ 17 ]
ATLAS
Software-ul de algebră liniară reglat automat (ATLAS), în spaniolă: software-ul de algebră liniară reglat automat, caută o implementare BLAS cu performanțe mai mari. ATLAS definește multe operațiuni BLAS în ceea ce privește unele rutine de bază și apoi încearcă să adapteze automat rutinele de bază pentru o performanță bună. Se face o căutare pentru a alege dimensiuni bune de bloc. Dimensiunile blocurilor pot depinde de dimensiunea și arhitectura memoriei cache a computerului. De asemenea, se fac teste pentru a vedea dacă copierea matricelor și vectorilor îmbunătățește performanța. De exemplu, poate fi avantajos să copiați argumente astfel încât acestea să fie aliniate în linia cache, astfel încât rutinele furnizate de utilizator să poată utiliza instrucțiuni SIMD .
Functionalitate
Funcționalitatea BLAS este clasificată în trei seturi de rutine numite „niveluri”, care corespund atât ordinii cronologice de definire și publicare, cât și gradului polinomului în complexitățile algoritmilor; Operațiunile BLAS de nivel 1 au, în general, timp liniar, O ( n ) , timp patratic al operațiunilor de nivel 2 și timp cub al operațiunilor de nivelul 3. [ 18 ] Implementările moderne BLAS oferă de obicei toate cele trei niveluri.
Nivelul 1
Acest nivel constă din toate rutinele descrise în prezentarea originală a BLAS (1979), [ 1 ] care defineau numai operații vectoriale pe matrice eșalon: produse punctiforme , norme vectoriale , o adunare vectorială generalizată de formă
(numite „axpy”) și multe alte operațiuni.
Nivelul 2
Acest nivel conține operații matrice-vector care includ, printre altele, o multiplicare matrice-vector generalizată ( gemv):
precum și un rezolvator pentru x în ecuația liniară
fiind T triunghiular. Proiectarea BLAS de nivel 2 a început în 1984, iar rezultatele au fost publicate în 1988. Subrutinele de nivel 2 sunt destinate în special să îmbunătățească performanța programelor care utilizează BLAS pe procesoare vectoriale , unde BLAS de nivel 1 sunt suboptime", deoarece ascund matricea- natura vectorială a operațiilor compilatorului.” [ 19 ]
Nivelul 3
Acest nivel, publicat oficial în 1990, [ 18 ] conține operații matrice-matrice , inclusiv o „ înmulțire generală a matricei ” ( gemm), de forma
unde A și B pot fi opțional transpuse sau conjugate hermitian în cadrul rutinei și toate cele trei matrice pot fi eșalonate. Înmulțirea obișnuită a matricei AB poate fi efectuată prin setarea α la unu și C la o matrice total zero de dimensiunea corespunzătoare.
De asemenea, în Nivelul 3 sunt incluse și rutine de rezolvat
unde T este o matrice triunghiulară, printre alte caracteristici.
Datorită ubicuității înmulțirilor de matrice în multe aplicații științifice, inclusiv în restul implementării BLAS de nivel 3 și pentru că există algoritmi mai rapidi dincolo de repetiția evidentă a înmulțirii matricelor și vectoriale, gemmaceasta este o țintă principală de optimizare pentru implementatorii BLAS. De exemplu, descompunerea unuia sau a ambelor elemente A , B în matrice de blocuri gemmpoate fi implementată recursiv. Acesta este unul dintre motivele includerii parametrului β , astfel încât rezultatele blocurilor anterioare să poată fi acumulate. Rețineți că această descompunere necesită cazul special β = 1 pe care multe implementări îl optimizează, eliminând astfel o multiplicare pentru fiecare valoare a lui C. Această descompunere permite o mai bună localitate de referință atât în spațiu cât și în timp a datelor utilizate în produs. Aceasta, la rândul său, profită de memoria cache a sistemului . [ 20 ] Pentru sistemele cu mai mult de un nivel de cache, blocarea poate fi aplicată a doua oară în ordinea în care blocurile sunt utilizate în calcul. Ambele niveluri de optimizare sunt utilizate în implementări precum ATLAS. Mai recent, implementările Kazushige Goto au arătat că blocarea numai la memoria cache L2 , combinată cu amortizarea atentă a copierii în memorie adiacentă pentru a reduce ratele TLB , este superioară ATLAS. O implementare extrem de reglată, bazată pe aceste idei, face parte din GotoBLAS, OpenBLAS și BLIS.
O variație comună a gemmeste gemm3m, care calculează un produs complex folosind „trei înmulțiri de matrice reale și cinci adunări de matrice reale în loc de cele patru înmulțiri de matrice reale convenționale și două adunări de matrice reale”, un algoritm similar algoritmului Strassen descris pentru prima dată de Petru. Ungar. [ 21 ]
Implementări
- Accelera
- Cadrul Apple pentru macOS și iOS , inclusiv versiunile optimizate ale BLAS și LAPACK . [ 22 ] [ 23 ]
- ACML
- Biblioteca AMD Core Math, susținută de procesoarele AMD Athlon și Opteron pe Linux și Windows . [ 24 ]
- C++ AMP BLAS
- Biblioteca AMP BLAS C++ este o implementare open source a BLAS pentru extensia Microsoft AMP Language pentru Visual C++. [ 25 ]
- ATLAS
- Software de algebră liniară optimizat automat, o implementare open source a API -urilor BLAS pentru C și Fortran 77 . [ 26 ]
- BLIS
- Cadru software de instanțiere de bibliotecă asemănător BLAS pentru instanțiere rapidă. Bazat pe GotoBLAS. [ 27 ]
- cuBle
- BLAS optimizat pentru carduri GPU bazate pe NVIDIA, necesitând câteva apeluri suplimentare de bibliotecă. [ 28 ]
- NVBLAS
- BLAS optimizat pentru plăcile GPU bazate pe NVIDIA, oferind doar funcții de nivel 3, dar ca înlocuitor direct pentru alte biblioteci BLAS. [ 29 ]
- CLBLAS
- O implementare OpenCL a BLAS de către AMD. Face parte din bibliotecile de computere AMD. [ 30 ]
- clBLAST
- O implementare lean OpenCL a BLAS. [ 31 ]
- Eigen BLAS
- O bibliotecă Fortran 77 și C BLAS implementată pe deasupra bibliotecii Eigen cu licență MPL , care acceptă arhitecturi x86 , x86 64 , ARM (NEON) și PowerPC .
- ESSL
- Biblioteca IBM Engineering and Scientific Subroutine , care acceptă arhitectura PowerPC pe AIX și Linux . [ 32 ]
- GotoBLAS
- Implementarea BLAS de Kazushige Goto cu licență BSD, reglată în special pentru Intel Nehalem / Atom , VIA Nanoprocessor , AMD Opteron .
- Biblioteca științifică GNU
- Implementarea multiplatformă a multor rutine numerice. Conține o interfață CBLAS.
- HPMLIB
- Biblioteca HP Math care acceptă arhitectura IA-64 , PA-RISC , x86 și Opteron pe HPUX și Linux .
- Intel MKL
- Biblioteca Intel Math Kernel, x86 compatibilă pe 32 de biți și 64 de biți, disponibilă gratuit de la Intel . [ 5 ] Include optimizări pentru procesoarele Intel Pentium , Core și Intel Xeon și Intel Xeon Phi ; suport pentru Linux , Windows și macOS . [ 33 ]
- MathKeisan
- Biblioteci de matematică NEC , care acceptă arhitectura NEC SX sub SUPER-UX și Itanium sub Linux . [ 34 ]
- Netlib BLAS
- Implementarea oficială de referință în Netlib, scrisă în Fortran 77 . [ 35 ]
- Netlib CBLAS
- Interfața C de referință la BLAS. De asemenea, este posibil (și popular) să apelați Fortran BLAS de la C. [ 36 ]
- OpenBLAS
- BLAS optimizat bazat pe GotoBLAS, compatibil cu procesoare x86 , x86-64 , MIPS și ARM . [ 37 ]
- PDLIB/SX
- Domeniul Public al Bibliotecii Matematice NEC pentru sistemul NEC SX-4 . [ 38 ]
- SCSL
- Biblioteca de software SGI Scientific Computing conține implementări BLAS și LAPACK pentru stațiile de lucru Irix ale SGI . [ 39 ]
- Biblioteca Sun Performance
- BLAS și LAPACK optimizate pentru arhitecturi SPARC , Core și AMD64 pe Solaris 8, 9 și 10, precum și Linux. [ 40 ]
- uBLAS
- O bibliotecă de clase de șabloane C++ generică care oferă funcționalitate BLAS. Face parte din biblioteca Boost . Oferă legături la multe biblioteci accelerate hardware într-o notație unificatoare. În plus, uBLAS se concentrează pe corectarea algoritmilor care utilizează funcții C++ avansate. [ 41 ]
Biblioteci care folosesc BLAS
- Armadillo
- Bibliotecă de algebră liniară C++ care atinge un echilibru bun între viteză și ușurință în utilizare. Folosește clase de șablon și are legături opționale la BLAS/ATLAS și LAPACK. Este sponsorizat de NICTA (în Australia) și are o licență gratuită. [ 42 ]
- PACACK
- Bibliotecă de algebră liniară de nivel superior construită pe BLAS. La fel ca BLAS, există o implementare de referință, dar există multe alternative precum libFlame și MKL.
- uite
- LLVM - bibliotecă numerică generică accelerată pentru știință și învățare automată scrisă în D. Oferă subprograme generice de algebră liniară (GLAS). Poate fi construit pe baza unei implementări CBLAS. [ 43 ]
Biblioteci similare (nu sunt acceptate de BLAS)
- Elementar
- Elemental este un software open source pentru algebra liniară densă și rară și optimizare în memoria distribuită. [ 44 ]
- HASEM
- Biblioteca de șabloane C++, care poate rezolva ecuații liniare și poate calcula valori proprii. Are licență BSD. [ 45 ]
- MA
- Library for Accelerated Mathematical Applications (LAMA) este o bibliotecă de șabloane C++ pentru scrierea soluțiilor numerice care vizează diverse tipuri de hardware (de exemplu, GPU prin CUDA sau OpenCL ) pe sisteme de memorie distribuită, ascund programarea specifică hardware-ului la dezvoltatorul de programe.
- MTL4
- Matrix Template Library versiunea 4 este o bibliotecă de șabloane C++ generică care oferă funcționalitate BLAS densă și rară. MTL4 stabilește o interfață intuitivă (similară cu MATLAB ) și o aplicabilitate largă datorită programării generice .
BLAS pentru matrici rare
De-a lungul istoriei bibliotecii, au fost sugerate diverse extensii ale BLAS pentru a gestiona matrice rare ; un mic set de rutine ale nucleului cu matrice rare au fost în cele din urmă standardizate în 2002. [ 46 ]
Vezi și
- Algebră liniară numerică , tipul de problemă pe care o rezolvă BLAS
- PACACK
Referințe
- ↑ a b Lawson, CL; Hanson, R.J.; Kincaid, D.; Krogh, F. T. (1979). „Subprograme de algebră liniară de bază pentru utilizarea FORTRAN”. ACM Trans. Matematică. Softw. 5 (3): 308-323. doi : 10.1145/355841.355847 . Algoritmul 539 .
- ^ „Forumul tehnic BLAS” . netlib.org . Recuperat la 7 iulie 2017 .
- ^ „Biblioteci Arm Performance” . Brațul . 2020 . Preluat la 2 iunie 2020 .
- ^ „ACML – Biblioteca AMD Core Math” . AMD . 2013. Arhivat din original la 05-09-2015 . Consultat la 26 august 2015 .
- ^ a b „Opțiuni fără cost pentru biblioteca Intel Math Kernel (MKL), sprijiniți-vă, fără drepturi de autor” . Intel . 2015 . Consultat la 31 august 2015 .
- ^ „Biblioteca Intel Math Kernel (Intel MKL)” . Intel . 2015 . Consultat la 25 august 2015 .
- ^ „Notificare de optimizare” . Intel . 2012 . Consultat la 10 aprilie 2013 .
- ^ Douglas Quinney (2003). „Deci, ce este nou în Mathematica 5.0?” . MSOR Connections (Academia de învățământ superior) 3 (4). Arhivat din original pe 29 octombrie 2013.
- ↑ Cleve Moler (2000). „MATLAB încorporează LAPACK” . MathWorks . Extras 26 octombrie 2013 .
- ↑ Stefan van der Walt; S. Chris Colbert; Gaël Varoquaux (2011). „Matricea NumPy: o structură pentru calcul numeric eficient”. Computing in Science and Engineering 13 (2): 22-30. Cod biblic : 2011arXiv1102.1523V . arXiv : 1102.1523 . doi : 10.1109/MCSE.2011.37 .
- ↑ Boisvert, Ronald F. (2000). „Software matematic: trecut, prezent și viitor”. Matematică și calculatoare în simulare 54 (4–5): 227-241. Cod biblic : 2000cs ........4004B . arXiv : cs/0004004 . doi : 10.1016/S0378-4754(00)00185-3 .
- ↑ Chiar și SSP (care a apărut în jurul anului 1966) avea niște rutine de bază precum RADD (adăugați rânduri), CADD (adăugați coloane), SRMA (scale row and add to another row) și RINT (interchange de rând). Aceste rutine aparent nu au fost folosite ca operații de nucleu pentru a implementa alte rutine, cum ar fi inversarea matricei. Vezi IBM (1970), System/360 Scientific Subroutine Package, Versiunea III, Manualul programatorului (ediția a 5-a), International Business Machines, GH20-0205-4 ..
- ↑ BLAST Forum, 2001 , p. 1.
- ^ Lawson și colab ., 1979 .
- ↑ În timp ce procesoarele vectoriale au căzut în cele din urmă din favoare, instrucțiunile vectoriale din procesoarele moderne sunt esențiale pentru performanța optimă în rutinele BLAS.
- ↑ BLAST Forum, 2001 , p. 1–2.
- ↑ BLAST Forum, 2001 , p. Două.
- ^ a b Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). „Un set de subprograme de algebră liniară de bază de nivel 3”. Tranzacții ACM pe software matematic 16 (1): 1-17. ISSN 0098-3500 . doi : 10.1145/77626.79170 .
- ↑ Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). „Un set extins de subprograme de algebră liniară de bază FORTRAN”. ACM Trans. Matematică. Softw. 14 : 1-17. doi : 10.1145/42288.42291 .
- ↑ Golub, Gene H .; Van Loan, Charles F. (1996), Matrix Computations (Ediția a treia), Johns Hopkins, ISBN 978-0-8018-5414-9 .
- ↑ Van Zee, Field G.; Smith, Tyler M. (24 iulie 2017). „Implementarea înmulțirii matrice complexe de înaltă performanță prin metodele 3m și 4m”. Tranzacții ACM pe software matematic 44 (1): 1-36. doi : 10.1145/3086466 .
- ^ „Ghiduri și exemplu de cod” . developer.apple.com . Recuperat la 7 iulie 2017 .
- ^ „Ghiduri și exemplu de cod” . developer.apple.com . Recuperat la 7 iulie 2017 .
- ^ „Copii arhivate” . Arhivat din original la 30 noiembrie 2005 . Recuperat la 26 octombrie 2005 .
- ↑ „Biblioteca C++ AMP BLAS” . CodePlex (în engleză) . Arhivat din original pe 8 iulie 2017 . Recuperat la 7 iulie 2017 .
- ^ „Software de algebră liniară reglat automat (ATLAS)” . math-atlas.sourceforge.net . Recuperat la 7 iulie 2017 .
- ↑ blis: BLAS-like Library Instantiation Software Framework , flame, 30 iunie 2017 , preluat la 7 iulie 2017 .
- ^ „cuBLAS” (în engleză) . 29 iulie 2013 . Recuperat la 7 iulie 2017 .
- ^ „NVBLAS” (în engleză) . 15 mai 2018 . Extras 15 mai 2018 .
- ↑ clBLAS: o bibliotecă de software care conține funcții BLAS scrise în OpenCL , clMathLibraries, 3 iulie 2017 , preluat la 7 iulie 2017 .
- ^ Nugteren, Cedric (5 iulie 2017), CLBlast: Tuned OpenCL BLAS , preluat la 7 iulie 2017 .
- ↑ Centrul de cunoștințe IBM: Biblioteca de subrutine de inginerie și științific .
- ↑ „Biblioteca Intel Math Kernel (Intel MKL) | IntelSoftware» . software.intel.com (în engleză) . Recuperat la 7 iulie 2017 .
- ↑ Mathkeisan, NEC. „MathKeisan” . www.mathkeisan.com (în engleză) . Recuperat la 7 iulie 2017 .
- ^ „BLAS (subprograme de algebră liniară de bază)” . www.netlib.org . Recuperat la 7 iulie 2017 .
- ^ „BLAS (subprograme de algebră liniară de bază)” . www.netlib.org . Recuperat la 7 iulie 2017 .
- ^ „OpenBLAS: O bibliotecă BLAS optimizată” . www.openblas.net . Recuperat la 7 iulie 2017 .
- ^ „Copii arhivate” . Arhivat din original pe 22 februarie 2007 . Recuperat la 20 mai 2007 .
- ^ „Copii arhivate” . Arhivat din original pe 13 mai 2007 . Recuperat la 20 mai 2007 .
- ^ „Oracle Developer Studio” . www.oracle.com . Recuperat la 7 iulie 2017 .
- ^ „Boost Basic Linear Algebra - 1.60.0” . www.boost.org . Recuperat la 7 iulie 2017 .
- ^ „Armadillo: biblioteca de algebră liniară C++” . weapon.sourceforge.net . Recuperat la 7 iulie 2017 .
- ^ „Bibliotecile numerice și de sistem Dlang” .
- ^ „Elementar: algebră și optimizare liniară cu memorie distribuită densă și dispersă directă - Elementar” . libelemental.org . Recuperat la 7 iulie 2017 .
- ↑ „HASSEM” . SourceForge (în engleză) . Recuperat la 7 iulie 2017 .
- ↑ Duff, Iain S.; Heroux, Michael A.; Ei bine, Roldan (2002). „O prezentare generală a subprogramelor de algebră liniară de bază rare: noul standard de la Forumul tehnic BLAS” . ACM Transactions on Mathematical Software 28 (2): 239-267. doi : 10.1145/567806.567810 .
Eroare de citare: eticheta <ref>definită în <references>numită „Kazushige_2008” nu este folosită în textul anterior.
Eroare de citare: eticheta <ref>definită în <references>numită „GotoBLAS2” nu este utilizată în textul anterior.
<ref>definită în <references>numită „Geijn_2008” nu este utilizată în textul anterior.Alte lecturi
- Forumul BLAST (21 august 2001), Standard de forum al subprogramelor de algebră liniară de bază (BLAST) , Knoxville, TN: Universitatea din Tennessee .
- Dodson, D.S.; Grimes, RG (1982), „Observație asupra algoritmului 539: Subprograme de algebră liniară de bază pentru utilizarea Fortran”, ACM Trans. Matematică. Softw. 8 (4):403-404, doi : 10.1145/356012.356020 .
- Dodson, DS (1983), „Corrigendum: Observație privind „Algoritmul 539: Subprograme de bază de algebră liniară pentru utilizarea FORTRAN ” „, ACM Trans. Matematică. Softw. 9 :140, doi : 10.1145/356022.356032 .
- JJ Dongarra, J. Du Croz, S. Hammarling și RJ Hanson, Algoritmul 656: An Extended Set of FORTRAN Basic Linear Algebra Subprograms, ACM Trans. Matematică. Softw., 14 (1988), p. 18 – 32.
- JJ Dongarra, J. Du Croz, IS Duff și S. Hammarling, Un set de subprograme de algebră liniară de bază de nivel 3, ACM Trans. Matematică. Softw., 16 (1990), pag. 1 – 17.
- JJ Dongarra, J. Du Croz, IS Duff și S. Hammarling, Algoritmul 679: Un set de subprograme de algebră liniară de bază de nivel 3, ACM Trans. Matematică. Softw., 16 (1990), pag. 18 – 28.
- BLAS nou
- 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, Un set actualizat de aplicații de bază de algebră liniară (BLAS), ACM Trans. Matematică. Softw., 28-2 (2002), pag. –
- J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High-Performance Applications and Supercomputing, 16(1) (2002), pp. 1 – 111, și International Journal of High Performance Applications and Supercomputing, 16(2) (2002), pp. –
Link- uri externe
- Pagina de pornire a BLAS pe Netlib.org
- Întrebări frecvente BLAS
- Ghid de utilizare LAPACK Ghid de referință rapidă BLAS
- Lawson Oral History Unul dintre autorii originali ai BLAS discută despre creația sa într-un interviu de istorie orală. Charles L. Lawson Interviu de istorie orală de Thomas Haigh, 6-7 noiembrie 2004, San Clemente, California. Societatea pentru Matematică Industrială și Aplicată, Philadelphia, PA.
- Dongarra Oral History Într-un interviu de istorie orală, Jack Dongarra explorează relația timpurie a BLAS cu LINPACK, crearea de versiuni de nivel superior de BLAS pentru noi arhitecturi și munca sa ulterioară asupra sistemului ATLAS pentru a optimiza automat BLAS pentru anumite mașini. Jack Dongarra, interviu de istorie orală de Thomas Haigh, 26 aprilie 2005, Universitatea din Tennessee, Knoxville TN. Societatea pentru Matematică Industrială și Aplicată, Philadelphia, PA
- Cum atinge BLAS o performanță atât de extremă? Zece înmulțiri naive de matrice 1000 × 1000 (10 10 virgula mobilă multiplicare-adunare) durează 15,77 secunde pe procesorul de 2,6 GHz; Implementarea BLAS durează 1,32 secunde.
- O prezentare generală a subprogramelor de algebră liniară de bază rare: noul standard de la Forumul tehnic BLAS