Iterativt skabelonbibliotek

Iterativt skabelonbibliotek
Type Bibliotek
Udvikler Åbent systemlaboratorium
Skrevet i C++
Operativ system Cross-platform software
nyeste version 4.0.0 ( 26. oktober 2001 )
Licens Semi-fri software [1]
Internet side osl.iu.edu/research/itl/

Iterative Template Library (ITL) er et bibliotek af komponenter designet til at anvende iterative numeriske metoder til at manipulere lineære algebraobjekter .

Funktioner

ITL består af to funktionelle grupper. Den første gruppe er en samling af komplekse iterative metoder, der bruger grundlæggende lineære algebraalgoritmer implementeret i specialiserede pakker såsom Matrix Template Library (MTL) eller Blitz++ . Den anden gruppe er et sæt prækonditioneringsalgoritmer designet specifikt til at arbejde med MTL.

ITL-biblioteket bruger abstrakte grænseflader til matrix - vektor- , vektor-vektor- og vektor- skalære operationer , hvilket giver dig mulighed for transparent at bruge deres implementering i tredjepartsbiblioteker.

Udviklingshistorie

Dette bibliotek blev oprettet på Open Systems Lab  , et forskningslaboratorium ved Indiana University , som en del af MTL.

Den blev først offentliggjort separat fra MTL den 25. juli 2000 . Den nye udgivelse indeholdt blandt andet flere interfaces til BLAS og Blitz++.

I den seneste udgivelse (4.0.0) blev biblioteket opdelt i tre funktionsområder: metoder til at arbejde med Krylov-underrummet ; forudsætninger og grænseflader. Metoderne til at arbejde med Krylov-underrummet er grundlæggende og er ikke begrænset i brug af standardbiblioteker, der implementerer lineære algebraobjekter. Grænsefladerne er beregnet til brug i iterative algoritmer af Krylov-underrummet af de grundlæggende operationer af lineær algebra, implementeret i tredjepartsbiblioteker, såsom: MTL, Blitz++. Forudsætninger er kun implementeret for at arbejde med MTL-biblioteket.

Også eksperimentelle grænseflader blev inkluderet i denne udgivelse for at understøtte parallel computing .

Ideerne i ITL er blevet videreført og udviklet i projektet Iterative Eigensolver Template Library (IETL) [2] .

Eksempler på brug

Principperne for generisk programmering , inden for hvilke biblioteket blev skabt, [3] involverer forenkling af grænseflader. Dette har fået ITL-algoritmer til at ligne en slags pseudokode . I hvert fald sammenlignet med andre implementeringer af de samme algoritmer. For eksempel vil implementeringen af ​​konjugeret gradientmetode se sådan ud:

/* nødvendige operationer: mult,copy,dot_conj,add,scaled */ skabelon < klasse Matrix , klasse VectorX , klasse VectorB , klasse Preconditioner , klasse Iteration > int cg ( const Matrix & A , VectorX & x , const VectorB & b , const Preconditioner & M , Iteration & iter ) { typedef VectorX TmpVec ; typenavn itl_træk < VectorX >:: værditype rho ( 0 ), rho_1 ( 0 ), alfa ( 0 ), beta ( 0 ); TmpVec p ( størrelse ( x )), q ( størrelse ( x )), r ( størrelse ( x )), z ( størrelse ( x )); itl :: mult ( A , itl :: skaleret ( x , -1,0 ), b , r ); mens ( ! iter . færdig ( r )) { itl :: solve ( M , r , z ); rho = itl :: dot_conj ( r , z ); if ( iter.first ( ) ) itl :: kopi ( z , p ); andet { beta = rho / rho_1 ; itl :: add ( z , itl :: skaleret ( p , beta ), p ); } itl :: mult ( A , p , q ); alpha = rho / itl :: dot_conj ( p , q ); itl :: add ( x , itl :: skaleret ( p , alfa ), x ); itl :: add ( r , itl :: skaleret ( q , -alpha ), r ) ; rho_1 = rho ; ++ iter ; } returnere iter . fejlkode (); }

Noter

  1. ITL-brugeraftale (utilgængeligt link) . Dato for adgang: 24. september 2013. Arkiveret fra originalen 1. oktober 2013. 
  2. IETL-udkast Arkiveret 3. oktober 2013.
  3. Timofeev A. V., Syrtsev A. V., Kolotaev A. V. TKSYM Telecommunication Networks Simulation Library . gpss.ru (2005). Hentet 27. september 2013. Arkiveret fra originalen 5. marts 2016.

Se også

Links