Computación de alto rendimiento

From Supercomputación y Cálculo Científico UIS
Logo_sc33.png

 

Volver a Cursos

Computación de Alto Rendimiento - Código 24433

Carlos Jaime Barrios Hernandez, PhD. - (c b a r r i o s (@) u i s . e d u . c o )

Asistencia Técnica-Teórica:. Equipo SC3UIS

3-pi-cartoon.jpg

PRESENTACION DEL CURSO

La computación de alto rendimiento, como su nombre lo indica es aquella que esta destinada a tratar grandes volumenes de datos, grandes y complejos cálculos científicos, en tiempos aceptables, medibles, con una precisión adecuada al problema (muy grande), permitiendo ahorrar energía y compartir. Desde el punto de vista de las ciencias computacionales e ingeniería computacional (y afines), implica muchas cosas relacionadas que van más allá de las aplicaciones y la cantidad de datos: como la tecnología, aspectos relacionados con el medio ambiente y los costos, paradigmas de programación y de diseño/organización de arquitecturas computacionales (hardware/software) y por supuesto matemática.

Este es un curso dirigido a estudiantes de postgrado, que si bien puede compararse en contenido con el curso Introducción a la programación paralela el enfoque es hacia estudiantes de master y doctorado en ciencias computacionales y afines, haciendo énfasis en la obtención de altas prestaciones, y en el soporte hacia la solución de problemas científicos multidisciplinarios, desde un enfoque computacional.

Contenido

  1. Introducción a la Computación de Alto Rendimiento y Cálculo Científico
    • Altas Prestaciones y Alta Demanda Computacional
    • Computación Científica y de Alto Rendimiento
    • Evolución de la Computación de Alto Rendimiento
    • El Top500 y otros rankings
  2. Arquitecturas Paralelas y Sistemas Escalables
    • Modelos de Máquinas y Ejecución Paralelas
    • Paralelismo y Comunicación
    • Caracterización de Flynn
    • Multinucleos y Multiprocesamiento
    • Procesamiento Vectorial
    • Arquitecturas para el Procesamiento Masivamente Paralelo (Manycores)
    • Modelos de Memoria
      • Jerarquia de Memoria
    • Sistemas Distribuidos de Gran Escala
    • Unidades de Procesamiento Tensor
    • Unidades de Procesamiento Cuántico
    • Sistemas Operativos, Sistemas de Archivos, Calendarización y Monitoreo en Arquitecturas Paralelas
      • Aspectos especiales de Linux y Slurm
    • Algunos aspectos relacionados con CAPEX y Ambientes de Implementación de Plataformas
      • Energia y Temperatura
      • Seguridad y Comodidad
  3. Algoritmos Concurrentes y Paralelos
    • Caracterización de Paralelismo
    • Granularidad
    • Multihilos y Multiprocesos
    • Modelos de Computación (RAM, PRAM, Sorting Networks, BSP, LogP y otros)
    • Modelos de Algoritmos Concurrentes
      • Descomposición de Tareas
      • Descomposición de Datos
      • Dividir y Conquistar
      • Tuberias (Pipeline)
      • Recursividad y Otros (Embarrassingly Parallelism y Otros)
    • Algoritmos No Paralelos
    • Balanceo de Carga y Calendarización (Scheduling)
    • Algunos Aspectos Importantes de Comunicación
  4. Paradigmas y Modelos de Programación Paralela
    • Ambientes de Programación Paralela
    • Modelo de Programación de Memoria Compartida
      • OpenMP
    • Modelo de Programación de Memoria Distribuída
      • Paso de Mensajes con MPI
    • Modelo Programación de Memoria Híbrida/Heterogénea
      • Programación de Sistemas CPU-GPU (Sistemas GPGPU)
        • Fundamentos de Programación de GPUs y Múltiples GPU con CUDA
    • Uso de Directivas de Aceleración con OpenACC
    • Otros Mecanismos de Implementación y Aceleración de Aplicaciones
    • Aspectos Importantes de Comunicación, Balanceo de Carga y Tolerancia a Fallos desde la Implementación
    • Implementaciones hibridas
      • OpenMP + MPI
      • CUDA + MPI
  5. Optimización
    • Optimización Local y Global Paralela
  6. Evaluación de Desempeño
    • Latencia y Throughput
    • Speedup (Aceleración), Eficiencia y Escalabilidad
    • Ley de Amhdal
    • Ley de Gustaffon-Barsis
    • Complejidad Asimptótica (Aceleración y Eficiencia)
    • Modelo de Little
    • Análisis de Rendimiento y Tunning (Ajuste)
  7. Debugging and Profiling
    • Consideraciones de Debugging y Monitoreo de Rendimiento y Comportamiento
    • Herramientas para el Debugging y el Profling
  8. Lineamientos para el Desarrollo de Aplicaciones Paralelas
    • Patrones para el Flujo de Control y de Ejecución
    • Patrones para la Administración de Datos
    • Espacios de Diseño y Desarrollo de Programas Paralelos
      • Búsqueda de Explotación de Concurrencia
      • Diseño de Estructura de Algoritmo
      • Selección de Estructuras de Soporte de Algoritmos Paralelos
      • Selección de Mecanismos de Implementación
  9. Direcciones y Tendencias en Programación Paralela
    • Exascale
    • Explotación de Unidades Tensor y Aplicaciones Emergentes
    • Visualizacióm
    • Explotación de Memoria
    • Paradigmas de Programación Emergentes
    • Computación Cuántica
    • Tecnologías de ruptura computacional

Evaluación

Evaluaciones programadas para el 1er Semestre de 2021

El objetivo este semestre, es que el desarrollo del curso contribuya a tratar alguno de los aspectos de su proyecto de investigación de postgrado, o algún proyecto relacionado. La evaluación se dará en tres fases:

  1. FASE 1: Presentación de la propuesta a realizar.
  2. FASE 2: Desarrollo de la propuesta.
  3. FASE 3: Presentación de la propuesta como un poster digital

Por adicional, se tiene en cuenta la participación en todas las sesiones.

Bibliografía y Fuentes de Información

  • Elements of Parallel Computing, Eric Aubanel (Chapman & Hall/CRC)
  • Essentials of Computer Architecture, D. Comer (CRC Press)
  • High Performance Embedded Computing: Applications in Cyber-Physical systems and Mobile Computing, M. Wolf (Morgan Kaufmann)
  • The Fourth Paradigm: Data-Intensive Scientific Discovery
  • Designing and Building Parallel Programs, by Ian Foster
  • Patterns for Parallel Programming, by Timothy G. Mattson, Beverly A. Sanders and Berna L. Massingill. Software Patterns Series, Addison Wesley Ed., USA. 2009
  • Patterns for Parallel Software Design, Jorge Luis Ortega-Arjona (Wiley)
  • Structured Parallel Programming: Patterns for Efficient Computation, M. McCool, A. D. Robison and J. Reinders (Morgan Kaufmann)
  • The Art of Concurrency “A thread Monkey’s Guide to Writing Parallel Applications”, by Clay Breshears (Ed. O Reilly, 2009)
  • Parallel Scientific Computing in C++ and MPI « A Seamless Approach to Parallel Algorithms and Their Implementation », Karniadakis and Kirby II (Cambridge Press)
  • Parallel And Distributed Computation Numerical Methods, D. P. Bertsekas and J. N. Tsitsiklis (Prentice Hall)
  • An Introduction to High Performance Scientific Computing, Scientific and Engineering Computation Series, Ll. D. Fosdick, E. R. Jessup, C. J. C. Schauble and G. Dmik (MIT Press)
  • The Algorithms Design Manual, S. S. Skiena ( Springer)
  • Algorithms Sequential and Parallel « A Unified Approach » Miller and Boxer (Computing Engineering Series)
  • Parallel Algorithms, Cassanova, Legrand and Robert (Chapman and Hall/CRC)
  • Fundamentals of Multicore Software Development, Ed. Victor Pankratius, Ali-Reza Adl-Tabatabai and Walter Tichy (CRC Press)
  • Introduction to HPC with MPI for Data Science, Frank Nielsen (Springer)
  • Programming Massively Parallel Processors « A Hands-on Approach » , Kirk and Hwu (Nvidia/Morgan Kaufmann)
  • CUDA Application Design and Development, Rob Farber (Nvidia/Morgan Kaufmann)
  • Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein (Chapman and Hall/CRC)
  • Sourcebook of Parallel Computing , Dongarra, Foster, Fox, Groop, Kennedy, Torczon and White (Morgan Kaufmann)
  • CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, S. Cook (Morgan Kaufmann)
  • The CUDA Handbook: A Comprehensive Guide to GPU Programming, N. Wilt (Addison-Wesley)
  • CUDA by Example « An Introduction to General-Purpose GPU Programming » Sanders and Kandrot (Nvidia/Addison Wesley)
  • CUDA Fortran for Scientists and Engineers: Best Practices for Efficient CUDA Fortran Programming, G. Ruetsch and M. Fatica (Morgan Kaufmann/PGI/Nvidia)
  • HPC@Green IT: Green High Performance Computing Methods, R. Gruber and V. Keller (Springer)
  • OpenACC for Programmers: Concepts and Strategies, S. Chandraserkaran and G. Juckeland (Addison-Wesley)
  • OpenACC: Parallel Programming with OpenACC, Edited by Rob Farber (Morgan Kaufmann)
  • High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches, J. Reinders and J. Jeffers (Morgan Kaufmann)
  • OpenMP
  • OpenACC
  • NVIDIA
  • SC3
  • RICAP
  • Computing.llnl.gov
  • SC-Camp

MATERIAL DEL CURSO Y PRESENTACIONES DE LAS SESIONES

  1. Introducción a las Arquitecturas Escalables
    1. Parte 1
    2. Parte 2

CONSULTA A ESTUDIANTES

Los martes puede realizarse consulta en LP226 o en Supercomputación UIS 4to piso del CENTIC pero se recomienda solicitar cita por email previamente.