Quanto è utile PETSc per le matrici dense?


14

Ovunque abbia visto, tutorial / documenti PETSc ecc. Dicono che è utile per l'algebra lineare e di solito specifica che i sistemi sparsi ne trarranno vantaggio. Che dire delle matrici dense? Sono preoccupato per risolvere per denso .UNX=BUN

Ho scritto il mio codice per CG e QMR in Fortran. Il costrutto di base è fare a pezzi la pseudo codice e aggiungere le routine di BLAS ove possibile ( ddot, dnrme dgemv) con un po 'di sintonia auto. Come sarà questo rispetto a PETSc?

So che la migliore risposta sarebbe per me provare da solo, ma per motivi di tempo e altri, ciò non è possibile.

Ogni aiuto è molto apprezzato.

Risposte:


7

Se hai matrici dense con struttura (ad esempio trasformazioni veloci, complementi di Schur, ecc.), PETSc potrebbe essere utile. In questi casi, non dovrai assemblare l'intera matrice.

Per i sistemi densi assemblati, PETSc attualmente utilizza PLAPACK, ma la distribuzione della matrice in formato nativo PETSc non è la migliore per minimizzare la comunicazione (per la maggior parte delle operazioni). Jack Poulson, Matt Knepley e io abbiamo discusso del porting della densa algebra lineare di PETSc per usare Elemental , la più moderna libreria di algebra lineare densa di Jack. Non è ancora successo, ma lo faremo quando avremo tempo.

Se vuoi una libreria di algebra lineare densa con tutte le funzionalità, usa Elementale. È probabile che abbia sempre un'API più completa per tali operazioni rispetto a PETSc. Se è necessario interagire con sistemi sparsi o non assemblati, probabilmente ha senso attenersi a PETSc ed estrarre ciò che è necessario utilizzare Elemental per le parti dense (o aiutarci a scrivere l'interfaccia PETSc su Elemental).


Quale sarebbe la tua risposta se stessi lavorando su un sistema di memoria condivisa?
Richiesta

1
È possibile utilizzare più processi MPI o più pthread. Non vedo molto senso scrivere software parallelo che funziona solo con la memoria condivisa perché di solito la località di memoria a cui pensi quando scrivi per la memoria distribuita migliora le prestazioni rispetto a tutte tranne le migliori implementazioni thread. Se si desidera solo un'API "seriale" che utilizza i thread internamente per una densa algebra lineare, è possibile utilizzare un BLAS thread.
Jed Brown,

Voglio che i miei codici funzionino sulla mia workstation core Xeon 12 (non sto guardando i cluster al momento). Sto usando Intel MKL per BLAS (threaded). Mi consiglieresti ancora di provare PETSc?
Inquiry

Se tutto ciò che vuoi è BLAS, ne sei soddisfatto e hai già scritto il codice, basta usarlo. Se si desidera maggiore flessibilità e / o l'opportunità di utilizzare la memoria distribuita, è possibile che si desideri PETSc.
Jed Brown,

Flessibilità in termini di? Memoria distribuita?
Inquiry

5

O(n3)O(n2)

Dato che hai detto che sei su un sistema di memoria condivisa, avrei raccomandato libFLAME e / o PLASMA , ma non credo che nessuno dei due sarà significativamente più veloce del BLAS con thread del fornitore per le tue operazioni di livello 1 e livello 2.

Jed ha raccomandato Elemental , che mi capita di sviluppare, ma sottolineerò ancora una volta che le operazioni di livello 1 e livello 2 non sono l'obiettivo principale delle librerie di algebra lineare densa parallela. Onestamente non ho mai confrontato nessuna di queste routine.


Quindi, da quello che ottengo, ogni successiva libreria di algebra lineare densa parallela cercherà di ottimizzare operazioni come il calcolo degli autovettori, la soluzione del sistema piuttosto che il BLAS. Inoltre, Elemental sembra davvero impressionante. Ci proverò sicuramente quando posso.
Inchiesta il

In genere ottimizzano il BLAS di livello 3. Il motivo è che la maggior parte delle persone che usano la libreria eseguiranno calcoli di grandi dimensioni che di solito possono essere mappati al BLAS di livello 3.
Jack Poulson,

È perché BLAS 1/2 non può andare meglio? (Forse a causa della proprietà da superficie a volume?) Dati O (N ^ 2) e calcolo O (N ^ 2)?
Inchiesta il

È perché BLAS 1 e 2 sono generalmente termini di ordine inferiore nel calcolo. L'intero "gioco" dell'algebra lineare densa ad alte prestazioni è quello di strizzare gli occhi ad ogni operazione nel modo giusto in modo da poter chiamare xGEMM e gli amici per tutto il lavoro possibile.
Jack Poulson,

Inoltre, sì, il fatto che eseguano all'incirca la stessa quantità di flop dei memops è il motivo per cui vengono evitati il ​​più possibile.
Jack Poulson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.