Difference between revisions of "Introducción a la programación paralela"
Line 77: | Line 77: | ||
#** Selección de Mecanismos de Implementación | #** Selección de Mecanismos de Implementación | ||
# Direcciones y Tendencias en Programación Paralela | # Direcciones y Tendencias en Programación Paralela | ||
− | #* Eficiencia Computacional Hoy (Consumo Energético/Procesamiento) | + | #* HPC@Green: Eficiencia Computacional Hoy (Consumo Energético/Procesamiento) |
#* Explotación de Unidades Tensor y Aplicaciones Emergentes | #* Explotación de Unidades Tensor y Aplicaciones Emergentes | ||
#* Extracción de Paralelismo en Códigos Secuenciales | #* Extracción de Paralelismo en Códigos Secuenciales | ||
Line 108: | Line 108: | ||
<li>[http://www.mcs.anl.gov/~itf/dbpp/ Designing and Building Parallel Programs, by Ian Foster]</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>[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>The Art of Concurrency “A thread Monkey’s Guide to Writing Parallel Applications”, by Clay Breshears (Ed. O Reilly, 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 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>Parallel And Distributed Computation Numerical Methods, D. P. Bertsekas and J. N. Tsitsiklis (Prentice Hall) | ||
Line 128: | Line 132: | ||
<li>Sourcebook of Parallel Computing , Dongarra, Foster, Fox, Groop, Kennedy, Torczon and White (Morgan Kaufmann) </li> | <li>Sourcebook of Parallel Computing , Dongarra, Foster, Fox, Groop, Kennedy, Torczon and White (Morgan Kaufmann) </li> | ||
<li>CUDA by Example « An Introduction to General-Purpose GPU Programming » Sanders and Kandrot (Nvidia/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>[http://developer.nvidia.com/ NVIDIA]</li> | <li>[http://developer.nvidia.com/ NVIDIA]</li> | ||
<li>[http://www.sc3.uis.edu.co/ SC3]</li> | <li>[http://www.sc3.uis.edu.co/ SC3]</li> |
Revision as of 20:43, 11 August 2018
Volver a Cursos
Introducción a la Programación Paralela - Código 28661
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óric:. Equipo SC3UIS y CAGE
PRESENTACION DEL CURSO
La ruptura tecnológica hace que la computación sea quizás el área del conocimiento más dinámico que existe y que no solo promueve tendencias sino también cambios sociales, desde que la información y su tratamiento no solo es una necesidad sino una exigencia. La computación paralela, si bien no es nada nuevo, como parte de esa "exigencia" permite la explotación de sistemas que desde hace más de treinta años están disponibles, pero que en algunos medios se ve aún como algo exótico, ignorando que gracias a esas posibilidades, desde poder escuchar música, hablar y tomar fotos de manera simultánea en un dispositivo móvil, pasando por pronosticar el clima o mercados, almacenar datos en la nube hasta la realidad de implementar soluciones y algoritmos de inteligencia artificial hoy, existe porque hay múltiples unidades de procesamiento que pueden ser programadas de manera paralela y concurrente.
El curso, que es introductorio, esta dirigido a estudiantes de ingeniería de sistemas y ciencias de la computación, cuyo principal objetivo es ofrecer fundamentos para la explotación de la concurrencia, la explotación de paradigmas de programación dirigidos al paralelismo, sin ignorar algunos conceptos arquitecturales necesarios para entender que soporta ese procesamiento en paralelo. A partir de este curso, los participantes manejaran la terminología necesaria igualmente y tendrán la base para a partir de allí seguir cursos avanzados y seminarios especializados.
Contenido
- Introducción a la Computación Paralela
- Pensamiento Paralelo y Pervasibidad
- Elementos de Paralelismo
- Evolución de la Computación Paralela
- Computación de Alto Rendimiento (HPC)
- Arquitecturas Paralelas y Sistemas Escalables
- Modelos de Máquinas Paralelas
- Modelos de Ejecución Paralela
- 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
- 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)
- 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
- 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: Presentación: Martes 4 de Diciembre de 2018 de 7:00 a 9:00
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 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)
- NVIDIA
- SC3
- Computing.llnl.gov
- SC-Camp