Sobre un Enfoque Simplificado para Lograr Rendimiento Paralelo y Portabilidad a Través de Arquitecturas de CPU y GPU
Autores: Morgan, Nathaniel; Yenusah, Caleb; Diaz, Adrian; Dunning, Daniel; Moore, Jacob; Heilman, Erin; Roth, Calvin; Lieberman, Evan; Walton, Steven; Brown, Sarah; Holladay, Daniel; Knezevic, Marko; Whetstone, Gavin; Baker, Zachary; Robey, Robert
Idioma: Inglés
Editor: MDPI
Año: 2024
Acceso abierto
Artículo científico
2024
Sobre un Enfoque Simplificado para Lograr Rendimiento Paralelo y Portabilidad a Través de Arquitecturas de CPU y GPU
Categoría
Gestión y administración
Subcategoría
Gestión de la tecnología y la inovación
Palabras clave
Avances en software
CPU de múltiples núcleos
GPU
Computación de alto rendimiento
Biblioteca MATAR
Paralelismo
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 1
Citaciones: Sin citaciones
Este documento presenta avances en software para explotar fácilmente arquitecturas de computadoras que consisten en una CPU de múltiples núcleos y CPU+GPU para acelerar diversos tipos de aplicaciones de computación de alto rendimiento (HPC) utilizando una única implementación de código. El documento describe y demuestra el rendimiento de la biblioteca de matrices y arreglos en C++ de código abierto (MATAR) que ofrece de manera única: (1) una sintaxis sencilla para la productividad en programación, (2) estructuras de datos utilizables para la programación orientada a datos (DOP) para el rendimiento, y (3) una interfaz simple a la biblioteca Kokkos en C++ de código abierto para la portabilidad y gestión de memoria entre CPUs y GPUs. La portabilidad entre arquitecturas con una única implementación de código se logra al cambiar automáticamente entre diversos backends de paralelismo de grano fino (por ejemplo, CUDA, HIP, OpenMP, pthreads, etc.) en tiempo de compilación. La biblioteca MATAR resuelve muchos desafíos de larga data asociados con la escritura fácil de software que puede ejecutarse en paralelo en cualquier arquitectura de computadora. Este trabajo beneficia a proyectos que buscan escribir nuevos códigos en C++ mientras también aborda los desafíos de hacer que los códigos existentes en Fortran sean eficientes y portables sobre arquitecturas de computadoras modernas con cambios sintácticos mínimos de Fortran a C++. Demostramos la viabilidad de escribir fácilmente nuevos códigos en C++ y modernizar códigos existentes con MATAR para que sean eficientes, paralelos y portables a través de diversas arquitecturas de computadoras.
Descripción
Este documento presenta avances en software para explotar fácilmente arquitecturas de computadoras que consisten en una CPU de múltiples núcleos y CPU+GPU para acelerar diversos tipos de aplicaciones de computación de alto rendimiento (HPC) utilizando una única implementación de código. El documento describe y demuestra el rendimiento de la biblioteca de matrices y arreglos en C++ de código abierto (MATAR) que ofrece de manera única: (1) una sintaxis sencilla para la productividad en programación, (2) estructuras de datos utilizables para la programación orientada a datos (DOP) para el rendimiento, y (3) una interfaz simple a la biblioteca Kokkos en C++ de código abierto para la portabilidad y gestión de memoria entre CPUs y GPUs. La portabilidad entre arquitecturas con una única implementación de código se logra al cambiar automáticamente entre diversos backends de paralelismo de grano fino (por ejemplo, CUDA, HIP, OpenMP, pthreads, etc.) en tiempo de compilación. La biblioteca MATAR resuelve muchos desafíos de larga data asociados con la escritura fácil de software que puede ejecutarse en paralelo en cualquier arquitectura de computadora. Este trabajo beneficia a proyectos que buscan escribir nuevos códigos en C++ mientras también aborda los desafíos de hacer que los códigos existentes en Fortran sean eficientes y portables sobre arquitecturas de computadoras modernas con cambios sintácticos mínimos de Fortran a C++. Demostramos la viabilidad de escribir fácilmente nuevos códigos en C++ y modernizar códigos existentes con MATAR para que sean eficientes, paralelos y portables a través de diversas arquitecturas de computadoras.