Imprimir

Programa

CURSO:COMPUTACIÓN DE ALTO RENDIMIENTO	 
TRADUCCIÓN:HIGH PERFORMANCE COMPUTING
SIGLA:IMT3870
CRÉDITOS:05 UC
MÓDULOS:02	
CARÁCTER:MÍNIMO
TIPO:CÁTEDRA,TALLER
CALIFICACIÓN:ESTÁNDAR
DISCIPLINA:INGENIERÍA, COMPUTACIÓN
PALABRAS CLAVE:COMPUTACIÓN,INTELIGENCIA,ARTIFICIAL,CIENCIA,DATOS,ALTO,RENDIMIENTO


I.DESCRIPCIÓN DEL CURSO 

En este curso los estudiantes aprenderán técnicas y conceptos básicos para desarrollar, analizar e implementar algoritmos paralelos escalables y cómo sus programas pueden hacer uso de las tecnologías modernas de cómputo de alto rendimiento. Se estudiarán problemas actuales y las tecnologías que permiten soportar este tipo de cómputo.


II.RESULTADOS DE APRENDIZAJE 

1.Describir las arquitecturas más comúnmente utilizadas en la construcción de plataformas de alto rendimiento y sus mecanismos asociados.

2.Utilizar modelos para describir y analizar el rendimiento de algoritmos que se ejecutan en plataformas de alto rendimiento.

3.Implementar programas en ambientes paralelos utilizando memoria compartida, paso de mensajes y arquitectura manycore para ver su desempeño.

4.Aplicar técnicas de cómputo de alto rendimiento en áreas de data science, aprendizaje de máquina o cómputo científico.


III.CONTENIDOS

1.Introducción a las plataformas de alto rendimiento
1.1.Arquitecturas de supercomputadores y clusters
1.2.Arquitecturas de cluster y grid
1.3.Sistemas de almacenamiento de alto rendimiento

2.Uso de plataformas de alto rendimiento
2.1.Scheduling y administración de trabajos
2.2.Experiencia práctica: uso scheduler SLURM

3.Modelos para cómputo de alto rendimiento
3.1.Métricas de rendimiento
3.2.Modelo work-span
3.3.Paralelismo de control y paralelismo de datos
3.4.Experiencia práctica: evaluación de métricas

4.Programación con memoria compartida.
4.1.OpenMP
4.2.CilkPlus
4.3.Experiencia práctica: análisis de rendimiento con OpenMP

5.Programación con paso de mensajes
5.1.MPI
5.2.Experiencia práctica: análisis de rendimiento con MPI

6.Programación en GPU
6.1.Programación en CUDA y OpenCL
6.2.Experiencia práctica: análisis de rendimiento en GPU

7.Programación en manycore
7.1.Programación MIC sobre Xeon Phi
7.2.Experiencia práctica: análisis de ejecución en MIC

8.Aplicaciones en aprendizaje de máquina
8.1.Aplicaciones en Deep learning: keras, tensorflow
8.2.Experiencia práctica: análisis de rendimiento en aplicación de Deep learning

9.Aplicaciones en big data
9.1.Aplicaciones en big data analytics
9.2.Experiencia práctica: bibliotecas de HPC en Python


IV.ESTRATEGIAS METODOLÓGICAS

-Clases expositivas.

-Actividades prácticas.


V.ESTRATEGIAS EVALUATIVAS

-Controles: 20%

-Actividades prácticas: 80%


VI.BIBLIOGRAFÍA 

Mínima

Matloff, N. Programming on Parallel Machines; GPU, Multicore, Clusters and more. Disponible gratuitamente en: http://heather.cs.ucdavis.edu/parprocbook. Creative Commons License.


Complementaria 

Grama, A., Gupta, A., Karypis, G., Kumar, V. Introduction to Parallel Computing. Pearson, 2003. http://www-users.cs.umn.edu/~karypis/parbook/

McCool, M., Robinson, A., Reinders, J., Kauffman, M. Structured Parallel Programming: Patterns for Efficiente Computation. Elsevier, 2012

Matloff, N. Parallel Computing for Data Science: With Examples in R, C++ and CUDA. Chapman and Hall, 2015.

Eijkhout, V. Introduction to High-Performance Scientific Computing. lulu.com, 2011. https://bitbucket.org/VictorEijkhout/hpc-book-and-course


PONTIFICIA UNIVERSIDAD CATÓLICA DE CHILE 
ESCUELA DE INGENIERÍA/ ENERO 2020