Difference between revisions of "Computación de alto rendimiento"
(3 intermediate revisions by the same user not shown) | |||
Line 91: | Line 91: | ||
</div> | </div> | ||
==='''Evaluación'''=== | ==='''Evaluación'''=== | ||
− | ====='''Evaluaciones programadas para el 1er Semestre de | + | ====='''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. | ||
+ | <br /> | ||
==='''Bibliografía y Fuentes de Información'''=== | ==='''Bibliografía y Fuentes de Información'''=== | ||
<div class="col-md-14"><div class="panel panel-darker-white-border"><ul><li>Elements of Parallel Computing, Eric Aubanel (Chapman & Hall/CRC)</li><li>Essentials of Computer Architecture, D. Comer (CRC Press)</li><li>High Performance Embedded Computing: Applications in Cyber-Physical systems and Mobile Computing, M. Wolf (Morgan Kaufmann)</li><li>[http://research.microsoft.com/en-us/collaboration/fourthparadigm/ The Fourth Paradigm: Data-Intensive Scientific Discovery]</li><li>[http://www.mcs.anl.gov/~itf/dbpp/ Designing and Building Parallel Programs, by Ian Foster]</li><li>[http://www.cise.ufl.edu/research/ParallelPatterns/ Patterns for Parallel Programming, by Timothy G. Mattson, Beverly A. Sanders and Berna L. Massingill. Software Patterns Series, Addison Wesley Ed., USA. 2009]</li><li>Patterns for Parallel Software Design, Jorge Luis Ortega-Arjona (Wiley)</li><li>Structured Parallel Programming: Patterns for Efficient Computation, M. McCool, A. D. Robison and J. Reinders (Morgan Kaufmann)</li><li>The Art of Concurrency “A thread Monkey’s Guide to Writing Parallel Applications”, by Clay Breshears (Ed. O Reilly, 2009)</li><li>Parallel Scientific Computing in C++ and MPI « A Seamless Approach to Parallel Algorithms and Their Implementation », Karniadakis and Kirby II (Cambridge Press)</li><li>Parallel And Distributed Computation Numerical Methods, D. P. Bertsekas and J. N. Tsitsiklis (Prentice Hall)</li><li>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)</li><li>The Algorithms Design Manual, S. S. Skiena ( Springer)</li><li>Algorithms Sequential and Parallel « A Unified Approach » Miller and Boxer (Computing Engineering Series)</li><li>Parallel Algorithms, Cassanova, Legrand and Robert (Chapman and Hall/CRC)</li><li>Fundamentals of Multicore Software Development, Ed. Victor Pankratius, Ali-Reza Adl-Tabatabai and Walter Tichy (CRC Press)</li><li>Introduction to HPC with MPI for Data Science, Frank Nielsen (Springer)</li><li>Programming Massively Parallel Processors « A Hands-on Approach » , Kirk and Hwu (Nvidia/Morgan Kaufmann)</li><li>CUDA Application Design and Development, Rob Farber (Nvidia/Morgan Kaufmann)</li><li>Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein (Chapman and Hall/CRC)</li><li>Sourcebook of Parallel Computing , Dongarra, Foster, Fox, Groop, Kennedy, Torczon and White (Morgan Kaufmann)</li><li>CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, S. Cook (Morgan Kaufmann)</li><li>The CUDA Handbook: A Comprehensive Guide to GPU Programming, N. Wilt (Addison-Wesley)</li><li>CUDA by Example « An Introduction to General-Purpose GPU Programming » Sanders and Kandrot (Nvidia/Addison Wesley)</li><li>CUDA Fortran for Scientists and Engineers: Best Practices for Efficient CUDA Fortran Programming, G. Ruetsch and M. Fatica (Morgan Kaufmann/PGI/Nvidia)</li><li>HPC@Green IT: Green High Performance Computing Methods, R. Gruber and V. Keller (Springer)</li><li>OpenACC for Programmers: Concepts and Strategies, S. Chandraserkaran and G. Juckeland (Addison-Wesley)</li><li>OpenACC: Parallel Programming with OpenACC, Edited by Rob Farber (Morgan Kaufmann)</li><li>High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches, J. Reinders and J. Jeffers (Morgan Kaufmann)</li><li>[https://www.openmp.org/ OpenMP]</li><li>[https://www.openacc.org/ OpenACC]</li><li>[http://developer.nvidia.com/ NVIDIA]</li><li>[http://www.sc3.uis.edu.co/ SC3]</li><li>[http://www.red-ricap.org/ RICAP]</li><li>[https://computing.llnl.gov/tutorials/parallel_comp/ Computing.llnl.gov]</li><li>[http://www.sc-camp.org/ SC-Camp]</li></ul></div> | <div class="col-md-14"><div class="panel panel-darker-white-border"><ul><li>Elements of Parallel Computing, Eric Aubanel (Chapman & Hall/CRC)</li><li>Essentials of Computer Architecture, D. Comer (CRC Press)</li><li>High Performance Embedded Computing: Applications in Cyber-Physical systems and Mobile Computing, M. Wolf (Morgan Kaufmann)</li><li>[http://research.microsoft.com/en-us/collaboration/fourthparadigm/ The Fourth Paradigm: Data-Intensive Scientific Discovery]</li><li>[http://www.mcs.anl.gov/~itf/dbpp/ Designing and Building Parallel Programs, by Ian Foster]</li><li>[http://www.cise.ufl.edu/research/ParallelPatterns/ Patterns for Parallel Programming, by Timothy G. Mattson, Beverly A. Sanders and Berna L. Massingill. Software Patterns Series, Addison Wesley Ed., USA. 2009]</li><li>Patterns for Parallel Software Design, Jorge Luis Ortega-Arjona (Wiley)</li><li>Structured Parallel Programming: Patterns for Efficient Computation, M. McCool, A. D. Robison and J. Reinders (Morgan Kaufmann)</li><li>The Art of Concurrency “A thread Monkey’s Guide to Writing Parallel Applications”, by Clay Breshears (Ed. O Reilly, 2009)</li><li>Parallel Scientific Computing in C++ and MPI « A Seamless Approach to Parallel Algorithms and Their Implementation », Karniadakis and Kirby II (Cambridge Press)</li><li>Parallel And Distributed Computation Numerical Methods, D. P. Bertsekas and J. N. Tsitsiklis (Prentice Hall)</li><li>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)</li><li>The Algorithms Design Manual, S. S. Skiena ( Springer)</li><li>Algorithms Sequential and Parallel « A Unified Approach » Miller and Boxer (Computing Engineering Series)</li><li>Parallel Algorithms, Cassanova, Legrand and Robert (Chapman and Hall/CRC)</li><li>Fundamentals of Multicore Software Development, Ed. Victor Pankratius, Ali-Reza Adl-Tabatabai and Walter Tichy (CRC Press)</li><li>Introduction to HPC with MPI for Data Science, Frank Nielsen (Springer)</li><li>Programming Massively Parallel Processors « A Hands-on Approach » , Kirk and Hwu (Nvidia/Morgan Kaufmann)</li><li>CUDA Application Design and Development, Rob Farber (Nvidia/Morgan Kaufmann)</li><li>Introduction to High Performance Computing for Scientists and Engineers, Hager and Wellein (Chapman and Hall/CRC)</li><li>Sourcebook of Parallel Computing , Dongarra, Foster, Fox, Groop, Kennedy, Torczon and White (Morgan Kaufmann)</li><li>CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, S. Cook (Morgan Kaufmann)</li><li>The CUDA Handbook: A Comprehensive Guide to GPU Programming, N. Wilt (Addison-Wesley)</li><li>CUDA by Example « An Introduction to General-Purpose GPU Programming » Sanders and Kandrot (Nvidia/Addison Wesley)</li><li>CUDA Fortran for Scientists and Engineers: Best Practices for Efficient CUDA Fortran Programming, G. Ruetsch and M. Fatica (Morgan Kaufmann/PGI/Nvidia)</li><li>HPC@Green IT: Green High Performance Computing Methods, R. Gruber and V. Keller (Springer)</li><li>OpenACC for Programmers: Concepts and Strategies, S. Chandraserkaran and G. Juckeland (Addison-Wesley)</li><li>OpenACC: Parallel Programming with OpenACC, Edited by Rob Farber (Morgan Kaufmann)</li><li>High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches, J. Reinders and J. Jeffers (Morgan Kaufmann)</li><li>[https://www.openmp.org/ OpenMP]</li><li>[https://www.openacc.org/ OpenACC]</li><li>[http://developer.nvidia.com/ NVIDIA]</li><li>[http://www.sc3.uis.edu.co/ SC3]</li><li>[http://www.red-ricap.org/ RICAP]</li><li>[https://computing.llnl.gov/tutorials/parallel_comp/ Computing.llnl.gov]</li><li>[http://www.sc-camp.org/ SC-Camp]</li></ul></div> | ||
− | === '''MATERIAL DEL CURSO Y | + | ==='''MATERIAL DEL CURSO Y PRESENTACIONES DE LAS SESIONES'''=== |
+ | |||
+ | #Introducción a las Arquitecturas Escalables | ||
+ | ##[[:File:ArchiParSca.pdf|Parte 1]] | ||
+ | ##[[:File:ArchiParSca2.pdf|Parte 2]] | ||
− | |||
− | |||
− | |||
*[[:File:Tutorial Linux.pdf|Introducción Linux]] | *[[:File:Tutorial Linux.pdf|Introducción Linux]] | ||
*[[:File:slurm.pdf|Simple Linux Utility for Resource Management]] | *[[:File:slurm.pdf|Simple Linux Utility for Resource Management]] | ||
*[[:File:MemCompOpenMP2.pdf|Shared Memory Programming with OpenMP]] (In Spanish/En Español) | *[[:File:MemCompOpenMP2.pdf|Shared Memory Programming with OpenMP]] (In Spanish/En Español) | ||
*[[:File:SharedMPI14c.pdf|Distributed Memory Exploitation with MPI: An Introduction]] | *[[:File:SharedMPI14c.pdf|Distributed Memory Exploitation with MPI: An Introduction]] | ||
+ | *Hybrid/Heterogeneous Computing | ||
+ | **[[:File:IntroGPUs.pdf|Introduction to GPU Computing]] | ||
+ | **[[:File:IntroCUDA.pdf|Introduction to CUDA]] | ||
+ | **[[:File:IntroOpenACC.pdf|Introduction to OpenACC]] | ||
</div> | </div> |
Latest revision as of 02:03, 19 March 2021
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 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.
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.