Vă puteți împărtăși cunoștințele îmbunătățindu-le ( cum? ) Conform recomandărilor proiectelor corespunzătoare .
Subprograme de bază de algebră liniară
Prima versiune | 1979 |
---|---|
Scris in | Fortran |
Tip |
Interfață de programare Biblioteca software |
Site-ul web | www.netlib.org/blas |
Subprogramele de bază algebră liniară ( BLAS ) este un set de funcții standardizate ( interfață de programare ) care efectuează operații de algebră liniară de bază , cum ar fi adunarea vectorială, produsele punctelor sau multiplicarea matricii. Aceste funcții au fost publicate pentru prima dată în 1979 și sunt utilizate în biblioteci mai dezvoltate precum LAPACK . Utilizate pe scară largă pentru calculul de înaltă performanță , aceste funcții au fost dezvoltate într-un mod extrem de optimizat de producătorii de computere precum Intel și AMD sau de alți autori ( Goto (en) BLAS și ATLAS (en) - o versiune portabilă a BLAS - sunt exemple) . La testele de performanță LINPACK folosesc masiv funcția generală de multiplicare matrice (EMM) BLAS.
Până la începutul anilor 1970, codurile de calcul rapide foloseau rutine optimizate codate direct în limbajul mașinii pentru evaluarea anumitor funcții. Între 1972 și 1978, au fost identificate cele mai des numite funcții din aceste programe. Așadar, în 1964, în timp ce lucra la proiectul IBM 7030 , Sweeney a adunat statistici cu privire la calculele în virgulă mobilă efectuate cel mai frecvent pe IBM 704 și a constatat că convocarea simplă a reprezentat 11% din toate. Din aceste programe, am realizat rutine denumite generic, astfel încât acestea să poată fi utilizate într-o „ cutie neagră ”: astfel, programele au devenit mai ușor de citit și depanat, în timp ce am continuat să accelerăm aceste rutine.
Unele calculatoare au făcut posibilă accelerarea calculelor operațiunilor (sume sau produse cu virgulă mobilă ) de îndată ce mai mult de zece dintre aceste operații au fost înlănțuite ( arhitectura conductelor ); altele, cum ar fi RS / 6000 , aveau o arhitectură care le permitea să calculeze cu aceeași viteză (cu același număr de cicluri de ceas ) un produs urmat de un adaos ( x * y + z ) și un produs simplu ( x * y ) sau un adaos ( x + y ); pe piață au apărut alte specificități ale mașinilor (prezența coprocesoarelor etc.), care trebuiau exploatate. Astfel, între 1984 și 1986, BLAS a fost mărit de operații de nivel 2 (produse matrice-vector). Progresele în calcul paralel au arătat că arhitectura memoriei joacă un rol critic în timpul accesului la date. Rescrierea algoritmilor, localizarea calculelor cât mai mult posibil în memoria cache , provoacă o accelerație spectaculoasă. În 1987-88, s-au născut operațiuni de nivel 3 (produse și sume matrice-matrice): BLAS 3 încurajează programatorii să favorizeze calculele blocurilor cu blocuri complete (cel puțin zero termeni).
Operațiile de algebră liniară implementate în BLAS sunt împărțite în 3 niveluri de complexitate crescândă.
Nivelul 1 Acest nivel conține operațiile pe vectorii formularuluiunde este un scalar și și sunt vectori; precum și operațiuni punct și normă, printre multe altele. Nivelul 2 Acest nivel conține printre altele operațiile de tip matrice-vector ale formularuluiunde și sunt scalari și sunt vectori și este o matrice; precum și rezoluția in când este o matrice triunghiulară. Nivelul 3 Acest nivel conține, printre altele, operații de tip matrice-matrice ale formularuluiunde și sunt scalari și , și sunt matrici; precum și rezoluția pentru matrici triunghiulare . Nivelul 3 conține în mod deosebit operația de multiplicare a matricii generale folosită pe scară largă (DGEMM).