Computación Paralela

            Computación Paralela

Objetivo:

El propósito de este curso es discutir técnicas y aplicaciones de la programación paralela. En este curso nos concentraremos en el uso de varias computadoras que se comunican entre ellas mediante el envío de mensajes.

Descripción:

La programación paralela involucra muchos aspectos que no se presenta en la programación convencional (secuencial). El diseño de un programa paralelo tiene que considerar entre otras cosas, el tipo de arquitectura sobre la cual se va a ejecutar el programa, las necesidades de tiempo y espacio que requiere la aplicación, el modelo de programación paralelo adecuado para implantar la aplicación y la forma de coordinar y comunicar a diferentes procesadores para que resuelvan un problema común. Existen varias herramientas disponibles para programación paralela. En el curso utilizaremos PVM y MPI, dado su alta disponibilidad para computadoras diferentes y su aceptación en la comunidad académica.

Contenido:

  1. Computación Paralela
    • ¿Por qué computación paralela?
    • Tipos de computadoras paralelas
    • Fundamentos del diseño de computadoras paralelas
  2. Programas paralelos
    • Aplicaciones como casos de estudio
    • El proceso de paralelización
    • Un caso de estudio
  3. Programación paralela para memoria compartida
    • Procesos
    • Threads
    • Ejemplos
  4. Programación paralela para memoria distribuida
    • Principios básicos del intercambio de mensajes
    • Arquitecturas de computadoras para memoria distribuida
    • Arquitectura de la IBM-SP2
    • Redes de estaciones de trabajo
    • Herramientas de softwar: PVM y MPI
    • Ejemplos
  5. Lenguajes de Programación Paralela
    • Fortan 90
    • High Performance Fortran
    • C*
    • OCCAM
    • Linda
  6. Programación paralela para mejorar el rendimiento
    • Descomposición
    • Mapeo
    • Calendarización
    • Evaluación del rendimiento
    • Medidas de eficiencia
  7. Estrategias generales de programación paralela
    • Particionamiento
    • Divide y vencerás
    • Aplicaciones tipo pipeline
    • Aplicaciones de tipo síncrono
    • Balance de carga
  8. Modelos Avanzados
    • Principios de programación paralela: constructores básicos
    • Modelos de programación PRAM
    • Técnicas básicas de diseño de algoritmos paralelos

Bibligrafía:

  • Culler, David, Singh, J.P.\ and Gupta, A.\ Parallel Computer Architecture: A Hardware/Software  Approach. Morgan Kauffman Publishers,1998. ISBN 1-55860-343-3.
  • Foster, Ian T. Designing and Building Parallel Programs. Addisson-Wesley, 1995. ISBN 0-201-57594-9.
  • Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta. An Introduction to Parallel Computing: Design and Analysis of Algorithms (2nd Ed.). Addisson-Wesley 2003. ISBN 0201648652.
  • Pacheco, Peter. Parallel Programming With MPI. Morgan Kaufmann. ISBN 1558603395.
  • Quinn, Michael J. Parallel Programming in C with MPI and OpenMP. McGraw-Hill. 2003. ISBN 0072822562.
  • Wilkinson, Barry and Allen, Michael. Parallel Programming: Techniques and Aplications Using Networked Workstations and Parallel Computers (2nd Ed.). Prentice-Hall Inc. 2004, ISBN 0131405632.