Programación Paralela

Información Básica

  • Créditos: 3
  • Horas de trabajo acompañado: 5 / semana (3 horas clase, 2 horas taller)
  • Horas de trabajo independiente: 4 / semana
  • Pre-requisitos: Sistemas Operativos, Comunicación de Datos, Análisis y Diseño de Algoritmos
  • Tipo de curso: Núcleo de Formación Fundamental.

Descripción del Curso

Objetivos

Al finalizar el curso los participantes podrán, identificar diferentes aspectos de la programación paralela, analizár un problema y descomponerlo (de ser posible) para generar una solución paralela al problema planteado. Podrá comparar diferentes formas de programar en paralelo y podra determinar cuales soluciones paralelas ofrece las mejores ventajas en cuanto a desempeño. Podrá tomar como base alguno de los algoritmos paralelos existentes para desarrollar nuevos algoritmos paralelos.

Se desarrollan competencias en

Contenido

Primera parte: Programación paralela

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
1 0.75 Introducción a la programación paralela. Familiaridad [1,5]
1 0.75 Necesidad por comunicación y coordinación/sincronización. Familiaridad [1,5]
2 0.75 Independencia y Particionamiento. Familiaridad [1]
2 0.75 Conocimientos básicos en los conceptos de descomposición paralela. Familiaridad [2,1]
3 1.0 0.5 Descomposición basada en tareas Uso [2]
3 0.5 1.5 – Implementación usando hilos. Uso [2]
4 1.5 0.5 Descomposición basada en datos Uso [2]
5 1.5 1.0 – Implementación usando SIMD y MapReduce Uso [2,3]
6 1.5 0.5 Actores y procesos reactivos (ej. manejadores de solicitudes) Evaluación [1,5]
7 1.5 Memoria compartida y memoria distribuida Evaluación [1,4]
8 1.0 1.0 Control de concurrencia. Evaluación [4]
8 0.5 1.0 Consistencia y su rol en las garantias en los lenguajes de programas para realizar programas libres de data-races. Evaluación [4,1]
9 0.5 0.5 – Mensajes punto-a-punto vs. multicast. Uso [2]
9 0.5 1.0 – Estilo de envio y recpción de mensajes bloqueantes y no-bloqueantes. Uso [2]
9 0.5 0.5 – Cola de mensajes. Uso [2]
10 0.5 Atomicidad Evaluación [4,2]
10 0.5 – Especificación de requerimientos y pruebas de atomicidad y seguridad. Evaluación [5]
10 0.5 – Granularidad de accesos y modificaciones atomicas, y el uso de secciones críticas o transacciones para modelarlos. Evaluación [1,4]
10,11 3.5 2.0 – Exclusión mútua usando cerrojos, semaforos, monitores o construcciones relacionadas. Uso [2,5]
12 0.75 – Composición Evaluación [3,5]
12 0.75 1.0 – Composición de acciones atómicas con granularidad gruesa usando sincronozación. Evaluación [2]
13 1.0 – Transacciones (aproximaciones optimisticas y conservativas). Familiaridad [5]
13 0.5 1.0 Administración de las interacciones de transacciones con almacenamiento (especialmente bufering). Familiaridad [4]

Total de Horas: 33.5.

Segunda parte: Algoritmos paralelos

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
14 0.5 Camino crítico, trabajo y expansión y su relación con la ley de Amdahl. Familiaridad [1,4]
14 1.0 0.5 Speed-up y escalabilidad (Modelos de computación: PRAM, BSP, etc.). Evaluación [1,3]
15 1.0 1.5 Paralelismo natural (Algoritmos embarasosamente paralelos). Evaluación [1,3]
15-16 2.0 2.0 Patrones de algoritmos paralelos (dividir y conquistar, map y reduce, maestro-trabajador, otros). Uso [3]
17-18 3.0 2.0 – Algoritmos específicos (ej. Merge-Sort paralelo). Uso [3]
19-20 3.0 2.0 Algoritmos paralelos sobre grafos (ej. camino mas corto paralelo, spanning-tree paralelo). Uso [3]
21-22 3.0 2.0 Computación paralela de matrices. Uso [1,3]
23 1.5 1.0 Algoritmos productor-consumidor y pipelined. Uso [2,3]
24 1.5 Ejemplos de algoritmos no escalables. Familiaridad [3]
25 1.5 1.0 Fallas y recuperación. Evaluación [1,5]

Total de Horas: 30.

Uso de material en exámenes

Asistencia

Bibliografía

  1. Introduction to Parallel Computing, Ananth Grama, George Karypis, Vipin Kumar and Anshul Gupta, Addison Wesley, 2 ed. 2003.
  2. Parallel Programming in C with MPI and OpenMP, Michael Quinn, McGraw-Hill, 2003.
  3. An Introduction to Parallel Algorithms, Joseph JaJa, Addison-Wesley Publishing Company, 1992.
  4. Parallel Computer Architecture, David Culler, Jaswinder P. Singh, Anoop Gupta, Morgan Kaufmann Publishers, 1999.

Instalaciones

Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.

Material de este semestre