Iterativt mallbibliotek

Iterativt mallbibliotek
Sorts Bibliotek
Utvecklaren Open Systems Lab
Skrivet i C++
Operativ system Programvara för flera plattformar
senaste versionen 4.0.0 ( 26 oktober 2001 )
Licens Halvfri programvara [1]
Hemsida osl.iu.edu/research/itl/

Iterative Template Library (ITL) är ett bibliotek med komponenter utformade för att tillämpa iterativa numeriska metoder för att manipulera linjära algebraobjekt .

Funktioner

ITL består av två funktionella grupper. Den första gruppen är en samling komplexa iterativa metoder som använder grundläggande linjära algebraalgoritmer implementerade i specialiserade paket som Matrix Template Library (MTL) eller Blitz++ . Den andra gruppen är en uppsättning förkonditioneringsalgoritmer utformade specifikt för att arbeta med MTL.

ITL-biblioteket använder abstrakta gränssnitt för matris - vektor- , vektor-vektor- och vektor- skalära operationer , vilket gör att du transparent kan använda deras implementering i tredjepartsbibliotek.

Utvecklingshistorik

Detta bibliotek skapades vid Open Systems Lab  , ett forskningslaboratorium vid Indiana University , som en del av MTL.

Den publicerades först separat från MTL den 25 juli 2000 . Den nya releasen innehöll bland annat flera gränssnitt för BLAS och Blitz++.

I den senaste utgåvan (4.0.0) delades biblioteket upp i tre funktionella områden: metoder för att arbeta med Krylov-underrummet ; förutsättningar och gränssnitt. Metoderna för att arbeta med Krylov-underrummet är grundläggande och är inte begränsade i användning av standardbibliotek som implementerar linjära algebraobjekt. Gränssnitten är avsedda för användning i iterativa algoritmer för Krylov-underrummet för de grundläggande operationerna för linjär algebra, implementerade i tredjepartsbibliotek, såsom: MTL, Blitz++. Förutsättningar implementeras endast för att arbeta med MTL-biblioteket.

Dessutom inkluderades experimentella gränssnitt i den här versionen för att stödja parallell beräkning .

Idéerna som fastställs i ITL har fortsatt och utvecklats i projektet Iterative Eigensolver Template Library (IETL) [2] .

Användningsexempel

Principerna för generisk programmering , inom vilka biblioteket skapades, [3] innebär att förenkla gränssnitt. Detta har fått ITL-algoritmer att likna någon form av pseudokod . Åtminstone jämfört med andra implementeringar av samma algoritmer. Till exempel skulle implementeringen av konjugatgradientmetoden se ut så här:

/* nödvändiga operationer: mult,copy,dot_conj,add,scaled */ mall < klass Matrix , klass VectorX , klass VectorB , klass Preconditioner , klass Iteration > int cg ( const Matrix & A , VectorX & x , const VectorB & b , const Preconditioner & M , Iteration & iter ) { typedef VectorX TmpVec ; typnamn itl_traits < VectorX >:: värde_typ rho ( 0 ), rho_1 ( 0 ), alfa ( 0 ), beta ( 0 ); TmpVec p ( storlek ( x )), q ( storlek ( x )), r ( storlek ( x )), z ( storlek ( x )); itl :: mult ( A , itl :: skalad ( x , -1,0 ), b , r ); medan ( ! iter . klar ( r )) { itl :: solve ( M , r , z ); rho = itl :: dot_conj ( r , z ); if ( iter.first ( ) ) itl :: kopia ( z , p ); annat { beta = rho / rho_1 ; itl :: add ( z , itl :: skalad ( p , beta ), p ); } itl :: mult ( A , p , q ); alpha = rho / itl :: dot_conj ( p , q ); itl :: add ( x , itl :: skalad ( p , alfa ), x ); itl :: add ( r , itl :: skalad ( q , -alpha ) , r ); rho_1 = rho ; ++ iter ; } returnera iter . felkod (); }

Anteckningar

  1. ITL användaravtal (otillgänglig länk) . Tillträdesdatum: 24 september 2013. Arkiverad från originalet 1 oktober 2013. 
  2. IETL-utkast Arkiverad 3 oktober 2013.
  3. Timofeev A. V., Syrtsev A. V., Kolotaev A. V. TKSYM Telecommunication Networks Simulation Library . gpss.ru (2005). Hämtad 27 september 2013. Arkiverad från originalet 5 mars 2016.

Se även

Länkar