Difference between revisions of "Computación de alto rendimiento"
From Supercomputación y Cálculo Científico UIS
Line 1: | Line 1: | ||
<p>__NOTOC__</p> | <p>__NOTOC__</p> | ||
<div class="thumbnail img-thumbnail">http://wiki.sc3.uis.edu.co/images/a/a8/Logo_sc33.png</div> | <div class="thumbnail img-thumbnail">http://wiki.sc3.uis.edu.co/images/a/a8/Logo_sc33.png</div> | ||
− | <p> </p> | + | <p> </p>Volver a [[Cursos]]<div class="column clearfix"><div class="col-md-14"><div class="panel-body"><p>'''Computación de Alto Rendimiento - Código 24433'''</p><p><b>[https://sites.google.com/site/carlosjaimebh/ Carlos Jaime Barrios Hernandez, PhD.]</b> - (c b a r r i o s (@) u i s . e d u . c o )</p><p>Asistencia Técnica-Teórica:. Equipo SC3UIS </p></div></div></div> |
− | <div class=" | + | ==='''PRESENTACION DEL CURSO'''=== |
− | <p> | ||
<div class="column clearfix"> | <div class="column clearfix"> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
</div> | </div> | ||
+ | ==='''Contenido'''=== | ||
<div class="col-md-14"> | <div class="col-md-14"> | ||
− | + | #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 | |
− | + | #*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 | |
− | + | #*HPC@Green: Eficiencia Computacional Hoy (Consumo Energético/Procesamiento) | |
− | + | #*Explotación de Unidades Tensor y Aplicaciones Emergentes | |
− | + | #*Extracción de Paralelismo en Códigos Secuenciales | |
− | + | #*Explotación de Memoria | |
− | + | #*Paradigmas de Programación Emergentes | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</div> | </div> | ||
+ | ==='''Evaluación'''=== | ||
+ | ====='''Evaluaciones programadas para el 2do Semestre de 2018'''===== | ||
+ | *'''Evaluación Inicial:''' 20% Evaluación Escrita de Fundamentos (Individual), Unidades 1 a la 3. : Martes 4 de Diciembre de 2018 de 7:00 a 9:00 | ||
+ | *'''Evaluación Dos''': 30% Participación en el [http://www.ccarla.org/ #CARLA2018] (Domingo 23 al Viernes 28 de Septiembre de 2018) de la siguiente manera: | ||
+ | **Participación en al menos un tutorial | ||
+ | **Participación en al menos uno de los workshops | ||
+ | **Participación en el cuerpo central de la conferencia | ||
+ | DEBE PRESENTAR EL CERTIFICADO DE PARTICIPACIÓN DE CADA UNA DE LAS ACTIVIDADES el martes 2 de octubre. Los matriculados en el curso están exonerados del pago de registro e inscripción. | ||
+ | *'''Evaluación Tres''': 20% Taller de Evaluación de Programación Paralela (Individual): Martes 23 de Octubre de 2018 de 7:00 a 9:00 | ||
+ | *'''Evaluación Final:''' 30% Proyecto de Aplicación Final (Por Parejas Asignadas por el Profesor): Presentación: Martes 4 de Diciembre de 2018 de 7:00 a 9:00 | ||
+ | **Se asignará un problema a desarrollar y tratar por parejas que deberá presentarse y se tendrán en cuenta los siguientes elementos: | ||
+ | ***Análisis y Diseño del Algoritmo de Solución | ||
+ | ***Calidad, Escalabilidad y Rendimiento de la Implementación (Selección de Paradigma de Programación) | ||
+ | ***Análisis de Rendimiento y Optimización | ||
+ | **Previa a la presentación de resultados deberá enviarse un reporte tipo articulo de no mayor de 8 páginas a doble columna y entregar los códigos fuente y las condiciones de ejecución de la aplicació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> | ||
+ | ==='''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. |
Revision as of 12:03, 16 August 2018
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
PRESENTACION DEL CURSO
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
- HPC@Green: Eficiencia Computacional Hoy (Consumo Energético/Procesamiento)
- Explotación de Unidades Tensor y Aplicaciones Emergentes
- Extracción de Paralelismo en Códigos Secuenciales
- Explotación de Memoria
- Paradigmas de Programación Emergentes
Evaluación
Evaluaciones programadas para el 2do Semestre de 2018
- Evaluación Inicial: 20% Evaluación Escrita de Fundamentos (Individual), Unidades 1 a la 3. : Martes 4 de Diciembre de 2018 de 7:00 a 9:00
- Evaluación Dos: 30% Participación en el #CARLA2018 (Domingo 23 al Viernes 28 de Septiembre de 2018) de la siguiente manera:
- Participación en al menos un tutorial
- Participación en al menos uno de los workshops
- Participación en el cuerpo central de la conferencia
DEBE PRESENTAR EL CERTIFICADO DE PARTICIPACIÓN DE CADA UNA DE LAS ACTIVIDADES el martes 2 de octubre. Los matriculados en el curso están exonerados del pago de registro e inscripción.
- Evaluación Tres: 20% Taller de Evaluación de Programación Paralela (Individual): Martes 23 de Octubre de 2018 de 7:00 a 9:00
- Evaluación Final: 30% Proyecto de Aplicación Final (Por Parejas Asignadas por el Profesor): Presentación: Martes 4 de Diciembre de 2018 de 7:00 a 9:00
- Se asignará un problema a desarrollar y tratar por parejas que deberá presentarse y se tendrán en cuenta los siguientes elementos:
- Análisis y Diseño del Algoritmo de Solución
- Calidad, Escalabilidad y Rendimiento de la Implementación (Selección de Paradigma de Programación)
- Análisis de Rendimiento y Optimización
- Previa a la presentación de resultados deberá enviarse un reporte tipo articulo de no mayor de 8 páginas a doble columna y entregar los códigos fuente y las condiciones de ejecución de la aplicación.
- Se asignará un problema a desarrollar y tratar por parejas que deberá presentarse y se tendrán en cuenta los siguientes elementos:
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
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.