|
|
|
|
Struttura:
|
|
|
|
|
psblas:
|
|
|
|
|
psblas/src: la directory contenente il codice sorgente
|
|
|
|
|
psblas/src/comm: contiene tutte le routine preposte allo scambio di
|
|
|
|
|
dati
|
|
|
|
|
psblas/src/internals: contiene una serie di routine utilizzate per
|
|
|
|
|
l'assemblaggio dei descrittori di comunicazione e per
|
|
|
|
|
lo scambio di dati (psi_dswap_data e psi_dswap_tran)
|
|
|
|
|
psblas/src/methd: contiene l'implementazione dei metodi iterativi
|
|
|
|
|
psblas/src/modules: contiene i moduli con le interfacce, le
|
|
|
|
|
definizioni di tipi e di costanti
|
|
|
|
|
psblas/src/prec: contiene tutte le routine preposte alla generazione e
|
|
|
|
|
applicazione dei precondizionatori
|
|
|
|
|
psblas/src/psblas: contiene le routine algebriche parallele
|
|
|
|
|
psblas/src/serial: contiene l'implementazione seriale di routine
|
|
|
|
|
algebriche e ausiliarie
|
|
|
|
|
psblas/src/serial/aux: routine ausiliarie (in realt<6C> c'<27> rimasto be poco)
|
|
|
|
|
psblas/src/serial/coo: routine relative al formato coo
|
|
|
|
|
psblas/src/serial/csr: routine relative al formato csr
|
|
|
|
|
psblas/src/serial/dp: routine per l'assemblaggio e la conversione da
|
|
|
|
|
un formato all'altro
|
|
|
|
|
psblas/src/serial/f77: si tratta delle routine algebriche. queste
|
|
|
|
|
vengono chiamate all'interno delle routine in
|
|
|
|
|
psblas/src/psblas.
|
|
|
|
|
psblas/src/serial/jad: routine relative al formato jad
|
|
|
|
|
psblas/src/tools: tutte le routine per la generazione e rigenerazione
|
|
|
|
|
di descrittori e matrici
|
|
|
|
|
psblas/test: programmi di test
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Schema di nomenclatura:
|
|
|
|
|
tutti i simboli (quindi routine, tipi dato, costanti, moduli etc...)
|
|
|
|
|
devono avere il prefisso psb_. I tipi hanno il suffisso "_type" (quindi
|
|
|
|
|
quello che prima era d_spmat adesso diventa psb_dspmat_type), tutti i
|
|
|
|
|
moduli hanno il suffisso "_mod".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Interfacce subroutine & argomenti:
|
|
|
|
|
l'articolo di Carney et al. richiede questa convenzione per l'ordine
|
|
|
|
|
degli argomenti:
|
|
|
|
|
1- arguments specifying options (tipo TRANS, UNITD etc...)
|
|
|
|
|
2- arguments specifying problem dimensions
|
|
|
|
|
3- input scalar associated with input matrices
|
|
|
|
|
4- description of sparse input matrices (che sarebbe i nostri FIDA e
|
|
|
|
|
DESCRA)
|
|
|
|
|
5- description of dense input matrices
|
|
|
|
|
6- input scalar associated with input-output matrices
|
|
|
|
|
7- description of input-output matrices
|
|
|
|
|
8- error processing informations
|
|
|
|
|
9- workspace
|
|
|
|
|
10- length of workspace
|
|
|
|
|
|
|
|
|
|
tutto questo va rivisto nell'ottica f90 e, quindi, con i tipi dato
|
|
|
|
|
user-defined e con gli argomenti opzionali.
|
|
|
|
|
Attualmente, in linea di massima, le interfacce delle routine
|
|
|
|
|
algebriche hanno sempre desc_a (il descrittore) e info (il codice di
|
|
|
|
|
errore riportato) nelle ultime posizioni prima dei parametri
|
|
|
|
|
opzionali. I parametri opzionali contengono sempre gli argomenti al
|
|
|
|
|
punto 1 oltre che jx, jy e k che definiscono il sottopreblema su cui
|
|
|
|
|
effettuare l'operazione richiesta. Per tutto il resto non c'<27> uno
|
|
|
|
|
schema ben definito e viene, generalmente seguito l'ordine con cui gli
|
|
|
|
|
operandi appaiono nella scrittura della formula matematica relativa
|
|
|
|
|
all'operazione implementata nella subroutine. si potrebbe pensare a
|
|
|
|
|
come risistemare la cosa ma secondo me <20> abbastanza chiara.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|