Selezione del risolutore lineare per il calcolo GPGPU (OpenCL)


10

Ho già sviluppato una soluzione funzionante del metodo agli elementi finiti per risolvere i problemi di trasferimento di calore utilizzando GPU e OpenCL utilizzando il metodo del gradiente coniugato. Il principale svantaggio di questo metodo è l'elevata domanda di memoria. Inoltre, nel caso delle schede grafiche, la memoria è spesso molto limitata. Vedo due opzioni:

  1. Crea sottodomini e scambia parti della mesh con la memoria host
  2. Utilizzare metodi multifrontali

Devo prendere in considerazione l'architettura specifica. Lo scambio potrebbe essere molto costoso. Il metodo CG è popolare nel contesto dell'informatica GPGPU ma non riesco a trovare alcun confronto tra i metodi CG e multifrontali (nel caso di GPGPU). Il metodo multifrontale può essere più veloce di CG? Questa è una domanda generale, infatti, dipende ancora dall'implementazione.


2
Ti occupi dell'assemblaggio globale delle matrici nel tuo codice FEM? o usi implementazioni senza matrice? (cioè nessuna formazione esplicita delle matrici)
Allan P. Engsig-Karup

3
Quale precondizionatore stai usando e com'è il dominio? Un desktop di dieci anni che utilizza un buon algoritmo batterà un cluster di GPU usando un algoritmo schifoso.
Jed Brown,

Stai usando mesh hexahedral o simplicali? Se la memoria è un problema e stai usando elementi esadecimali con funzioni di base del prodotto tensore, in alcuni casi puoi risparmiare memoria salvando solo operatori 1D e usando un'implementazione senza matrice (come menzionato da Allan).
Jesse Chan,

Risposte:


2

Sono il capo del progetto su LibGeoDecomp , quindi ho pensato di poter intervenire.

Sì, puoi implementare un FEM con LibGeoDecomp. Attualmente stiamo lavorando su un contenitore di dati migliorato proprio per questo caso d'uso. Ma per essere onesti: il completamento di quel lavoro è ancora lontano mesi, e fino ad allora le prestazioni non saranno ottimali. Non esitate a contattarmi via e-mail se si desidera ancora provare LibGeoDecomp.

Un'altra opzione sarebbe Fenics , che ha risolutori ben ottimizzati per problemi irregolari. Ma AFAIK non puoi scrivere il tuo risolutore in quel caso.


1

Non so se ti aiuta. Qui troverai un link a libgeodecomp , uno strumento che impiega tecniche di decomposizione del dominio personalizzabili (dal sito). Per quanto ne so, può essere utilizzato con GPU. Se ti aiuta, votami ;-)

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.