Trilinos overview

Transcript

Trilinos overview
Trilinos overview
Fare clic per modificare lo stile del sottotitolo dello
schema
18/03/09
Dove lo trovo?
18/03/09
http://trilinos.sandia.gov/
Cosa serve?

Matrici sparse

Risoluzione sistemi lineari

Precondizionatori ILU/ILUT/Domain
Decomposition/Multigrid/…

Risoluzione sistemi non lineari

Problemi agli autovalori

Etc, etc…

Basato su MPI e gestisce il parallelo
18/03/09
Come si installa?

Scaricare il tar su disco

Seguire le istruzioni presso:
Http://trilinos.sandia.gov/documentation.htm

C’è una user guide/overview per
l’installazione

Prerequisiti minimi: blas, lapack… Ma si
può complicare indefinitamente.
18/03/09
Come si installa? -1

Configure

Si crea una cartella nuova e da lì si fa il
configure

E’ prassi avere N versioni configurate in
maniera diversa
18/03/09
18/03/09
Come si installa? Configure
../trilinos-9.0.2/configure \
--prefix=//opt/trilinos/OpenMPI-Debug/ \
CXXFLAGS="-fPIC" \
CFLAGS="-fPIC" \
FFLAGS="-fPIC" \
CXX=/usr/bin/g++ \
CC=/usr/bin/gcc \
F77=/usr/bin/gfortran --cache-file=config.cache \
--with-trilinos --with-gnumake --with-mpi-compilers \
--with-mpi-libs=-lmpi --with-blas=-lblas \
--with-lapack=-llapack --with-flibs=-lgfortran \
--with-incdirs="-I/usr/include -I/usr/include/metis -I/usr/include/parmetis" \
--with-ldflags="-L/usr/lib64" --with-ml_metis --with-ml_parmetis3x \
--disable-default-packages --disable-examples --disable-tests \
--enable-debug --enable-mpi --enable-amesos \
--enable-anasazi --enable-aztecoo --enable-epetra-abc \
--enable-epetraext --enable-ifpack --enable-ifpack-amesos \
--enable-ifpack-teuchos --enable-ml --enable-nox --enable-teuchos --enable-triutils
18/03/09
Come si installa? Gran finale

Make, Make install

E nella vostra cartella/lib compaiono le
librerie.a

Nella vostra cartella/include compaiono i
file include

Siamo pronti a usarlo/linkarlo! Ma…
18/03/09
Avrete problemi…

Zona documentation sul sito: non sempre la
documentazione è coerente

Ogni pacchetto ha dei doxygen presenti sia sul sito che
sui sorgenti scaricati

Mailing List: iscriversi dal sito…

Chiedere di persona a chi ci ha lavorato

Chiedere a chi ci ha lavorato: progetti LifeV/Steam sono
basati su Trilinos

ATTENZIONE: l’efficienza di trilinos dipende dalla
distribuzione Linux
18/03/09
Epetra

Matrici sparse distribuite per righe

Mappe parallele

Matrici dense seriali

Vettori distribuiti

Funzioni di assemblaggio

Funzioni di sostituzione elementi (un po’ limitanti…)

Grafi di matrice
18/03/09
Esempio di una mappa

Esempio di mappa a tre processi [1 2 3; 3 4 5; 6 7]

Solitamente non ci sono ripetizioni

Esistono mappe righe – colonne – domain – range

Le prima due vengono fornite all’istanziamento

Le ultime due vengono fornite quando si assembla
18/03/09
Dichiarazione

Ablock = new Epetra_FECrsMatrix(Copy,*mapV,Arows);

Bblock = new Epetra_FECrsMatrix(Copy,*mapV,Brows);

Cblock = new epetra_FECrsMatrix(Copy,*mapP,Crows);

Dblock = new Epetra_FECrsMatrix(Copy,*mapP,1);

Mass = new Epetra_FECrsMatrix(Copy,*mapP,Mrows);

TP
= new Epetra_FEVector(*mapP);

TV
= new Epetra_FEVector(*mapV);

XP
= new Epetra_FEVector(* TP);

XV
= new Epetra_FEVector(*TV);
18/03/09
Riempimento
Ablock->InsertGlobalValues
(4,Iblock,12,Jblock,MatLoc,Epetra_FECrsMatrix::ROW_MAJOR);
Ablock->GlobalAssemble();
Ablock->ReplaceGlobalValues(row,numEntries,zero,indices);
Ablock->ReplaceGlobalValues(row,1,&tot,&row);
18/03/09
Epetra Ext

Funzioni di trasposizione

Cambio della mappa

Stampa su file

Premutazione

Interfaccia con Matlab

Interfaccia PETSc
18/03/09
AztecOO

Solver iterativo

Supporta i principali algoritmi iterativi

Fra questi anche i FGMRES e GMRESR

Supporta il meccanismo matrix free

Se usato con sottoiterazioni genera spesso e volentieri
memory leaks

Ha diversi precondizionatori interni decisamente
efficienti (Marzio Sala disse: Aztec è difficile da battere!)
18/03/09
IFPACK

Produzione delle fattorizzazioni
incomplete

Più vasto e flessibile di AztecOO

Decisamente meno efficiente di AztecOO

ILU, ILUT, Cholesky incomplete e altre
varianti…
18/03/09
ML

Precondizionatore per multigrid

E’ basato sulla smoothed aggregation

E’ la base per i precondizionatori
Schwartz additivi a due livelli

Si basa su Metis/Parmetis per
l’aggregazione (deve essere compilato)

Lo spazio coarse viene risolto con
iterativi/diretti
18/03/09
AMESOS

Interfaccia per un solver diretto

Il solver deve essere compilato e linkato
in fase di configure di Trilinos

Per ogni versione di solver va compilata
una versione diversa di Trilinos
18/03/09
Teuchos

Pacchetto di supporto a tutti gli altri

Supporta alcuni contenitori dati

Supporta gli smart pointers (non li ho mai
capiti…)

Tipicamente la fonte di problemi

Ogni volta che si usa uno dei pacchetti
precedenti bisogna linkare anche questo
18/03/09