Computación Paralela

Asignatura

Ficha Técnica
Modalidad Electiva
Área Especialización
U.C: 3
Código 2120360002180

Justificación

La computación paralela está penetrando en todos los niveles de la computación, desde computadoras masivamente paralelas usados en las ciencias de larga escala computacional, hasta servidores múltiples procesadores que soportan procesamiento de transacciones. Los principales problemas originados en cada uno de las áreas básicas de la informática (por ejemplo, algoritmos, sistemas, lenguajes, arquitecturas, etc.) se vuelven aún más complejos dentro del contexto de computación paralela. En respuesta a esto, este curso expone a los estudiantes a aplicar los conceptos y herramientas que ellos han estudiado en los cursos de la informática anteriores dentro de un nuevo contexto. Este curso también presentará a los estudiantes a un tema de importancia fundamental a una amplia variedad de áreas de aplicación.

Objetivos del Curso

Dominar los aspectos teóricos, metodológicos y tecnológicos relacionados con el desarrollo de sistemas paralelos. Estar en capacidad de diseñar e implementar sistemas de computo paralelo orientados a la solución de problemas complejos en ingeniería.

  • Explicar los conceptos básicos de Computación paralela.
  • Resolver problemas de gran escala en al menos una plataforma de computación paralela.
  • Medir y evaluar el desempeño de aplicaciones paralelas.

Prerequisitos

Haber aprobado los cursos Matemáticas para la Computación, Técnicas de Programación, Estructura de Datos y Algoritmos, Redes de Computadoras y Sistemas Operativos.

Contenido Programático

Unidad 1: Introducción.

  • Computación paralela vs. distribuida.
  • Motivación para la computación paralela.
  • Términos relacionados.
  • Arquitecturas generales de computadoras paralelas.
  • Desempeño en computación paralela.

Unidad 2: Técnicas de programación distribuida.

  • Paso de mensajes.
  • Particionamiento.
  • Pipelined.
  • Computación sincronizada.
  • Memoria compartida.

Unidad 3: Paso de mensajes

  • CPVM.
  • MPI.

Unidad 4: Memoria Compartida

  • Herramientas para programar con memoria compartida.
  • Compartir memoria.
  • Programas de ejemplo.

Unidad 5: Aplicaciones ejemplos

  • Ordenación.
  • Grafos.
  • Operación con matrices.
  • Optimización.

Unidad 6: Interfaces gráficas de usuario

  • Conceptos básicos.
  • Introducción a la programación concurrente.
  • Programación manejada por eventos.
  • Patrón de diseño publicar/suscribir.
  • Componentes.

Metodología de la Enseñanza

Entre las estrategias instruccionales empleadas se incluyen la exposición por parte del docente del contenido teórico y ejemplos de aplicación, y se asignarán trabajos prácticos.

Intensidad Horaria

La intensidad horaria es de 3 horas/semana durante 16 semanas (48 horas/semestre).

Bibliografía

  • B. Wilkinson, M. Allen. Parallel Programming: Techniques and Applications Using Networked Workstations. Prentice Hall, 1999.
  • I. Foster. Designing and Building Parallel Programs : Concepts and Tools for Parallel Software Engineering. Addison-Wesley, 1995.
  • P. Pacheco. Parallel Programming With MPI. Morgan Kaufmann, 1996.
  • R. Buyya. High Performance Cluster Computing: Architectures and Systems, Vol. 1. Prentice Hall, 1999.
  • R. Buyya. High Performance Cluster Computing: Programming and Applications, Vol. 2. Prentice Hall, 1999.
  • G. Almassi and A. Gottlieb, Highly Parallel Computing, 2nd Ed. (Cummings: 1994).
  • A. Tanenbaum, Computer Networks Prentice Hall.
  • The Java Tutorial. A practical guide for programmers. http://java.sun.com
  • B. Stroustrup. C++ Programming Language. Third Edition. Addison Wesley. 1999.
  • E. Gamma, R. Helm, R. Johnson and J. Vlissides. Design Patterns. Elements of Reusable Object-Oriented Software. Addison Wesley. 1995.
  • D.R. Butenhof. Programming with Posix Threads. Addison-Wesley. 1997.