Grundläggande underprogram för linjär algebra
| BLAS | |
|---|---|
| Sorts | applikationsprogrammeringsgränssnitt och funktionsbibliotek |
| Skrivet i | Fortran och C |
| Första upplagan | 1979 |
| senaste versionen | 3.10.0 (29 juni 2021) |
| Hemsida | netlib.org/blas/ |
BLAS ( Engelska Basic Linear Algebra Subprograms - basic linear algebra subroutines) är en de facto-standard för applikationsprogrammeringsgränssnitt för att skapa bibliotek som utför grundläggande linjära algebraoperationer , såsom vektor- och matrismultiplikation.
Första gången publicerad 1979 och användes för att skapa stora paket som LAPACK . Intensivt använt i högpresterande beräkningar, har högt optimerade implementeringar av BLAS-gränssnittet utvecklats av hårdvarutillverkare som Intel , såväl som andra (till exempel ATLAS - bärbar självoptimerande BLAS).
LINPACK Benchmark är starkt baserat på DGEMM , en subrutin till BLAS.
Funktionalitet
Funktionaliteten hos BLAS är uppdelad i tre nivåer.
Nivå 1
Denna nivå innehåller vektoroperationer av formen:
punktproduktoperationer , tar normen för en vektor och andra operationer.
Nivå 2
Denna nivå innehåller matris-vektoroperationer av formen:
lösning för med en triangulär matris och andra operationer.
Nivå 3
Innehåller matris-matrisoperationer av formen:
triangulär matrislösning och andra operationer. Denna nivå innehåller den allmänt använda GEMM-operationen ( General Matrix Multiply ) .
Implementeringar
- refblas
- Den officiella referensimplementeringen från netlib . C och Fortran 77 versioner finns tillgängliga .
- Accelerera
- Apples ramverk för Mac OS X , inklusive optimerade versioner av BLAS och LAPACK för PowerPC- och Intel Core-processorer .
- ACML
- Core AMD math-bibliotek som stöder AMD Athlon och Opteron-processorer under Linux och Windows .
- ATLAS
- Självoptimerande Linear Algebra Software ( engelska: Automatically Tuned Linear Algebra Software ), en öppen källkodsimplementering av BLAS-gränssnittet för C och Fortran 77.
- CUDA SDK
- NVIDIA CUDA SDK inkluderar BLAS (cuBLAS) funktionalitet för att skriva C-program för grafikkort i GeForce 8 , GeForce 200 , GeForce 300 (Fermi) serien .
- ESSL
- Engineering and Scientific Subroutine Library från IBM som stöder PowerPC - arkitekturen under AIX och Linux .
- libflame
- Implementering av ett linjärt algebrabibliotek inklusive BLAS av FLAME-projektet.
- Gå till BLAS
- Implementering av Kazushige Goto .
- HP MLIB
- Matematikbibliotek från HP som stöder arkitekturerna IA-64 , PA-RISC , x86 och Opteron under HP-UX och Linux .
- Intel MKL
- Intel Math Kernel Library som stöder Intel- processorer under Linux , Windows och Mac OS X.
- MathKeisan
- NEC matematikbibliotek som stöder NEC SX -arkitektur under SUPER-UX och Itanium under Linux .
- PDLIB/SX
- Public Domain Mathematical Library av NEC för NEC SX-4- systemet .
- SCSL
- SGI :s Scientific Computing Software Library innehåller BLAS- och LAPACK-implementationer för SGI Irix- arbetsstationer .
- Sun Performance Linaray
- Sun Performance Library innehåller optimerad BLAS och LAPACK för SPARC- och AMD64-arkitekturerna under Solaris 8, 9 och 10.
- uBLAS
- Ett C++- mallklassbibliotek som tillhandahåller BLAS-funktionalitet. En del av Boost- biblioteket . Till skillnad från andra implementeringar fokuserar uBLAS mer på algoritmens korrekthet med hjälp av avancerade C++-funktioner än på hög prestanda.
- GSL
- GNU Scientific Library innehåller en plattformsoberoende icke-optimerad C-implementering som distribueras under GNU GPL .
CLBlast
Ett plattformsoberoende ( Windows , Linux , MacOS ) C++-bibliotek implementerat med OpenCL kan köras på ett brett utbud av GPU :er eller andra enheter som stöder parallell beräkning.