„Basic Linear Algebra Subprograms“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Abigor (Diskussion | Beiträge) K Änderungen von 141.52.232.84 (Diskussion) rückgängig gemacht und letzte Version von Supermartl wiederhergestellt |
Dr.tux (Diskussion | Beiträge) →Implementierungen: + Oracle PL/SQL |
||
(47 dazwischenliegende Versionen von 32 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Dieser Artikel| |
{{Dieser Artikel|behandelt die Software. Zu weiteren Bedeutungen von „BLAS“ siehe [[Blas (Begriffsklärung)]].}} |
||
{{Infobox Software |
|||
| Name = BLAS |
|||
| Logo = |
|||
| Screenshot = |
|||
| Beschreibung = <!-- Beschreibung des Screenshots! --> |
|||
| Maintainer = |
|||
| Hersteller = |
|||
| Management = |
|||
| AktuelleVersion = 3.10.0 |
|||
| AktuelleVersionFreigabeDatum = 29. Juni 2021 |
|||
| Betriebssystem = [[Plattformunabhängigkeit|plattformübergreifend]] |
|||
| Programmiersprache = [[Fortran]] |
|||
| Kategorie = [[Lineare Algebra]] |
|||
| Lizenz = |
|||
| Deutsch = |
|||
| Website = [http://www.netlib.org/blas/ www.netlib.org/blas] |
|||
}} |
|||
⚫ | '''Basic Linear Algebra Subprograms''' (kurz: '''BLAS''') bezeichnet eine [[Programmbibliothek]], die elementare Operationen der [[Lineare Algebra|linearen Algebra]] wie [[Vektor]]- und [[Matrix (Mathematik)|Matrixmultiplikationen]] bereitstellt. Es gibt eine Vielzahl von Implementierungen in verschiedenen Sprachen bzw. für verschiedene Architekturen und Plattformen. Der Vorteil von BLAS liegt nicht nur in der Wiederverwendbarkeit und der Arbeitserleichterung für den Programmierer, sondern auch in der Möglichkeit für Hardwarehersteller, für diese häufig gebrauchten Subroutinen hochoptimierte, zum Teil in [[Assembler (Informatik)|Assembler]] realisierte Implementierungen bereitzustellen.<ref name="bench">{{cite web|url=http://eigen.tuxfamily.org/index.php?title=Benchmark-August2008|title=BLAS Benchmark-August2008|publisher=eigen.tuxfamily.org|date=2008-08-01|accessdate=2010-03-04}}</ref> Daher finden BLAS vor allem im [[Supercomputer|Supercomputing]]-Bereich breite Verwendung. |
||
⚫ | |||
⚫ | '''Basic Linear Algebra Subprograms''' (BLAS) bezeichnet eine [[ |
||
⚫ | |||
== Funktionalität == |
== Funktionalität == |
||
Es werden folgende Datentypen unterstützt: ''single'' (32 Bit), ''double'' (64 Bit), ''complex'' (2 × 32 Bit), ''doublecomplex'' (2 × 64 Bit). |
|||
⚫ | |||
⚫ | |||
=== Level 1 === |
=== Level 1 === |
||
Level 1 enthält [[Vektor |
Level 1 enthält [[Vektor]]-Rechenoperationen der Form |
||
:<math>\mathbf{y} \leftarrow \alpha \mathbf{x} + \mathbf{y} |
:<math>\mathbf{y} \leftarrow \alpha \mathbf{x} + \mathbf{y}</math> |
||
sowie unter anderem [[Skalarprodukt]] und [[ |
sowie unter anderem das [[Skalarprodukt]] und [[Norm (Mathematik)#Vektornormen|Vektornormen]]. |
||
=== Level 2 === |
=== Level 2 === |
||
Level 2 enthält [[Matrix |
Level 2 enthält [[Matrix-Vektor-Produkt|Vektor-Matrix-Rechenoperationen]] der Form |
||
:<math>\mathbf{y} \leftarrow \alpha A \mathbf{x} + \beta \mathbf{y} |
:<math>\mathbf{y} \leftarrow \alpha A \mathbf{x} + \beta \mathbf{y}</math> |
||
sowie unter anderem das Lösen von <math>T \mathbf{x} = \mathbf{y}</math> |
sowie unter anderem das Lösen von [[Lineares Gleichungssystem|linearen Gleichungssystemen]] <math>T \mathbf{x} = \mathbf{y}</math> mit Matrix <math>T</math> in [[Dreiecksmatrix|Dreiecksform]]. |
||
=== Level 3 === |
=== Level 3 === |
||
Level 3 enthält [[ |
Level 3 enthält [[Matrixmultiplikation|Matrix-Rechenoperationen]] der Form |
||
:<math>C \leftarrow \alpha A B + \beta C \!</math> |
:<math>C \leftarrow \alpha A B + \beta C \!</math> |
||
Zeile 29: | Zeile 47: | ||
sowie unter anderem das Lösen von <math>B \leftarrow \alpha T^{-1} B</math> für Matrix <math>T</math> in [[Lineares Gleichungssystem|Dreiecksform]]. Dieser Level enthält die oft benötigte Matrixmultiplikation. |
sowie unter anderem das Lösen von <math>B \leftarrow \alpha T^{-1} B</math> für Matrix <math>T</math> in [[Lineares Gleichungssystem|Dreiecksform]]. Dieser Level enthält die oft benötigte Matrixmultiplikation. |
||
== |
== Implementierungen == |
||
;refblas: Offizielle Referenzimplementierung von [[ |
;refblas: Offizielle Referenzimplementierung von [[Netlib]]. [[C (Programmiersprache)|C-]] und [[Fortran|Fortran-77]]-Versionen sind verfügbar. |
||
;ACML: [[AMD]] Core Math Library, für AMD |
;ACML: [[AMD]] Core Math Library, für AMD-[[Athlon]]- und -[[AMD Opteron|Opteron]]-CPUs unter [[Linux]] und [[Microsoft Windows|Windows]]. |
||
;ATLAS: [[Automatically Tuned Linear Algebra Software]], ein [[Open Source|Open-Source]]-Implementierung der BLAS-[[Programmierschnittstelle|APIs]] für |
;ATLAS: [[Automatically Tuned Linear Algebra Software]], ein [[Open Source|Open-Source]]-Implementierung der BLAS-[[Programmierschnittstelle|APIs]] für C und Fortran 77. |
||
;ESSL: [[IBM]]s Engineering and Scientific Subroutine Library, für die [[PowerPC]] Architektur unter [[AIX]] und |
;ESSL: [[IBM]]s Engineering and Scientific Subroutine Library, für die [[PowerPC]] Architektur unter [[AIX]] und Linux. |
||
;Goto BLAS:BLAS-Implementierung von [[Kazushige Goto]].<ref name="goto">{{cite web|url=http://www.nytimes.com/2005/11/28/technology/28super.html|title=Writing the Fastest Code, by Hand, for Fun: A Human Computer Keeps Speeding Up Chips (englisch)|publisher=New York Times, John Markoff|date=2005-11-28|accessdate=2010-03-04}}</ref> |
|||
;Goto BLAS: [[Kazushige Goto]]s BLAS-Implementierung. |
|||
;OpenBLAS: Weiterentwicklung von Goto BLAS für moderne Prozessoren. |
|||
;HP MLIB: [[Hewlett-Packard|HP]]s Math library, für die Architekturen [[Itanium]], [[PA-RISC]], [[x86]] und [[Opteron]] unter [[HPUX]] und [[Linux]]. |
|||
; |
;HP MLIB: [[Hewlett-Packard|HP]]s Math library, für die Architekturen [[Intel Itanium|Itanium]], [[PA-RISC]], [[X86-Prozessor|x86]] und Opteron unter [[HP-UX]] und Linux. |
||
;IMKL: Intel [[Math Kernel Library]] (BLAS, LAPACK, ScaLAPACK, Sparse Solvers, FFT, Vector Math), für Intel-Prozessoren unter Linux, [[macOS]] und Windows. |
|||
⚫ | |||
;LAMA: Die Library for Accelerated Math Applications ([[LAMA]]) ist eine, in C++ geschriebene, Template-Bibliothek zum Schreiben numerischer Löser für verschiedene Hardware (z. B. [[Grafikprozessor|GPUs]] mittels [[CUDA]] oder [[OpenCL]]) in Systemen mit verteiltem Speicher – sie versteckt die hardwarespezifische Programmierung vor dem Anwendungsentwickler.<ref>[http://www.libama.org/overview.html www.libama.org]</ref> |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
;clBLAS: Eine Implementierung von BLAS für [[OpenCL]]. |
|||
;AmdBLAS: Die [[AMD]]-Implementierung von BLAS für das [[ATI Stream|ATI-Stream]]-SDK. |
|||
;Armadillo: Die Armadillo Template-Bibliothek ist ein Wrapper für C++. |
|||
;UTL_NLA: Subset der Implementierung von BLAS und [[LAPACK]] als [[PL/SQL]] Package in der [[Oracle (Datenbanksystem)|Oracle Datenbank]] ab Version 9i |
|||
== Weblinks == |
== Weblinks == |
||
* [http://www.netlib.org/blas/ BLAS-Website] |
* [http://www.netlib.org/blas/ Referenz BLAS-Website] |
||
* [http://www.openblas.net/ OpenBLAS] |
|||
* [http://math-atlas.sourceforge.net BLAS-Implementierung Automatically Tuned Linear Algebra Software (ATLAS)] |
* [http://math-atlas.sourceforge.net BLAS-Implementierung Automatically Tuned Linear Algebra Software (ATLAS)] |
||
* [http://developer.amd.com/tools-and-sdks/opencl-zone/acl-amd-compute-libraries AmdBLAS] für [[ATI Stream]] |
|||
== Einzelnachweise == |
|||
[[Kategorie:Bibliothek (Programmierung)]] |
|||
<references /> |
|||
⚫ | |||
[[Kategorie:Mathematikbibliothek]] |
|||
[[en:Basic Linear Algebra Subprograms]] |
|||
⚫ | |||
[[fr:Basic Linear Algebra Subprograms]] |
|||
[[ja:Basic Linear Algebra Subprograms]] |
|||
[[pl:Basic Linear Algebra Subprograms]] |
|||
[[ru:Basic Linear Algebra Subprograms]] |
|||
[[uk:Basic Linear Algebra Subprograms]] |
|||
[[zh:BLAS]] |
Aktuelle Version vom 28. Februar 2024, 18:57 Uhr
BLAS | |
---|---|
Basisdaten
| |
Erscheinungsjahr | 1979 |
Aktuelle Version | 3.10.0 (29. Juni 2021) |
Betriebssystem | plattformübergreifend |
Programmiersprache | Fortran |
Kategorie | Lineare Algebra |
www.netlib.org/blas |
Basic Linear Algebra Subprograms (kurz: BLAS) bezeichnet eine Programmbibliothek, die elementare Operationen der linearen Algebra wie Vektor- und Matrixmultiplikationen bereitstellt. Es gibt eine Vielzahl von Implementierungen in verschiedenen Sprachen bzw. für verschiedene Architekturen und Plattformen. Der Vorteil von BLAS liegt nicht nur in der Wiederverwendbarkeit und der Arbeitserleichterung für den Programmierer, sondern auch in der Möglichkeit für Hardwarehersteller, für diese häufig gebrauchten Subroutinen hochoptimierte, zum Teil in Assembler realisierte Implementierungen bereitzustellen.[1] Daher finden BLAS vor allem im Supercomputing-Bereich breite Verwendung.
Die Definition der Schnittstelle zu BLAS ist ein De-facto-Standard.
Funktionalität
[Bearbeiten | Quelltext bearbeiten]Es werden folgende Datentypen unterstützt: single (32 Bit), double (64 Bit), complex (2 × 32 Bit), doublecomplex (2 × 64 Bit).
Die Funktionalität von BLAS wird in drei Stufen (Level) unterteilt:
Level 1
[Bearbeiten | Quelltext bearbeiten]Level 1 enthält Vektor-Rechenoperationen der Form
sowie unter anderem das Skalarprodukt und Vektornormen.
Level 2
[Bearbeiten | Quelltext bearbeiten]Level 2 enthält Vektor-Matrix-Rechenoperationen der Form
sowie unter anderem das Lösen von linearen Gleichungssystemen mit Matrix in Dreiecksform.
Level 3
[Bearbeiten | Quelltext bearbeiten]Level 3 enthält Matrix-Rechenoperationen der Form
sowie unter anderem das Lösen von für Matrix in Dreiecksform. Dieser Level enthält die oft benötigte Matrixmultiplikation.
Implementierungen
[Bearbeiten | Quelltext bearbeiten]- refblas
- Offizielle Referenzimplementierung von Netlib. C- und Fortran-77-Versionen sind verfügbar.
- ACML
- AMD Core Math Library, für AMD-Athlon- und -Opteron-CPUs unter Linux und Windows.
- ATLAS
- Automatically Tuned Linear Algebra Software, ein Open-Source-Implementierung der BLAS-APIs für C und Fortran 77.
- ESSL
- IBMs Engineering and Scientific Subroutine Library, für die PowerPC Architektur unter AIX und Linux.
- Goto BLAS
- BLAS-Implementierung von Kazushige Goto.[2]
- OpenBLAS
- Weiterentwicklung von Goto BLAS für moderne Prozessoren.
- HP MLIB
- HPs Math library, für die Architekturen Itanium, PA-RISC, x86 und Opteron unter HP-UX und Linux.
- IMKL
- Intel Math Kernel Library (BLAS, LAPACK, ScaLAPACK, Sparse Solvers, FFT, Vector Math), für Intel-Prozessoren unter Linux, macOS und Windows.
- LAMA
- Die Library for Accelerated Math Applications (LAMA) ist eine, in C++ geschriebene, Template-Bibliothek zum Schreiben numerischer Löser für verschiedene Hardware (z. B. GPUs mittels CUDA oder OpenCL) in Systemen mit verteiltem Speicher – sie versteckt die hardwarespezifische Programmierung vor dem Anwendungsentwickler.[3]
- MTL4
- Die Matrix Template Library Version 4 ist eine generische C++-Template-Bibliothek für schwach und voll besetzte BLAS-Funktionalität. MTL4 bietet ein intuitives Interface (ähnlich Matlab) und dank Generischer Programmierung eine breite Anwendbarkeit.
- uBLAS
- Eine generische C++-Klassenbibliothek, welche BLAS-Funktionalität bereitstellt, Teil der Boost-Bibliothek.
- CUBLAS
- Die Nvidia-Implementierung von BLAS für die CUDA-Technologie.
- clBLAS
- Eine Implementierung von BLAS für OpenCL.
- AmdBLAS
- Die AMD-Implementierung von BLAS für das ATI-Stream-SDK.
- Armadillo
- Die Armadillo Template-Bibliothek ist ein Wrapper für C++.
- UTL_NLA
- Subset der Implementierung von BLAS und LAPACK als PL/SQL Package in der Oracle Datenbank ab Version 9i
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Referenz BLAS-Website
- OpenBLAS
- BLAS-Implementierung Automatically Tuned Linear Algebra Software (ATLAS)
- AmdBLAS für ATI Stream
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ BLAS Benchmark-August2008. eigen.tuxfamily.org, 1. August 2008, abgerufen am 4. März 2010.
- ↑ Writing the Fastest Code, by Hand, for Fun: A Human Computer Keeps Speeding Up Chips (englisch). New York Times, John Markoff, 28. November 2005, abgerufen am 4. März 2010.
- ↑ www.libama.org