Difference between revisions of "Introducción a la programación paralela"
Line 2: | Line 2: | ||
__NOTOC__<div class="column clearfix"> | __NOTOC__<div class="column clearfix"> | ||
<div class="col-md-14"><div class="panel-body"> | <div class="col-md-14"><div class="panel-body"> | ||
− | <p>'''Introducción a la Programación Paralela - Código 28661'''</p><p></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óric:. Equipo SC3UIS y CAGE</p>[[File:NoThanksButWereBusy.png|border|center|630x630px]]</div>'''PRESENTACION DEL CURSO''' | + | <p>'''Introducción a la Programación Paralela - Código 28661'''</p><p></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óric:. Equipo SC3UIS y CAGE</p>[[File:NoThanksButWereBusy.png|border|center|630x630px]]</div></div></div> |
− | < | + | |
+ | === '''PRESENTACION DEL CURSO''' === | ||
+ | <div class="column clearfix"> | ||
+ | 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. | 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. | ||
Line 9: | Line 12: | ||
</div> | </div> | ||
+ | === '''Contenido''' === | ||
<div class="col-md-14"> | <div class="col-md-14"> | ||
− | + | # Introducción a la Computación Paralela | |
+ | #* Pensamiento Paralelo y Pervasibidad | ||
+ | #* | ||
+ | # Arquitecturas Paralelas y Sistemas Escalables | ||
+ | #* Modelos de Máquinas Paralelas | ||
+ | #* Paralelismo y Comunicación | ||
+ | #* Caracterización de Flynn | ||
+ | #* Multinucleos y Multiprocesamiento | ||
+ | #* Arquitecturas para el Procesamiento Masivamente Paralelo (Manycores) | ||
+ | #* Modelos de Memoria | ||
+ | #* Sistemas Distribuidos de Gran Escala | ||
+ | # Algoritmos Concurrentes y Paralelos | ||
+ | #* Modelos de Computación (RAM, PRAM, BSP, LogP y otros) | ||
+ | #* | ||
+ | # Paradigmas y Modelos de Programación Paralela | ||
+ | # Optimización | ||
+ | # Debugging y Profling | ||
+ | # 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 | ||
+ | # Lineamientos para el Desarrollo de Aplicaciones Paralelas | ||
+ | #* Patrones para el Flujo de Control y de Ejecucuón | ||
+ | #* Patrones para la Administración de Datos | ||
+ | # Direcciones y Tendencias en Programación Paralela | ||
+ | #* Explotració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 class="panel panel-darker-white-border"><div class="panel-body"><p>Las sesiones se realizan en el CENTIC.</p> | ||
</div> | </div> | ||
</div> | </div> |
Revision as of 15:27, 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
- Arquitecturas Paralelas y Sistemas Escalables
- Modelos de Máquinas Paralelas
- Paralelismo y Comunicación
- Caracterización de Flynn
- Multinucleos y Multiprocesamiento
- Arquitecturas para el Procesamiento Masivamente Paralelo (Manycores)
- Modelos de Memoria
- Sistemas Distribuidos de Gran Escala
- Algoritmos Concurrentes y Paralelos
- Modelos de Computación (RAM, PRAM, BSP, LogP y otros)
- Paradigmas y Modelos de Programación Paralela
- Optimización
- Debugging y Profling
- 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
- Lineamientos para el Desarrollo de Aplicaciones Paralelas
- Patrones para el Flujo de Control y de Ejecucuón
- Patrones para la Administración de Datos
- Direcciones y Tendencias en Programación Paralela
- Explotración de Unidades Tensor y Aplicaciones Emergentes
- Extracción de Paralelismo en Códigos Secuenciales
- Explotación de Memoria
- Paradigmas de Programación Emergentes
Las sesiones se realizan en el CENTIC.
Contenido
- Introducción a la Programación Paralela
- Introducción a las Arquitecturas y Sistemas Escalables
- Algoritmos Concurrentes y Paralelos
- Modelos de Programación Paralela (Introducción a la programación de Memoria Distribuida, Introducción a la programación de Memoria
- Compartida, Introducción al a programación de maquinas masivamente paralelas y sistemas híbridos)
- Lineamientos para el desarrollo de Aplicaciones Paralelas
- Evaluación de Desempeño
- Direcciones y Temas Candentes en Programación Paralela
ASPECTOS METODOLOGICOS
- Sesiones Teórico-Prácticas
- Lecturas y Discusiones de Artículos (La mayoría en Inglés)
- Observación y Análisis de Aplicaciones y Propuestas
MATERIAL DEL CURSO 2012
- Sesión
- Introduction to Parallel Programming (And Parallel Systems)
- Programación Paralela y Programación Científica desde la E-Ciencia y El Cómputo Avanzado
- Sesión
- Sesión
- Sesión
- Sesión
- Sesión
- Sesión
- Sesión
Lecturas sugeridas
De The Fourth Paradigm: Data Intensive Scientific Discovery
MATERIAL DEL CURSO 2013 - 2014
- Introducción
- Arquitecturas Paralelas
- Concurrencia y Paralelismo
- Modelo de Programacion de Memoria Compartida - OpenMP
- Modelo de Programación de Memoria Distribuída - OpenMPI
EVALUACIONES
(30%) Examen de Conocimientos Único
Este examen de conocimientos es un analisis de caso, se realizará en el tiempo de la clase de manera individual. Incluye un punto de los trabajos presentados por sus compañeros.
(70%) Trabajo de Aplicación
El trabajo de aplicación, es un trabajo que se realizará durante todo el semestre y que implica dos entregas previas, un seguimiento del trabajo realizado y una entrega final, observando unos parametros de evaluación que son:
Criterios:
- Calidad del Análisis y Diseño de la Solución
- Eficiencia y Rendimiento de la Solución Propuesta
- Calidad del Proyecto (Estructura, Documentación, Coherencia)
- Evaluación de Rendimiento (Identificación de Limitaciones)
- Organización y Presentación de los informes previos y de la presentación final.
Los pesos de cada una de las entregas son:
- Informe Inicial (20/70)
- Informe de Avance (20/70)
- Informe y Presentación Final (30/70)
Los trabajos se realizarán de manera individual y las entregas y seguimiento se hará de la siguiente manera:
- Entrega de los temas
- Entrega del Primer Informe que implica el análisis y diseño de la solución
- Ese informe deberá realizarse de manera escrita a manera de resumen extendido en un documento en pdf, de máximo 6 paginas en columna sencilla, tamaño de la letra 12ppt
- Discusión y presentación en el tablero en una sesión privada
- Informe de Avance
- Este informe de avance deberá exponerse unicamente, usando máximo 5 diapositivas y 10 minutos de presentación al profesor. Deberá estar planteado el algoritmo final de la solución, seudocodigo, tipo de lenguaje a utilizar, estrategia de implementación y aspectos tecnicos esperados
- Informe y Presentación Final
- Se presentará en un documento escrito, tipo artículo, en español, de máximo 10 páginas en un documento pdf, tipo de fuente Arial y tamaño de letra 12ppt, en columna sencilla. El documento se enviará al correo que el profesor indique el dia
- Se realizará una presentación de 10 minutos incluyendo un demo del prototipo o solución realizada, tanto el codigo fuente como las instrucciones de compilación y ejecución deberan enviarse al profesor previamente
BIBLIOGRAFÍA Y FUENTES DE INFORMACION
- 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
- 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)
- Algorithms Sequential and Parallel « A Unified Approach » Miller and Boxer (Computing Engineering Series)
- Parallel Algorithms, Cassanova, Legrand and Robert (Chapman and Hall/CRC)
- Programming Massively Parallel Processors « A Hands-on Approach » , Kirk and Hwu (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)
- NVIDIA
- SC3
- Computing.llnl.gov
- SC-Camp