Introduction to HPC Applications, Systems, and Programming Models

  • Bernd Mohr – Centro de Supercomputación de Jülich. Alemania.

Aplicaciones, sistemas y modelos de computación de alto rendimiento

Breve resumen de la materia

En este curso introductorio, los estudiantes aprenderán qué es la computación de alto rendimiento (HPC) y qué la diferencia de otras áreas de la informática. Se hará una
introducción a las principales áreas de aplicación que utilizan HPC para la investigación y la industria, y cómo la inteligencia artificial (AI) y HPC interactúan entre sí. Se presentarán las principales arquitecturas de sistemas de HPC necesarias para ejecutar estas aplicaciones (sistemas de memoria distribuida y compartida, sistemas híbridos y sistemas heterogéneos). En la parte principal del curso, se proporcionará a los estudiantes una visión general de los lenguajes y paradigmas utilizados para programar aplicaciones y sistemas de HPC. Aprenderán cómo usar MPI para programar sistemas de memoria distribuida (clusters) y cómo usar OpenMP para sistemas de memoria compartida. El curso concluirá con una introducción a los métodos y herramientas para el análisis de rendimiento y debugging de programas paralelos.

Objetivos del curso
– Proporcionar una comprensión básica de la computación paralela.
– Proporcionar una comprensión básica de la programación de sistemas de memoria distribuida con MPI.
– Proporcionar una comprensión básica de la programación de sistemas de memoria compartida con OpenMP.
– Proporcionar una introducción a los métodos y herramientas para el análisis de rendimiento y el debugging de programas paralelos.

Programa
– Terminología básica y áreas de aplicación de HPC.
– Evaluación de rendimiento de programas.
– Arquitecturas de hardware de HPC: sistemas de memoria compartida y distribuida, sistemas híbridos, sistemas heterogéneos con aceleradores.
– Programación de sistemas de memoria distribuida.
– Programación de sistemas de memoria compartida.
– Perspectivas: programación de aceleradores.
– Introducción al análisis de performance de programas paralelos.
– Introducción al debugging de programas paralelos.
– Herramientas: MPI, OpenMP, OpenACC, CUDA/HIP.

Prerrequisitos
Conocimientos de alguno de los siguientes lenguajes de programación: C, C++, Fortran o Python.
Nociones básicas de desarrollo de software.
Nociones básicas de arquitectura del computador.

Bibliografía
– Victor Eijkhout. The Art of HPC, Volume 1: The Science of Computing. 3rd edition 2022, last update August 2023. https://theartofhpc.com/
– Victor Eijkhout. The Art of HPC, Volume 2: Parallel Programming for Science and Engineering. 2nd edition 2022, last update October 2023. https://theartofhpc.com/
– Victor Eijkhout. The Art of HPC, Volume 3: Introduction to Scientific Programming 1st edition, last update August 2023. https://theartofhpc.com/
– Georg Hager, Gerhard Wellein. Introduction to High Performance Computing for Scientists and Engineers. ISBN 9781439811924. July 2010, CRC Press.
https://blogs.fau.de/hager/hpc-book
– William Gropp, Ewing Lusk, Anthony Skjellum. Using MPI. ISBN 9780262527392. November 2014, The MIT Press. https://mitpress.mit.edu/9780262527392
– Barbara Chapman, Gabriele Jost and Ruud van der Pas. Using OpenMP. ISBN 9780262533027. October 2007, The MIT Press. https://mitpress.mit.edu/9780262533027/