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