Matrix Template Library

Från Wikipedia
Hoppa till: navigering, sök

Matrix Template Library (MTL) är ett programbibliotek för att underlätta beräkningar med linjär algebra i C++-program.

MTL använder templates (mallar), vilket dramatiskt minskar mängden kod som behöver skrivas. Alla matriser och vektorer finns tillgängliga i alla klassiska numeriska format såsom float, double, complex<float> och complex<double>.

Vidare kan man med hjälp av generisk programmering nyttja valfria typer så länge de tillhandahåller de nödvändiga operationerna. Man kan till exempel använda godtyckliga heltalsformat (till exempel unsigned short), typer för intervall-aritmetik (till exempel boost::interval från Boost C++), kvaternioner (till exempel boost::quaternion) eller lämpliga användardefinierade typer.

MTL stöder flera implementeringar av täta respektive glesa matriser. MTL2 utvecklades av Jeremy Siek och Andrew Lumsdaine.[1]

Den senaste versionen, MTL4, utvecklas av Peter Gottschling och Andrew Lumsdaine. Den bevarar det mesta av funktionaliteten från MTL2 och inkluderar nya optimeringstekniker såsom meta-tuning, till exempel kan loop-unrolling av containerformat av dynamisk storlek specificeras i funktionsanropet. Plattformsagnostisk skalning av prestandan uppnås genom rekursiva datastrukturer och algoritmer.[2]

Program kan skrivas i en naturlig notation, till exempel v += A*q - w;, programbiblioteket tar hand om att ropa upp de lämpliga algoritmerna: matris-vektor-produkter vs. matris-produkter vs. vektor-skalär-produkter etc. Målet är att ta hand om prestanda-problem inuti programbiblioteket och förse forskare med ett intuitivt gränssnitt. MTL4 används i finita element-, och finita volym-tillämpningar, till exempel FEniCS Project.[3]

Referenser[redigera | redigera wikitext]

  1. ^ J.G. Siek and A. Lumsdaine: The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra. ISCOPE 1998.
  2. ^ P. Gottschling, D.S. Wise, and M.D. Adams: Representation-transparent matrix algorithms with scalable performance. ICS '07: Proc. 21st intern. conf. on Supercomputing, pp. 116--125, ACM Press, New York, 2007.
  3. ^ Dolfin web page within the FEniCS project.

Se även[redigera | redigera wikitext]

  • Boost uBLAS, ett alternativt lineär algebra-bibliotek för C++.

Externa länkar[redigera | redigera wikitext]