CURSO:COMPUTACION DE ALTO RENDIMIENTO TRADUCCION:HIGH PERFORMANCE COMPUTING SIGLA:IMT3870 CREDITOS:05 UC MODULOS:02 CARACTER:MINIMO TIPO:CATEDRA,TALLER CALIFICACION:ESTANDAR DISCIPLINA:INGENIERIA, COMPUTACION PALABRAS CLAVE:COMPUTACION,INTELIGENCIA,ARTIFICIAL,CIENCIA,DATOS,ALTO,RENDIMIENTO I.DESCRIPCIÓN DEL CURSO En este curso los estudiantes aprenderan tecnicas y conceptos basicos para desarrollar, analizar e implementar algoritmos paralelos escalables y como sus programas pueden hacer uso de las tecnologias modernas de computo de alto rendimiento. Se estudiaran problemas actuales y las tecnologias que permiten soportar este tipo de computo. II.RESULTADOS DE APRENDIZAJE 1.Describir las arquitecturas mas comunmente utilizadas en la construccion 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 tecnicas de computo de alto rendimiento en areas de data science, aprendizaje de maquina o computo cientifico. III.CONTENIDOS 1.Introduccion 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 administracion de trabajos 2.2.Experiencia practica: uso scheduler SLURM 3.Modelos para computo de alto rendimiento 3.1.Metricas de rendimiento 3.2.Modelo work-span 3.3.Paralelismo de control y paralelismo de datos 3.4.Experiencia practica: evaluacion de metricas 4.Programacion con memoria compartida. 4.1.OpenMP 4.2.CilkPlus 4.3.Experiencia practica: analisis de rendimiento con OpenMP 5.Programacion con paso de mensajes 5.1.MPI 5.2.Experiencia practica: analisis de rendimiento con MPI 6.Programacion en GPU 6.1.Programacion en CUDA y OpenCL 6.2.Experiencia practica: analisis de rendimiento en GPU 7.Programacion en manycore 7.1.Programacion MIC sobre Xeon Phi 7.2.Experiencia practica: analisis de ejecucion en MIC 8.Aplicaciones en aprendizaje de maquina 8.1.Aplicaciones en Deep learning: keras, tensorflow 8.2.Experiencia practica: analisis de rendimiento en aplicacion de Deep learning 9.Aplicaciones en big data 9.1.Aplicaciones en big data analytics 9.2.Experiencia practica: bibliotecas de HPC en Python IV.ESTRATEGIAS METODOLOGICAS -Clases expositivas. -Actividades practicas. V.ESTRATEGIAS EVALUATIVAS -Controles: 20% -Actividades practicas: 80% VI.BIBLIOGRAFIA Minima 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 CATOLICA DE CHILE ESCUELA DE INGENIERIA/ ENERO 2020