Domingo Giménez Cánovas

DOCENCIA 2014/2015

Algoritmos y Programación Paralela

quinto curso de Ingeniería Informática

Metodología de la Programación Paralela

cuarto curso del Grado en Ingeniería Informática


3 créditos teóricos y 3 prácticos
Primer cuatrimestre

Las clases son en el aula B.03 del aulario Norte

Clases los jueves de 15:30 a 17:30, primer día el 18 de septiembre.

Tres de las sesiones que aparecen en la planificación no se impartirán (las de los viernes 26 de septiembre y 24 de octubre y la del 30 de octubre), por lo que las seis horas correspondientes a esas sesiones se impartirán en algunas de las otras sesiones teóricas, alargando estas entre media y una hora.

El horario de prácticas es los jueves de 17:50 a 19:30, en el laboratorio 2.1. Debido a que se usarán equipos del laboratorio de computación científica y posiblemente de centros externos, y a que algunas de las prácticas no serán guiadas, se realizarán prácticas presenciales sólo en algunas de las sesiones, que se anunciará en las clases de teoría y en esta página.

Tutorías lunes, miércoles y jueves de 12 a 14 (mejor quedar antes por correo, para esas horas u otras)


Sesiones y transparencias. Básicamente se seguirá el libro: Francisco Almeida, Domingo Giménez, José Miguel Mantas, Antonio M. Vidal: Introducción a la Programación Paralela, Paraninfo Cengage Learning, 2008 y los programas ejemplo que lo acompañan.

Planificación 2014-2015:


Información diversa


Temario Teórico

1. Introducción a la programación paralela (4 horas): Necesidad de la programación paralela, ventajas e inconvenientes, Modelos de computadores paralelos

2. Modelos de programación paralela (8 horas): Modelos de programación; Programación en memoria compartida, OpenMP; Programación por paso de mensajes, MPI, programación de GPU

3. Análisis de algoritmos paralelos (4 horas): Tiempo de ejecución, speed-up, eficiencia y coste; Estudio de escalabilidad; Estudio experimental

4. Metodología de la programación paralela y diseño de algoritmos paralelos (12 horas): Descomposición, Asignación, Balanceo, Solapamiento, Diseño modular, Paralelismo / Particionado de Datos; Esquemas en árbol y grafo; Algoritmos relajados; Computación pipeline; Paralelismo síncrono; Maestro-esclavo, granja de procesos y trabajadores replicados

Trabajos y prácticas

  1. Prácticas presenciales de trabajo con OpenMP y MPI.

  2. Desarrollo de programas básicos de programación en OpenMP y MPI (opcionalmente GPU).

  3. Exposiciones en clase sobre entornos paralelos y paralelización de algoritmos.

  4. Implementación en OpenMP y MPI y estudio teórico y experimental de uno de los algoritmos paralelos estudiados.

Bibliografía básica:

Francisco Almeida, Domingo Giménez, José Miguel Mantas, Antonio M. Vidal: Introducción a la Programación Paralela, Paraninfo Cengage Learning, 2008

Complementaria

 

Evaluación

La asignatura se evaluará sobre los trabajos y prácticas realizadas por los alumnos.

El peso de las distintas partes es:

Participación “activa” en clase: 10%

Prácticas presenciales con trabajo básico OpenMP y MPI (opcionalmente GPU): 10%

Exposición de entorno de programación paralela: 15%

Exposición de paralelismo en el problema, con análisis de diseño y costes y mejoras a conseguir con el paralelismo: 15%

Práctica de programación paralela (en OpenMP, MPI e híbrida, con estudio teórico y experimental y entrega de documentación): 50%