Eficiente y escalable inicialización de simulaciones acopladas particionadas con preCICE
Autores: Totounferoush, Amin; Simonis, Frédéric; Uekermann, Benjamin; Schulte, Miriam
Idioma: Inglés
Editor: MDPI
Año: 2021
Acceso abierto
Artículo científico
2021
Eficiente y escalable inicialización de simulaciones acopladas particionadas con preCICE
Categoría
Ingeniería y Tecnología
Subcategoría
Ingeniería de Software
Palabras clave
Biblioteca de código abierto
Entorno de simulación multi-física y multi-código
Concepto de pares a pares
Particiones de malla
Canales de comunicación
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 25
Citaciones: Sin citaciones
preCICE es una biblioteca de código abierto que proporciona una funcionalidad completa para acoplar códigos solucionadores paralelos independientes y establecer un entorno de simulación de múltiples físicas y múltiples códigos particionados. Para la comunicación de datos entre los ejecutables respectivos en tiempo de ejecución, implementa un concepto de pares, lo que hace que el costo computacional del acoplamiento por paso de tiempo sea insignificante en comparación con el tiempo de ejecución típico de los códigos acoplados. Para inicializar el acoplamiento de pares, las particiones de malla de los solucionadores respectivos deben compararse para determinar los canales de comunicación punto a punto entre los procesos de ambos códigos. Este esfuerzo de inicialización puede convertirse en un factor limitante si alcanzamos los límites de memoria o si tenemos que reinicializar las relaciones de comunicación en cada paso de tiempo. En esta contribución, eliminamos dos cuellos de botella restantes: (i) basamos la búsqueda de vecindario entre entidades de malla de dos solucionadores en una estructura de datos de árbol para evitar la complejidad cuadrática, y (ii) reemplazamos la comparación secuencial de reunión-dispersión de ambas particiones de malla por un enfoque de dos niveles que primero compara cajas delimitadoras alrededor de las particiones de malla de forma secuencial, establece comunicación por pares entre procesos de los dos solucionadores, y finalmente compara particiones de malla entre procesos conectados en paralelo. Mostramos que el método de inicialización de dos niveles es cinco veces más rápido que el esquema antiguo de un nivel en 24,567 núcleos de CPU utilizando una malla con 628,898 vértices. Además, el esquema de dos niveles es capaz de manejar mallas computacionales mucho más grandes, ya que la comunicación central de malla del esquema de un nivel se reemplaza por un esquema de comunicación de malla completamente punto a punto.
Descripción
preCICE es una biblioteca de código abierto que proporciona una funcionalidad completa para acoplar códigos solucionadores paralelos independientes y establecer un entorno de simulación de múltiples físicas y múltiples códigos particionados. Para la comunicación de datos entre los ejecutables respectivos en tiempo de ejecución, implementa un concepto de pares, lo que hace que el costo computacional del acoplamiento por paso de tiempo sea insignificante en comparación con el tiempo de ejecución típico de los códigos acoplados. Para inicializar el acoplamiento de pares, las particiones de malla de los solucionadores respectivos deben compararse para determinar los canales de comunicación punto a punto entre los procesos de ambos códigos. Este esfuerzo de inicialización puede convertirse en un factor limitante si alcanzamos los límites de memoria o si tenemos que reinicializar las relaciones de comunicación en cada paso de tiempo. En esta contribución, eliminamos dos cuellos de botella restantes: (i) basamos la búsqueda de vecindario entre entidades de malla de dos solucionadores en una estructura de datos de árbol para evitar la complejidad cuadrática, y (ii) reemplazamos la comparación secuencial de reunión-dispersión de ambas particiones de malla por un enfoque de dos niveles que primero compara cajas delimitadoras alrededor de las particiones de malla de forma secuencial, establece comunicación por pares entre procesos de los dos solucionadores, y finalmente compara particiones de malla entre procesos conectados en paralelo. Mostramos que el método de inicialización de dos niveles es cinco veces más rápido que el esquema antiguo de un nivel en 24,567 núcleos de CPU utilizando una malla con 628,898 vértices. Además, el esquema de dos niveles es capaz de manejar mallas computacionales mucho más grandes, ya que la comunicación central de malla del esquema de un nivel se reemplaza por un esquema de comunicación de malla completamente punto a punto.