LAPACK (Linear Algebra PACKage) e’ una libreria scritta in FORTRAN 77 per
risolvere:
- sistemi lineari di equazioni
- problemi di minimi quadrati
- calcolo degli autovalori
- problemi ai valori singolari
- fattorizzazioni di matrici
- stima dell’indice di condizionamento
STRUTTURA DI LAPACK
In LAPACK ci sono tre livelli di routines:
1) Driver routine
2) Computational routine
3) Auxiliary routine
Le DRIVER routine si basano sulle computational routine per risolvere un
problema completo.
Le COMPUTATIONAL routine eseguono un distinto nucleo computazionale.
Le AUXILIARY routine sono routine aggiuntive come prodotto matrice-vettore,
calcolare la norma, ecc…
SCHEMA DI DENOMINAZIONE
Tutte le Driver e Computational routine hanno questo schema: X YY ZZ
dove:
–> X e’ il tipo di dato
- s : reale in singola precisione
- d : reale in doppia precisione
- c : complesso in singola precisione
- z : complesso in doppia precisione
–> YY e’ il tipo di matrice
- BD bidiagonale
- GB banda
- GE generale
- ce ne sono molte altre… vedere le quick references!
–> ZZZ e’ il tipo di calcolo da effettuare
- SVX o SV : risolve un sistema lineare
- ce ne sono troppi… vedere le quick references!
RISOLUZIONE DI SISTEMI LINEARI CON LAPACK
L’unica cosa che faremo con LAPACK e’ risolvere sistemi lineari!!! Per
facilitarci il lavoro cercheremo di scegliere sempre le Driver routine che si
dividono in due gruppi:
- Quelle che terminano per X sono per esperti e richiedono molti parametri,
- Quelle che terminano senza X sono semplici e richiedono i parametri necessari.
COMPILARE UN PROGRAMMA CHE UTILIZZA LAPACK
gcc -o ese prog.c -llapack -lblas -lg2c
CHIAMARE UNA ROUTINE FORTRAN DAL C
Passare tutti i valori per indirizzo (quindi passiamo solo puntatori).
il nome della routine, quando viene chiamata deve essere seguito da un carattere
underscore… cioe’: sgemm_(¶metri);
Libreria Sparskit
La libreria Sparskit (versione 2) e’ fatta per eseguire operazioni su matrici
sparse. Essa e’ strutturata in questo modo:
Sparskit2
|
|
|-Formats
|
|-Blassm
|
|-InOut
|
|-Matgen
| |
| |-Fdif
| |
| |-Fem
| |
| |-Misc
|
|-Itsol
|
|-Orderings
|
|-Unsupp
| |
| |-Matexp
| |
| |-Plots
| |
| |-Blas1
|
|-Info
|
|-Doc
FORMATS
Permette di trasformare il tipo di memorizzazione di una matrice sparsa.
Ad esempio di puo’ passare dal formato denso di una matrice (quello normale)
a un formato Packed Storage per le matrici a banda, oppure al formato in
tre vettori.
BLASSM
Esegue operazioni algebriche di base come quelle che convolgono due matrici.
INOUT
Gestisce l’input e l’output della matrici in qualunque formato. Usando queste
routine il programmatore risparmia molto tempo.
MATGEN
Routine per generare matrici utili per i test.
ITSOL
Metodi iterativi per la risoluzione di sistemi lineari.
ORDERINGS
Routini utili a riordinare gli elementi della matrici seguendo vari criteri.
UNSUPP
Contiene routine che non sono di proprieta’ di sparkit. Ad esempio BLAS1.
INFO
Sono routine che data una matrice in input restituiscono informazioni sulla
matrice.
DOC
Contiene la documentazione di Sparskit 2 (comprende le Quick References).

