Desarrollo de solvers CFD híbridos en plataformas heterogéneas

  1. VALERO LARA, PEDRO
Dirigida por:
  1. Manuel Prieto Matías Director
  2. Alfredo Pinelli Director

Universidad de defensa: Universidad Complutense de Madrid

Fecha de defensa: 19 de octubre de 2015

Tribunal:
  1. Luis Piñuel Moreno Presidente
  2. Carlos García Sánchez Secretario
  3. Abel Francisco Paz Gallardo Vocal
  4. Miguel Cárdenas Montes Vocal
  5. Johan Jansson Vocal
Departamento:
  1. Arquitectura de Computadores y Automática

Tipo: Tesis

Resumen

La comunidad de dinámica de fluidos computacional (CFD) siempre ha explorado nuevas formas para aprovechar las plataformas de computación de alto rendimiento en su continua búsqueda de simulaciones más rápidas y precisas. Durante los últimos años, la irrupción de las arquitecturas heterogéneas ha sido una de las tendencias más importantes en este campo y se han creado nuevos desafíos y oportunidades para optimizar el rendimiento de los solvers considerados estado del arte. En este trabajo hemos explorado algunas de estas nuevas oportunidades. Nuestros solvers objetivo se enmarcan en el dominio de los flujos incompresibles. A pesar de los significativos avances que han logrado las metodologías más avanzadas en este campo, un aspecto que sigue necesitando de más investigación es la aceleración de los solvers incompresibles, en particular cuando se manejan problemas de gran dimensión con geometrías complejas. El coste computacional de este tipo de solvers está dominado frecuentemente por la solución de la Ecuación de Poisson para la determinación de la presión. Nuestra primera contribución en esta tesis ha explorado la aceleración en sistemas heterogéneos de los denominados métodos rápidos para la solución de esta ecuación. Primero investigamos el rendimiento de diferentes algoritmos en procesadores multicore y en GPUs por separado y posteriormente estudiamos la ejecución conjunta en ambos tipos de procesadores. Como era previsible, en los procesadores multicore las aproximaciones de grano grueso proporcionan los mejores resultados, mientras que en GPUs es mejor utilizar alternativas de grano fino basadas en estrategias de reducción cíclica extendidas. Nuestra principal contribución de esta parte de la tesis ha sido el diseño de una aproximación heterogénea que es capaz de combinar ambas estrategias y beneficiarse del solapamiento entre CPUs y GPUs. Desafortunadamente, el rendimiento global que estos solvers rápidos no satisface los objetivos que nos habíamos establecido. Es por ello que en la segunda parte de esta tesis hemos tratado de superar esa limitación intrínseca de los solvers basados en Navier Stokes estudiando como alternativa el método de Lattice-Boltzmann (LBM). El diseño de implementaciones paralelas de LBM se ha estudiado de forma extensiva y han mostrado que puede alcanzar grandes rendimientos en aceleradores del tipo GPU. Sin embargo, las simulaciones que pretendemos realizar presentan geometrías complejas y no basta con solvers LBM puros. Una aproximación prometedora para tratar estos problemas es la combinación de LBM con el método de las fronteras immersas (IB: Immersed Boundaries). En primer lugar hemos comprobado como implementaciones directas de ambos métodos (LBM e IB) por separado no escalan bien, ya que la corrección IB degrada de forma notable el rendimiento global. Nuestra principal contribución ha sido el diseño de una implementación híbrida que permite solapar la ejecución de ambos métodos (LBM e IB) en plataformas heterogéneas, ocultando de forma efectiva las penalizaciones introducidas por IB. De hecho, el solvers híbrido es capaz de ocultar totalmente la penalización causada por la corrección IB. La principal idea de este trabajo ha consistido en la restructuración de los códigos para permitir una mejor coordinación entre el procesador host y el acelerador, permitiendo el solapamiento de sus ejecuciones. Con dicho solapamiento hemos sido capaces de ocular el coste de las transferencias de datos entre el host y el acelerador y las penalización causada por cuellos de botella secuenciales, es decir, hemos usado el procesado host como una acelerador de fases secuenciales del código