Matrix Template Library
| Matrix Template Library
| |
|---|---|
| [[Datei:Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.|150px]] | |
| Basisdaten
| |
| Maintainer | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Entwickler | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Erscheinungsjahr | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Aktuelle Version | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. (Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.) |
| Aktuelle Vorabversion | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. (Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.) |
| Betriebssystem | Linux, Unix, Mac OS X, Windows |
| Programmiersprache | C++ |
| Kategorie | Wissenschaftliche Programmbibliothek |
| Lizenz | Boost Software License |
| Skriptfehler: Ein solches Modul „WLink“ ist nicht vorhanden. | |
Die Matrix Template Library (MTL) ist eine lineare-Algebra-Bibliothek für C++.
Die MTL benutzt Template Programmierung, die die Codelänge erheblich verkürzt. Alle Matrizen und Vektoren sind in den klassischen numerischen Formaten float, double, complex<float> oder complex<double> verfügbar. Die generische Programmierung erlaubt darüber hinaus die Verwendung beliebiger Typen, die über die notwendigen Operationen verfügen. Es können auch beliebige Integerformate (z. B. unsigned short), Typen für Intervallarithmetik (z. B. boost::interval aus der Bibliothekskollektion Boost), Quaternionen (z. B. boost::quaternion), Typen höherer Präzision (z. B. GNU Multiple Precision Arithmetic Library) und geeignete nutzerdefinierte Typen verwendet werden. Die MTL unterstützt mehrere Implementierungen voll und schwach besetzter Matrizen. MTL2 wurde von Jeremy Siek und Andrew Lumsdaine entwickelt.<ref name=SiekLumsdaine98>Jeremy G. Siek, Andrew Lumsdaine: <templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackVorlage:Webarchiv/archiv-botSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. (PDF; 70 kB) ISCOPE, 1998.</ref>
Die letzte Version, MTL4, wird von Peter Gottschling und Andrew Lumsdaine entwickelt. Sie enthält den größten Teil der MTL2-Funktionalität und erweitert diese um neue Optimierungstechniken, wie beispielsweise das Meta-Tuning, welches es unter anderem erlaubt, für Operationen auf Vektoren und Matrizen mit dynamischer Größe die Aufrollparameter im Funktionsaufruf festzulegen. Plattformunabhängige Skalierbarkeit der Performanz wird durch rekursive Datenstrukturen und Algorithmen erreicht.<ref name=Gottschlingetal07>Peter Gottschling, David S. Wise, Michael D. Adams: <templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackVorlage:Webarchiv/archiv-botSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. (PDF; 284 kB) In: Proc. 21st Annual Int. Conf. on Supercomputing. ACM Press, New York 2007, S. 116–125.</ref> Generische Anwendungen können in einer natürlichen Notation geschrieben werden, z. B.: v += A*q - w;, wobei die Bibliothek die geeigneten Algorithmen zur Compilezeit auswählt. Beispielsweise wird bei x*y zwischen Matrix-Vektor-Produkt, Matrizenmultiplikation, Multiplikation eines Vektors mit einem Skalarwert und vielen anderen unterschieden. Das Ziel ist, performanzrelevante technische Details in der Bibliothek zu kapseln und Forschern ein intuitives Interface anzubieten, so dass diese sich auf wissenschaftliche Algorithmen und Modelle konzentrieren können.
Einzelnachweise[Bearbeiten]
<references/>
Weblinks[Bearbeiten]
- Matrix Template Library auf Github