Estoy buscando portar algún código que resuelva un conjunto de ecuaciones diferenciales parciales (PDE) por el método de volumen finito en forma IMPLICIT (para la discretización de tiempo).
Como resultado, existe un sistema tridiagonal de ecuaciones en direcciones x, y, z que se maneja mediante el esquema ADI / TDMA.
Parece que no puedo encontrar nada con respecto a la solución implícita de PDE con CUDA.
¿Es posible implementar el esquema ADI / TDMA en CUDA? ¿Hay algún ejemplo como la ecuación de difusión de calor 2D disponible en alguna parte?
Todo lo que pude encontrar es un código de muestra CUDA para la ecuación de difusión de calor 2D en diferencias finitas pero en forma EXPLÍCITA (Universidad de Cambridge).
Cualquier sugerencia / referencia sería muy apreciada.
Respuestas:
Este problema se presta a una forma altamente vectorizada. Como notó, el método ADI da algunos pasos de los sistemas tridiagonales. Como está en forma de ecuaciones lineales, puede usar CUsolver y CUblas para llamar a versiones de GPU paralelas de rutinas de álgebra lineal estándar. Con estos, debe poder tomar el código explícito y simplemente cambiar el bucle interno a una llamada CUsolver adecuada y resolverlo de una manera en que el código se vea casi exactamente como una implementación de CPU, pero con las operaciones matriciales realizadas en las GPU a través de llamadas a la biblioteca.
fuente