Introducción a la programación paralela
Introducción a la Computación Paralela - Código 2661
Carlos Jaime Barrios Hernandez, PhD. - (c b a r r i o s (@) u i s . e d u . c o )
Auxiliatura Técnica. Equipo SC3UIS
PRESENTACION
La computación paralela más que una tendencia de programación es una exigencia industrial y real. Los sistemas paralelos se encuentran listos para ser explotados, desde dispositivos portátiles y embebidos hasta supercomputadoras.
Este curso introductorio dirigido a estudiantes de ingeniería de sistemas, es un acercamiento a conceptos básicos y estrategias de programación paralela. Trata desde sistemas y arquitecturas escalables, hasta ambientes de programación paralela, haciendo un fuerte énfasis en el análisis y diseño de algoritmos paralelos concurrentes y en la evaluación de arquitecturas para soluciones científicas e industriales.
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