Je cherche à porter du code qui résout un ensemble d'équations différentielles partielles (PDE) par la méthode des volumes finis sous forme IMPLICITE (pour la discrétisation temporelle).
Il en résulte qu'il existe un système tridiagonal d'équations dans les directions x, y, z qui est géré par le schéma ADI / TDMA.
Je n'arrive pas à trouver quoi que ce soit concernant la solution implicite des PDE avec CUDA.
Le schéma ADI / TDMA est-il possible à implémenter dans CUDA ?? Y a-t-il un exemple comme l'équation de diffusion de chaleur 2D disponible quelque part ??
Tout ce que j'ai pu trouver est un exemple de code CUDA pour l'équation de diffusion de chaleur 2D en différences finies mais sous forme EXPLICITE (Université de Cambridge).
Tout indice / référence serait grandement apprécié.
Réponses:
Ce problème se prête à une forme hautement vectorisée. Comme vous l'avez noté, la méthode ADI donne quelques étapes des systèmes tridiagonaux. Puisqu'il est sous forme d'équations linéaires, vous pouvez utiliser CUsolver et CUblas pour appeler des versions GPU parallèles de routines d'algèbre linéaire standard. En les utilisant, vous devriez pouvoir prendre le code explicite et simplement changer la boucle interne en un appel CUsolver approprié et le résoudre de manière à ce que le code ressemble presque exactement à une implémentation CPU, mais avec les opérations matricielles effectuées sur les GPU via appels à la bibliothèque.
la source