Algoritmos y Computación de Alto Rendimiento
Volver a Cursos
Algoritmos y Computación de Alto Rendimiento - Código 29451
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
Cuando .
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 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:
- FASE 1: Presentación de la propuesta a realizar.
- FASE 2: Desarrollo de la propuesta.
- FASE 3: Presentación de la propuesta como un poster digital
Por adicional, se tiene en cuenta la participación en todas las sesiones.