AMReX: una actuación
HogarHogar > Blog > AMReX: una actuación

AMReX: una actuación

Aug 25, 2023

Por Rob Farber

21 de agosto de 2023

Rendimiento, portabilidad y amplia funcionalidad son características clave del marco de software AMReX, que fue desarrollado por investigadores del Laboratorio Nacional Lawrence Berkeley (Berkeley Lab), el Laboratorio Nacional de Energía Renovable y el Laboratorio Nacional Argonne como parte del programa del Departamento de Energía de EE. UU. (Hace)Proyecto de Computación Exaescala(ECP) Centro de Co-Diseño AMReX.

El Centro de codiseño ECP AMReX garantiza que este marco de software popular y muy utilizado para aplicaciones de refinamiento de malla adaptativa (AMR) estructuradas en bloques masivamente paralelas pueda ejecutarse de manera eficiente en supercomputadoras DOE. Numerosas aplicaciones de ECP utilizan AMReX para modelar una amplia gama de aplicaciones diferentes, incluido el diseño de aceleradores, astrofísica, combustión, cosmología, flujo multifásico y energía eólica.

Para abordar una gama tan amplia de fenómenos físicos, el software debe admitir una amplia gama de requisitos algorítmicos. Como se señala en "Una encuesta sobre implementaciones de software utilizadas por códigos de aplicaciones en el proyecto de computación a exaescala", AMReX logra esta portabilidad de plataforma a través de sus API. Otros centros de codiseño de ECP, como el Centro de discretizaciones eficientes a exaescala (CEED) y el Centro de codiseño para aplicaciones de partículas, también utilizan este mismo enfoque para ofrecer portabilidad del rendimiento.

De las CPU a las arquitecturas heterogéneas

AMReX se basó originalmente en el marco BoxLib anterior, que se utilizó para desarrollar aplicaciones AMR. John Bell (Figura 2), investigador principal del Centro de Co-Diseño AMReX y científico senior de la división de Matemáticas Aplicadas e Investigación Computacional del Laboratorio de Berkeley, explicó: “La financiación del ECP nos permitió rediseñar completamente BoxLib, que fue diseñado para CPU- solo sistemas, para crear AMReX, que proporciona un marco portátil de rendimiento que admite CPU multinúcleo y varios aceleradores de GPU diferentes. AMReX se utiliza actualmente en un conjunto diverso de aplicaciones en muchos sistemas diferentes”.

Para aquellos códigos de aplicación que ya estaban basados ​​en BoxLib, el equipo de AMReX documentó cómo migrar sus códigos de BoxLib a AMReX. (Esta documentación está disponible en el repositorio de AMReX en Docs/Migration)

Junto con la aceleración de GPU, Bell señaló: “Una de las características de diseño clave de AMReX es que separa las estructuras de datos básicas y las operaciones centrales en esas estructuras de datos de los algoritmos utilizados por una aplicación en particular, lo que brinda a los desarrolladores mucha más flexibilidad sobre cómo resolver sus problemas”.

Introducción a la tecnología

Los científicos utilizan AMR estructurado en bloques como un "microscopio numérico" para resolver sistemas de ecuaciones diferenciales parciales (PDE). AMReX proporciona un marco para desarrollar algoritmos para resolver estos sistemas, dirigidos a máquinas que van desde computadoras portátiles hasta arquitecturas de exaescala con y sin aceleración de GPU.

Los científicos describen una amplia gama de fenómenos físicos utilizando PDE, que son relaciones entre derivadas de diferentes cantidades que describen el sistema. Las PDE describen el viento que fluye sobre una cadena montañosa, la vibración de un puente durante un terremoto y el incendio dentro de una supernova. La resolución de PDE permite a los científicos obtener información sobre el comportamiento de sistemas complejos. Sin embargo, en la mayoría de los casos, no existe una solución matemática sencilla para un sistema de PDE.

En cambio, deben resolverse usando una computadora. Lo fundamental para resolver PDE en una computadora es cómo el científico representa el sistema. Un enfoque común es definir el estado del sistema en términos de sus valores en una malla finita de puntos. En este tipo de enfoque basado en mallas, cuanto más fina sea la malla (es decir, cuantos más puntos contenga), mejor será la representación de la solución. Los algoritmos AMR controlan dinámicamente el número y la ubicación de los puntos de la malla para minimizar el costo computacional y al mismo tiempo resolver el problema con suficiente precisión.

Como se indica en "AMReX: Refinamiento de malla adaptativa estructurada en bloques para aplicaciones multifísicas", los algoritmos AMR estructurados en bloques utilizan una representación jerárquica de la solución en múltiples niveles de resolución (Figura 1). En cada nivel, la solución se define en la unión de contenedores de datos en esa resolución, cada uno de los cuales representa la solución en una subregión lógicamente rectangular del dominio.

Esta representación puede ser datos definidos en una malla, datos de partículas o combinaciones de ambos. Para algoritmos basados ​​en malla, AMReX admite una amplia gama de discretizaciones espaciales y temporales. El soporte para resolver sistemas lineales incluye solucionadores geométricos multicuadrícula nativos y la capacidad de vincularse a software externo de álgebra lineal. Para problemas que incluyen sistemas rígidos de ecuaciones diferenciales ordinarias que representan procesos de un solo punto, como la cinética química o la nucleosíntesis, AMReX proporciona una interfaz para los solucionadores de ecuaciones diferenciales ordinarias proporcionados por SUNDIALS. AMReX también admite representaciones de límites incrustados (celdas cortadas) de geometrías complejas.

El fundamento de los códigos AMR estructurados en bloques

Bell observó: “AMR se diferencia de enfoques como el método multired, que utiliza una jerarquía de cuadrículas más gruesas para desarrollar algoritmos eficientes para resolver un problema con una resolución fina fija. AMR representa la solución que utiliza una resolución diferente en diferentes partes del dominio para centrar el esfuerzo computacional donde sea necesario, como en una onda de choque o un frente de llama”. La simulación adaptativa de una llama de dimetiléter encendida ilustra la capacidad de utilizar una resolución más fina solo donde más se necesita (Figura 3).

El código determina cuándo y dónde se requiere más resolución según los criterios proporcionados por el usuario, lo que significa que la malla se puede adaptar dinámicamente durante la simulación. El tutorial sobre dinámica de gases compresibles de AMReX ilustra cómo una representación de límites integrada puede adaptar dinámicamente la resolución de la malla tanto en el espacio como en el tiempo (Figura 4). Este y otros ejemplos 2D y 3D más complejos se pueden ver aquí, que incluyen varias animaciones compartidas con el equipo de AMReX por investigadores que utilizan códigos basados ​​en AMReX para estudiar una variedad de fenómenos.

Aceleración de GPU

Las supercomputadoras a exaescala del DOE son arquitecturas grandes y distribuidas que dependen de GPU para lograr un alto rendimiento. Bell observó: “Los algoritmos AMR estructurados en bloques tienen un paralelismo jerárquico natural que los hace ideales para supercomputadoras aceleradas por GPU. En un algoritmo AMR, la representación de la solución se divide en grandes parches que se pueden distribuir entre los nodos de la máquina. Las operaciones en cada parche ocurren en un gran bloque de datos que se puede realizar de manera eficiente en una GPU”.

Las operaciones sobre parches forman el núcleo numérico de los algoritmos AMR; sin embargo, la ejecución eficiente de supercomputadoras implica otras consideraciones. Operar parches de forma independiente no conduce a una solución completa al problema. Los resultados de los parches deben unirse para formar una solución completa. Al avanzar la solución en un solo paso de tiempo, cada parche necesita datos de los parches vecinos para avanzar. Una vez avanzada la solución en todos los parches, se debe sincronizar la nueva solución en todos los parches. Bell señaló: “Las operaciones de sincronización reflejan los procesos físicos subyacentes. Para aplicaciones que resuelven un conjunto relativamente simple de ecuaciones, la sincronización es bastante simple, pero para aplicaciones multifísicas grandes y complejas, la sincronización puede ser un proceso complejo de varias etapas”.

AMReX hace una serie de cosas "bajo el capó" para orquestar la ejecución de los algoritmos AMR. Al comienzo de una simulación y cada vez que el algoritmo adaptativo cambia el diseño de la cuadrícula para reflejar las condiciones cambiantes, los datos deben distribuirse entre los nodos de una arquitectura informática distribuida. La distribución debe equilibrar el trabajo computacional entre los nodos y al mismo tiempo minimizar el costo de comunicación entre nodos. El intercambio de datos entre parches y operaciones de sincronización requiere algoritmos de comunicación eficientes para minimizar los costos de comunicación.

El uso de GPU plantea varios otros problemas. La migración de datos entre la GPU y su CPU host puede resultar muy costosa en términos de tiempo de ejecución. AMReX proporciona herramientas para permitir que las aplicaciones administren la memoria y eviten movimientos de datos innecesarios. Además, no existe un modelo de programación único para GPU. Cada tipo tiene sus propias características de hardware y entorno de software. Para abordar este problema, AMReX proporciona una capa de abstracción liviana que oculta los detalles de una arquitectura particular del código de la aplicación. Esta capa proporciona construcciones que permiten al usuario especificar las operaciones que desea realizar en un bloque de datos sin especificar cómo se llevan a cabo esas operaciones. Luego, AMReX asigna esas operaciones al hardware específico en el momento de la compilación para que el hardware se utilice de manera efectiva.

Desde una perspectiva matemática y computacional, Andrew Myers, ingeniero de sistemas informáticos del Berkeley Lab y uno de los principales desarrolladores de AMReX, señaló que “AMReX conserva muchos de los agradables patrones regulares de acceso a datos como con una red regular. Esto mejora el rendimiento. También hace que el razonamiento sobre el método numérico sea "más fácil" porque el algoritmo calcula localmente en una cuadrícula estructurada en lugar de una cuadrícula completamente desestructurada".

Para obtener una explicación más detallada, consulte "AMReX: Refinamiento de malla adaptativa estructurada por bloques para aplicaciones multifísicas".

Para continuar leyendo este punto técnico destacado de ECP,haga clic aquí.

Proyecto de Computación ExaescalaDe las CPU a las arquitecturas heterogéneasIntroducción a la tecnologíaEl fundamento de los códigos AMR estructurados en bloquesAceleración de GPUhaga clic aquí