Ya he desarrollado una solución de trabajo del Método de Elementos Finitos para resolver problemas de transferencia de calor usando GPU y OpenCL usando el método de Gradiente Conjugado. La principal desventaja de este método es la gran demanda de memoria. Además, en el caso de las tarjetas gráficas, la memoria suele ser muy limitada. Veo dos opciones:
- Cree subdominios e intercambie partes de la malla con la memoria del host
- Utiliza métodos multifrontales
Tengo que tener en cuenta la arquitectura específica. El intercambio podría ser muy costoso. El método CG es popular en el contexto de la computación GPGPU, pero no puedo encontrar ninguna comparación entre los métodos CG y multifrontal (en el caso de GPGPU). ¿Puede el método multifrontal ser más rápido que el CG? Esta es una pregunta general, de hecho, todavía depende de la implementación.
parallel-computing
opencl
linear-solver
Krzysztof Bzowski
fuente
fuente
Respuestas:
Soy el líder del proyecto en LibGeoDecomp , así que pensé que podría intervenir.
Sí, puede implementar un FEM con LibGeoDecomp. Actualmente estamos trabajando en un contenedor de datos mejorado para exactamente este caso de uso. Pero para ser justos: la finalización de ese trabajo aún está a meses de distancia, y hasta entonces el rendimiento no será óptimo. No dude en ponerse en contacto conmigo por correo electrónico si aún desea probar LibGeoDecomp.
Otra opción sería Fenics , que tiene solucionadores bien optimizados para problemas irregulares. Pero AFAIK no puedes escribir tu propio solucionador en ese caso.
fuente
No sé si te ayuda. Aquí encontrará un enlace a libgeodecomp , una herramienta que emplea técnicas de descomposición de dominio personalizables (del sitio). Se puede usar con GPU hasta donde yo sé. Si te ayuda, votame ;-)
fuente