Difference between revisions of "Computación de alto rendimiento"
Line 91: | Line 91: | ||
</div> | </div> | ||
==='''Evaluación'''=== | ==='''Evaluación'''=== | ||
− | ====='''Evaluaciones programadas para el | + | ====='''Evaluaciones programadas para el 2do Semestre de 2020'''===== |
La evaluación tendrá cinco componentes principales, relacionados con su proyecto de maestría. El objetivo es tratar parte de la implementación de su problema de investigación (o un problema asociado) usando computación de alto rendimiento, principalmente en programación bajo tres paradigmas principales: memoria compartida, memoria distribuída y computación hibrída usando GPUS. Si dado el caso, | La evaluación tendrá cinco componentes principales, relacionados con su proyecto de maestría. El objetivo es tratar parte de la implementación de su problema de investigación (o un problema asociado) usando computación de alto rendimiento, principalmente en programación bajo tres paradigmas principales: memoria compartida, memoria distribuída y computación hibrída usando GPUS. Si dado el caso, | ||
− | *La | + | *La Primera Evaluación es la participación y un informe en la Conferencia Latinoamericana de Computación de Alto Rendimiento #CARLA2020 (<nowiki>https://carla2020.org</nowiki>), teniendo en cuenta lo siguiente: |
− | *La segunda parte de la evaluación es la implementación del algoritmo en un código secuencial y de la implementación en OpenMP | + | **Debe participaren las actividades de la Conferencia Central #CARLA2020 (Registro gratuito: https://carla2020.org/registration/general-register-carla2020/individual-registration) |
− | *La tercera parte de la evaluación es la implementación en MPI. | + | **Debe participar en al menos un tutorial para principantes y un tutorial avanzado (Presentar certificado de asistencia), igualmente gratuito. |
− | *La cuarta parte de la evaluación es la implementación en CUDA u OpenACC | + | **Debe participar en al menos dos (2) workshops (igualmente gratuito) |
− | * | + | **Realizar un informe de al menos tres (3) páginas sobre la participación. (La fecha de entrega es el 25 de septiembre de 2020) |
+ | *La segunda parte de la evaluación es la implementación del algoritmo en un código secuencial y de la implementación en OpenMP (La fecha de entrega se definirá) | ||
+ | *La tercera parte de la evaluación es la implementación en MPI. (La fecha de entrega se definirá) | ||
+ | *La cuarta parte de la evaluación es la implementación en CUDA u OpenACC. (La fecha de entrega se definirá) | ||
+ | * | ||
==='''Bibliografía y Fuentes de Información'''=== | ==='''Bibliografía y Fuentes de Información'''=== |
Revision as of 14:30, 18 August 2020
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
Contents
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
- 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
- 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
- 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
- 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
- Programación de Sistemas CPU-GPU (Sistemas GPGPU)
- 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
- Optimización
- Optimización Local y Global Paralela
- 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)
- Debugging and Profiling
- Consideraciones de Debugging y Monitoreo de Rendimiento y Comportamiento
- Herramientas para el Debugging y el Profling
- 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
- 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 2do Semestre de 2020
La evaluación tendrá cinco componentes principales, relacionados con su proyecto de maestría. El objetivo es tratar parte de la implementación de su problema de investigación (o un problema asociado) usando computación de alto rendimiento, principalmente en programación bajo tres paradigmas principales: memoria compartida, memoria distribuída y computación hibrída usando GPUS. Si dado el caso,
- La Primera Evaluación es la participación y un informe en la Conferencia Latinoamericana de Computación de Alto Rendimiento #CARLA2020 (https://carla2020.org), teniendo en cuenta lo siguiente:
- Debe participaren las actividades de la Conferencia Central #CARLA2020 (Registro gratuito: https://carla2020.org/registration/general-register-carla2020/individual-registration)
- Debe participar en al menos un tutorial para principantes y un tutorial avanzado (Presentar certificado de asistencia), igualmente gratuito.
- Debe participar en al menos dos (2) workshops (igualmente gratuito)
- Realizar un informe de al menos tres (3) páginas sobre la participación. (La fecha de entrega es el 25 de septiembre de 2020)
- La segunda parte de la evaluación es la implementación del algoritmo en un código secuencial y de la implementación en OpenMP (La fecha de entrega se definirá)
- La tercera parte de la evaluación es la implementación en MPI. (La fecha de entrega se definirá)
- La cuarta parte de la evaluación es la implementación en CUDA u OpenACC. (La fecha de entrega se definirá)
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
- Introducción Linux
- Simple Linux Utility for Resource Management
- Shared Memory Programming with OpenMP (In Spanish/En Español)
- Distributed Memory Exploitation with MPI: An Introduction
- Hybrid/Heterogeneous Computing
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.