Sélection du solveur linéaire pour le calcul GPGPU (OpenCL)

10

J'ai déjà développé une solution de travail de la méthode des éléments finis pour résoudre les problèmes de transfert de chaleur en utilisant GPU et OpenCL en utilisant la méthode Conjugate Gradient. Le principal inconvénient de cette méthode est une forte demande de mémoire. De plus, dans le cas de cartes graphiques, la mémoire est souvent très limitée. Je vois deux options:

  1. Créer des sous-domaines et échanger des parties du maillage avec la mémoire hôte
  2. Utiliser des méthodes multifrontales

Je dois prendre en compte l'architecture spécifique. L'échange pourrait être très coûteux. La méthode CG est populaire dans le contexte de l'informatique GPGPU mais je ne trouve aucune comparaison entre CG et les méthodes multifrontales (dans le cas de GPGPU). La méthode multifrontale peut-elle être plus rapide que la CG? C'est une question générale, en fait, cela dépend toujours de la mise en œuvre.

Krzysztof Bzowski
la source
2
Faites-vous l'assemblage global des matrices dans votre code FEM? ou utilisez-vous des implémentations sans matrice? (ie pas de formation explicite des matrices)
Allan P. Engsig-Karup
3
Quel préconditionneur utilisez-vous et à quoi ressemble le domaine? Un ordinateur de bureau âgé de dix ans utilisant un bon algorithme battra un groupe de GPU en utilisant un algorithme merdique.
Jed Brown
Utilisez-vous des maillages hexaédriques ou simples? Si la mémoire est un problème et que vous utilisez des éléments hexadécimaux avec des fonctions de base de produit tensoriel, vous pouvez économiser de la mémoire dans certains cas en enregistrant uniquement les opérateurs 1D et en utilisant une implémentation sans matrice (comme Allan l'a mentionné).
Jesse Chan

Réponses:

2

Je suis le chef de projet sur LibGeoDecomp , alors j'ai pensé que je pourrais faire un carillon.

Oui, vous pouvez implémenter un FEM avec LibGeoDecomp. Nous travaillons actuellement sur un conteneur de données amélioré pour exactement ce cas d'utilisation. Mais pour être juste: l'achèvement de ce travail est encore dans des mois et les performances ne seront pas optimales jusque-là. N'hésitez pas à me contacter par e-mail si vous souhaitez toujours essayer LibGeoDecomp.

Une autre option serait Fenics , qui a des solveurs bien optimisés pour les problèmes irréguliers. Mais AFAIK, vous ne pouvez pas écrire votre propre solveur dans ce cas.

gentryx
la source
1

Je ne sais pas si cela vous aide. Ici, vous trouverez un lien vers libgeodecomp , un outil qui utilise des techniques de décomposition de domaine personnalisables (à partir du site). Il peut être utilisé avec des GPU pour autant que je sache. Si cela vous aide, votez pour moi ;-)

vanCompute
la source