Librerie per la risoluzione di sistemi lineari sparsi


21

Esistono diverse librerie che risolvono un sistema di equazioni sparse e lineari, tuttavia trovo difficile capire quali siano le differenze.

Per quanto ne so, ci sono tre pacchetti principali: Trilinos , PETSc e Intel MKL . Sono tutti in grado di eseguire soluzioni a matrice sparsa, sono tutti veloci (per quanto ne so, non sono stato in grado di trovare benchmark solidi su nessuno di essi) e sono tutti parallelizzabili. Quello che non riesco a trovare sono le differenze.

Quindi, quali sono le differenze tra i diversi solutori di sistemi lineari sparsi là fuori?

Risposte:


29

Ce ne sono molti altri là fuori, tutti con obiettivi e punti di vista diversi sui problemi. Dipende davvero da cosa stai cercando di risolvere. Ecco un elenco incompleto di pacchetti là fuori. Sentiti libero di aggiungere ulteriori dettagli.

Grandi pacchetti di risolutore iterativo distribuito

  • PETSc - pacchetti incentrati sui metodi del sottospazio Krylov e facile passaggio tra solutori lineari. Peso molto più leggero rispetto ad altri in questa categoria.
  • Trilinos : una vasta gamma di pacchetti destinati alle applicazioni FEM
  • Hypre - simile ai due sopra. Notevole per i suoi ottimi solutori multigrid (che possono essere scaricati da PETSc).

Pacchetti di Risolutore diretto parallelo

Pacchetti di risolutore diretto seriale

Ambienti interattivi (altro per sistemi molto piccoli)

Altre liste


9

MKL non fa parallelismo distribuito (ad es. MPI) e il supporto per solutori sparsi è rudimentale, sicuramente non a livello degli altri due. Attualmente esiste un solo benchmark significativo: prestazioni scalabili del prodotto Sparse Matrix-Vector (SpMV). Poiché la larghezza di banda della memoria è limitata, puoi solo rovinarla. Sia PETSc che Trilinos si comportano bene in questo.

La vera differenza è quale ambiente di programmazione ti rende più produttivo.


Quindi si riduce praticamente a se vuoi fare un lavoro in C o C ++?
Andrew Spott,

È un po 'più aperto di così. Potresti certamente chiamare Trilinos o PETSc dalla maggior parte dei linguaggi di calcolo numerico (C, Python, C ++ e Fortran sono tutte opzioni praticabili e, in una certa misura, MATLAB).
Aron Ahmadia,

PETSc gestisce correttamente l'array F90 :) e l'intero modello a oggetti è disponibile in Matlab.
Matt Knepley,

1
PETSc e Trilinos coinvolgono anche comunità diverse, in una certa misura. Forse dovresti prima considerare il tipo di problemi che vorresti risolvere, e se qualche esempio esistente di problemi simili è già disponibile in entrambi i toolkit?
Aron Ahmadia,

1
Consiglierei di esaminare gli esempi dei diversi progetti e di decidere. Se hai un esempio specifico di quale sistema sarebbe meglio per un problema, sarebbe una domanda più rispondente. Altrimenti, inizieremo solo la guerra religiosa che ha portato avanti la mia carriera universitaria.
interrel
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.