banner
Centro de Noticias
No encontrará este nivel de calidad a un mejor precio.

Proyecto de computación a exaescala: Pagoda actualiza la programación PGAS con estructuras de datos escalables y comunicación agresivamente asincrónica

Dec 23, 2023

31 de agosto de 2023

31 de agosto de 2023: El Proyecto Pagoda investiga y desarrolla software que los programadores utilizan para implementar aplicaciones de alto rendimiento utilizando el modelo de espacio de direcciones global particionado (PGAS). El proyecto está financiado principalmente por Exascale Computing Project (ECP) e interactúa con proyectos asociados en la industria, el gobierno y el mundo académico. [1]

PGAS es un modelo de programación que admite un espacio de direcciones compartido globalmente para mejorar la productividad y al mismo tiempo distingue entre accesos a datos locales y remotos para brindar oportunidades de optimización. Esta distinción facilita el acceso a los datos en un entorno informático heterogéneo distribuido y al mismo tiempo toma en cuenta los costos de comunicación no uniformes. Para el programador, PGAS ofrece lo mejor de ambos mundos: pueden simplemente asignar sus estructuras de datos en la memoria y usarlas de forma transparente en dispositivos CPU y GPU, o pueden ubicar explícitamente los datos cerca del hardware computacional para evitar costosas transferencias de datos ( en términos de mayor tiempo de ejecución y consumo de energía) que limitarían el rendimiento y la escalabilidad. Esto convierte a PGAS en un marco excelente para muchas aplicaciones que necesitan maximizar el rendimiento y admitir la escalabilidad en arquitecturas paralelas a gran escala, como las supercomputadoras de exaescala DOE.

El controlador de la aplicación

Muchas aplicaciones científicas implican actualizaciones asincrónicas de estructuras de datos irregulares, como mallas adaptativas, matrices dispersas, tablas hash, histogramas, gráficos y colas de trabajo dinámicas.

A veces, el programador sabe lo suficiente sobre la estructura de datos para determinar la forma más eficiente de explotar la localidad de memoria. El modelo PGAS permite al programador gestionar explícitamente la ubicación de estas estructuras de datos para optimizar el rendimiento, por ejemplo, en la memoria de una GPU discreta. Alternativamente, es posible que al programador realmente no le importe. En este caso lo que realmente quieren es acceder a los datos y continuar con el cómputo. En este escenario de acceso y continuación, el modelo de memoria PGAS naturalmente admite un acceso conveniente a los datos.

Desafortunadamente, no todos los accesos a la memoria son tan fáciles de categorizar. El modelo PGAS brinda a los programadores las herramientas que necesitan para abordar problemas complicados de acceso a datos donde el rendimiento al acceder a los datos realmente importa, pero el movimiento de datos es demasiado complejo e irregular para ser predecible.

Introducción técnica

La proliferación de la informática heterogénea y la complejidad asociada de las ofertas de hardware de múltiples proveedores introduce una explosión combinatoria en la diversidad de plataformas. Desde la perspectiva del programador, cada centro de datos y supercomputadora puede requerir optimizaciones muy específicas en la ubicación de los datos para lograr un alto rendimiento. Para ayudar al programador a enfrentar este desafío de portabilidad combinatoria, la pila de software Pagoda proporciona una capa de comunicación portátil, GASNet, y las capas de productividad UPC++ y Berkeley UPC (Figura 1).

GASNet-EX

GASNet-EX es una actualización del sistema de comunicación y base de código GASNet-1 PGAS de 20 años de antigüedad. Como parte de esta actualización, las interfaces GASNet se han rediseñado para adaptarse a las necesidades emergentes de supercomputación a exaescala y servicios de comunicación de soporte para una variedad de modelos de programación PGAS en arquitecturas HPC actuales y futuras. Este esfuerzo incluye una revisión de la implementación junto con este importante rediseño de las interfaces del software.

Los objetivos motivadores de este rediseño, junto con la compatibilidad con versiones anteriores para los clientes GASNet-1, incluyen:

La compatibilidad es importante porque GASNet ha sido adoptado por varios proyectos (Figura 2). La estrecha coincidencia semántica de las API de GASNet-EX con los requisitos del cliente y las capacidades del hardware a menudo produce un mejor rendimiento que las bibliotecas de la competencia debido a su implementación directa sobre las API nativas para redes de interés en HPC.

Paul Hargrove, ingeniero de sistemas informáticos 5 en la división de Matemáticas Aplicadas e Investigación Computacional (AMCR) del Laboratorio Nacional Lawrence Berkeley (Berkeley Lab) y PI del proyecto ECP Pagoda observó que los cambios indicados por '-EX' abordan cómo las aplicaciones y HPC se han cambiado en los últimos 20 años. Por ejemplo, los tipos de memoria son importantes para expresar cómo los accesos a memoria remota (RMA) ahora incluyen operaciones de obtención y transferencia a/desde la memoria de la GPU.

Vista de organización y programador

El objeto cliente reside en el nivel superior de la jerarquía de objetos GASNet-EX (Figura 3). Abarca todas las interacciones entre el sistema de ejecución de un modelo de programación determinado y GASNet. El término Cliente se refiere a la capa de software que se encuentra encima de GASNet y realiza llamadas a GASNet, lo que crea este objeto al inicio.

Cada objeto de cliente contiene uno o más puntos finales, que pueden considerarse como un contexto de comunicación ligero.

Cada operación de comunicación generalmente está asociada con dos o más puntos finales. Cada punto final incluye una tabla de controlador de mensajes activos (AM), que asigna un índice de mensajes activos al puntero de función local correspondiente. El punto final también tiene un enlace opcional a un objeto Segment. Un objeto Segment representa una región contigua de la memoria local, que podría estar en la DRAM del host o en la memoria que reside en un dispositivo como una GPU.

Los puntos finales se pueden agrupar en un conjunto ordenado de puntos finales locales y remotos, que es un análogo liviano de un comunicador MPI. Este grupo de puntos finales se denomina miembro del equipo (TM) y funciona como un mecanismo para nombrar globalmente puntos finales individuales y para identificar a los participantes en una operación colectiva.

La mayoría de las operaciones de inicio de comunicación en GASNet-EX toman un argumento TM, que especifica implícitamente el cliente, el punto final, los controladores y el segmento utilizados por esa operación.

Hargrove continuó: “GASNet-EX se creó reconociendo que los sistemas y aplicaciones HPC se han vuelto más complicados. Nuestros usuarios han descubierto que los cálculos que antes eran muy regulares ya no muestran un comportamiento tan agradable. La comunicación de datos residentes en la GPU es esencial para una supercomputación heterogénea de alto rendimiento. Brindar a los usuarios la capacidad de vincular la memoria en un modelo PGAS a los dispositivos es importante para la eficiencia y para proporcionar superposición de cálculo/comunicación y reducir el tiempo de solución. Las capacidades de transferencia asíncrona de GPU pueden ayudar a acelerar las comunicaciones de una manera más natural en comparación con MPI. Además, el equipo está trabajando para aumentar la escala, eliminar el bloqueo, hacer que los subprocesos sean entidades de primera clase y hacer que el uso de puntos finales sea explícito.

UPC++

UPC++ es la otra mitad de la historia de Pagoda que se superpone a GASNet-EX. “En particular”, explicó Hargrove, “UPC++ generaliza las operaciones de comunicación GASNet-EX para mover datos alrededor y hacia/desde las memorias del dispositivo. UPC++ es una abstracción de nivel superior que admite una comunicación unilateral eficiente para datos masivos y tipos de datos C++ enriquecidos. UPC++ también proporciona la capacidad de trasladar fácilmente la computación a los datos, lo que suele ser más natural para el programador y/o más eficiente desde el punto de vista computacional. UPC++ es una biblioteca de plantillas de código abierto que solo requiere un compilador de C++ para su uso.

Abstracciones de alto nivel con plantilla de C++

UPC++ proporciona abstracciones de productividad de alto nivel apropiadas para la programación del espacio de direcciones global particionado (PGAS), como: acceso a memoria remota (RMA), llamada a procedimiento remoto (RPC), soporte para aceleradores (por ejemplo, GPU) y mecanismos para ocultar la asincronía agresiva. costos de comunicación. UPC++ implementa la comunicación mediante GASNet-EX. Está diseñado para ofrecer alto rendimiento y portabilidad desde computadoras portátiles hasta supercomputadoras de exaescala. El software de aplicación HPC que utiliza UPC++ incluye: ensamblador de metagenoma MetaHipMer2, simulación de propagación viral SIMCoV, NWChemEx TAMM y núcleos de cálculo de gráficos de ExaGraph.

Las características de diseño de UPC++ se centran en:

De forma predeterminada, todas las comunicaciones UPC++ tienen fases divididas y comienzan con una operación de inicio. Luego, el programador es libre de realizar cualquier otro trabajo que pueda realizarse mientras los datos están en tránsito, después de lo cual espera para asegurarse de que la operación de transferencia de datos se haya completado antes de continuar (Figura 5).

UPC++ explota muchas características del C++ moderno para ayudar al programador a crear código comprensible y mantenible. Hargrove destacó que “UPC++ se puede utilizar en combinación con expresiones lambda de C++, lo que tiene muchas ventajas de programación. Con expresiones UPC++ y lambda, el programador puede organizar su código fuente de modo que especifique, en la ubicación exacta donde se requiere UPC++, las operaciones necesarias para mover datos al cálculo o mover el cálculo a donde residen los datos”. Esta localidad hace que sea mucho más fácil para las personas comprender el software y mantenerlo.

UPC++ permite al programador componer las potentes funciones de productividad de la biblioteca de plantillas estándar de C++ sin problemas con llamadas a procedimientos remotos. Por ejemplo, la Figura 6 demuestra cómo se podría implementar fácilmente una operación de inserción de tabla hash distribuida componiendo std::unordered_map con UPC++ RPC. En este ejemplo, cada proceso mantiene su partición de la tabla hash distribuida en la variable local_map (los tipos de clave y valor son std::string con fines ilustrativos). La operación de inserción utiliza un hash de la clave para identificar la partición correspondiente a esa clave, y se envía una llamada a procedimiento remoto UPC++ al proceso propietario para realizar la inserción en la copia apropiada de local_map. Toda esta operación es naturalmente asincrónica y devuelve un tipo futuro UPC++, que la persona que llama puede usar más tarde para sincronizar la finalización.

Además de ser altamente productiva, la biblioteca UPC++ también puede ofrecer una sólida escalabilidad de rendimiento en supercomputadoras modernas. La Figura 7 demuestra el escalado débil casi lineal en la supercomputadora NERSC Cori de una versión ligeramente mejorada de esta tabla hash distribuida. (Para más detalles, consulte https://doi.org/10.25344/S4V88H).

Para más información

GASNet-EX (https://gasnet.lbl.gov/)

UPC++ (https://upcxx.lbl.gov/)

Resultados de desempeño de 2023

Los resultados de rendimiento de GASNet-EX se informan en la página de rendimiento de GASNet de Berkeley Lab para una amplia gama de máquinas.

Los resultados recientes de Frontier que miden el rendimiento de las operaciones Get y Put RMA en comparación con la biblioteca HPE Cray MPI demuestran que GASNet-EX puede ofrecer un rendimiento de ancho de banda comparable utilizando la supercomputadora más rápida del mundo a partir de junio de 2023 (Figura 8).

Estos resultados comparativos de "ancho de banda de inundación" miden el ancho de banda de interconexión alcanzable para un tamaño de transferencia determinado iniciando una gran cantidad de transferencias sin bloqueo (por ejemplo, la "inundación") y esperando a que todas se completen por completo. La métrica informada es el volumen total de datos transferidos, dividido por el tiempo total transcurrido. El punto de referencia informa anchos de banda de inundación unidireccionales (un iniciador a un objetivo), donde el objetivo pasivo espera en una operación de sincronización adecuada.[2]

El ancho de banda cuenta sólo una parte de la historia, ya que muchas aplicaciones HPC pueden verse limitadas por la latencia de la operación de comunicaciones. La Figura 9 informa el tiempo medio para completar completamente una única operación de colocación o obtención de RMA de ida y vuelta en la interconexión Frontier Slingshot-11, calculada cronometrando una secuencia larga de operaciones de bloqueo (cuanto más bajo, mejor). [3]

Los resultados actuales de ancho de banda y latencia de la GPU en el banco de pruebas Crusher para la supercomputadora Frontier son preliminares y un trabajo en progreso. [4]

Proyectos ECP codesarrollados

Hargrove señaló que el Proyecto Exabiome, finalista del premio Gordon Bell, es un proyecto desarrollado estrechamente en colaboración con Pagoda. Los proyectos adicionales incluyen ExaGraph, NWChemEx y AMReX (Figura 1).

Kathy Yelick, asesora principal en informática y docente afiliada en Berkeley Lab, investigadora principal del esfuerzo Exabiome del Exascale Computing Project (ECP) y vicerrectora de investigación en UC Berkeley, destacó la visión de su equipo sobre el proyecto Exabiome: “El equipo Exabiome está construyendo un conjunto de herramientas para trabajar con terabytes de datos (que contienen billones de pares de bases) donde no entendemos todas las proteínas codificadas por estos pares de bases en este momento. Comprender las similitudes entre las proteínas y sus interrelaciones es importante para comprender cómo funcionan los microbiomas. Para hacerlo se requieren herramientas computacionales muy poderosas que puedan inferir las funciones de proteínas relacionadas en estos conjuntos de datos masivos”. Los microbiomas son comunidades cooperativas de microbios. Estos organismos y los organismos de los microbiomas asociados son actores centrales en el cambio climático, la remediación ambiental, la producción de alimentos y la salud humana.[5]

Para demostrar el éxito de su enfoque, el equipo de Exabiome utilizó más de 20.000 GPU en la supercomputadora Summit del Laboratorio Nacional Oak Ridge (ORNL) para realizar una búsqueda de similitudes de proteínas de muchos contra muchos en el conjunto de datos de proteínas más grande disponible. El desempeño observado fue transformador porque la búsqueda se completó en horas en lugar de semanas.

Lograr la aceleración de GPU de HipMer y MetaHipMer2 para realizar un ensamblaje del genoma de novo a escala extrema requirió el uso de UPC++. MetaHipMer es un ensamblador de metagenomas de producción que se reescribió en UPC++ con financiación de ECP. Está diseñado para metagenómica y optimizado para GPU.

El extraordinario beneficio de rendimiento (digno de presentar el Premio Gordon Bell) se destacó en la presentación de la Reunión Anual del ECP de 2023 “Exabiome: entonces y ahora” por Lenny Oliker (director ejecutivo del proyecto Exabiome, científico senior y líder del grupo de desempeño del Berkeley Lab AMCR). y grupo de algoritmos) y Kathy Yelick (asesora principal en informática y facultad afiliada en Berkeley Lab, investigadora principal del esfuerzo ECP Exabiome y vicerrectora de investigación en UC Berkeley) señala que “la aceleración de 2016 a 2021 es de más de 250 veces debido a mejoras algorítmicas, uso de GPUs y UPC++”.[6] La presentación también discutió la importancia del rendimiento del ancho de banda de inundación (Figura 8). Para obtener más detalles, consulte "GASNet-EX: una biblioteca de comunicaciones portátil de alto rendimiento para exaescala" y "Rendimiento de la comunicación RMA de GASNet-EX en sistemas de supercomputación recientes".

El sitio web de Exabiome señala sucintamente: “El alto rendimiento de MetaHipMer se basa en varios avances algorítmicos novedosos logrados al aprovechar la eficiencia y la programabilidad de las capacidades de comunicación unilateral y las llamadas RPC de UPC++, incluido el análisis optimizado de k-mer de alta frecuencia, que evita la comunicación. recorrido del gráfico de Bruijn, optimización avanzada de E/S y paralelización extensa en las numerosas y complejas fases de la aplicación”. [7]

Se proporciona una discusión detallada en el artículo “Aceleración del ensamblaje de metagenomas de novo a gran escala mediante GPU” y el video de presentación asociado.

Resumen

El modelo comunitario de Pagoda Project aborda las necesidades de desarrollo de software de los desarrolladores que utilizan el espacio de direcciones compartido globalmente de PGAS para mejorar la productividad e implementar modelos escalables de alto rendimiento. La aceleración de GPU aumentó el valor del modelo PGAS al facilitar el acceso a los datos en un entorno informático heterogéneo distribuido y al mismo tiempo adoptar la conciencia de los costos de comunicación no uniformes, permitiendo así la optimización, incluso cuando el comportamiento de acceso a los datos es demasiado complejo e irregular para ser predecible.

Esta investigación fue apoyada por el Proyecto de Computación a Exaescala (17-SC-20-SC), un proyecto conjunto de la Oficina de Ciencia del Departamento de Energía de EE. UU. y la Administración Nacional de Seguridad Nuclear, responsable de ofrecer un ecosistema de exaescala capaz, que incluya software, aplicaciones, y tecnología de hardware, para respaldar el imperativo informático a exaescala del país.

Rob Farber es un autor y consultor de tecnología global con una amplia experiencia en HPC y en el desarrollo de tecnología de aprendizaje automático que aplica en laboratorios nacionales y organizaciones comerciales.

Fuente: Rob Farber, ECP

El controlador de la aplicaciónIntroducción técnicaGASNet-EXUPC++GASNet-EXVista de organización y programadorUPC++Abstracciones de alto nivel con plantilla de C++Para más informaciónResultados de desempeño de 2023Proyectos ECP codesarrolladosResumenEsta investigación fue apoyada por el Proyecto de Computación a Exaescala (17-SC-20-SC), un proyecto conjunto de la Oficina de Ciencia del Departamento de Energía de EE. UU. y la Administración Nacional de Seguridad Nuclear, responsable de ofrecer un ecosistema de exaescala capaz, que incluya software, aplicaciones, y tecnología de hardware, para respaldar el imperativo informático a exaescala del país.