Selección de solucionador lineal para computación GPGPU (OpenCL)


10

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:

  1. Cree subdominios e intercambie partes de la malla con la memoria del host
  2. 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.


2
¿Haces el ensamblaje global de las matrices en el código FEM tuyo? o usas implementaciones sin matriz? (es decir, sin formación explícita de las matrices)
Allan P. Engsig-Karup

3
¿Qué precondicionador estás usando y cómo es el dominio? Un escritorio de diez años que usa un buen algoritmo vencerá a un grupo de GPU usando un algoritmo horrible.
Jed Brown

¿Estás usando mallas hexaédricas o simples? Si la memoria es un problema y está utilizando elementos hexadecimales con funciones de base de producto tensorial, puede ahorrar memoria en algunos casos guardando solo operadores 1D y utilizando una implementación sin matriz (como mencionó Allan).
Jesse Chan

Respuestas:


2

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.


1

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 ;-)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.