Logo UAB
2020/2021

Programación Paralela 

Código: 43481 Créditos ECTS: 6
Titulación Tipo Curso Semestre
4313136 Modelización para la Ciencia y la Ingeniería / Modelling for Science and Engineering OB 0 1
La metodología docente y la evaluación propuestas en la guía pueden experimentar alguna modificación en función de las restricciones a la presencialidad que impongan las autoridades sanitarias.

Contacto

Nombre:
Tomás Manuel Margalef Burrull
Correo electrónico:
Tomas.Margalef@uab.cat

Uso de idiomas

Lengua vehicular mayoritaria:
inglés (eng)

Equipo docente

Juan Carlos Moure Lopez
Anna Bàrbara Sikora

Prerequisitos

No hay prerequisitos

Objetivos y contextualización

El objetivo del módulo es:

  • Desarrollar programas de c
  • Identificar las dificultades relacionadas con la programación paralela.
  • Aplicar una metodología adecuada para el desarrollo de aplicaciones paralelas.
  • comprender las diferencias de los enfoques de programación en paralelo: memoria compartida, paso de mensajes
  • Determine el enfoque de programación paralela más conveniente para desarrollar una aplicación particular
  • Desarrollar aplicaciones paralelas.
  • Evalúe el rendimiento de la aplicación paralela y recopile las medidas necesarias para ajustar la aplicación a fin de mejorar su rendimiento

Al final de este módulo, los estudiantes deben tener conocimientos, métodos y habilidades técnicas suficientes para desarrollar aplicaciones paralelas utilizando un modelo de programación adecuado y evaluar el rendimiento de la aplicación.

Competencias

  • Analizar y evaluar arquitecturas de computadores paralelos y distribuidos, así como desarrollar y optimizar software avanzado para las mismas
  • Analizar, sintetizar, organizar y planificar proyectos de su campo de estudio.
  • Aplicar la metodología de investigación, técnicas y recursos específicos para investigar en un determinado ámbito de especialización.
  • Asegurar, gestionar, auditar y certificar la calidad de los desarrollos, procesos, sistemas y productos informáticos avanzados.
  • Innovar en la búsqueda de nuevos espacios / ámbitos en su campo de trabajo.
  • Participar en proyectos de investigación y equipos de trabajo en el ámbito de la ingeniería de la información y el cómputo de altas prestaciones.
  • Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en el desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación.
  • Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.

Resultados de aprendizaje

  1. Analizar, sintetizar, organizar y planificar proyectos de su campo de estudio.
  2. Aplicar la metodología de investigación, técnicas y recursos específicos para investigar en un determinado ámbito de especialización.
  3. Desarrollar la solución paralela a un problema computacional eligiendo las herramientas más adecuadas
  4. Diseñar la solución paralela a un problema computacional tomando en cuenta las características del hardware disponible
  5. Identificar las fuentes de paralelismo en un problema computacional
  6. Innovar en la búsqueda de nuevos espacios / ámbitos en su campo de trabajo.
  7. Interpretar la información dada por las herramientas de análisis de rendimiento y transformarla en acciones que mejoren la aplicación paralela
  8. Planificar y desarrollar proyectos de investigación con contenidos relacionados con la programación paralela
  9. Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en el desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación.
  10. Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.
  11. Utilizar las herramientas adecuadas para analizar el rendimiento de una aplicación.

Contenido

  1. Introducción al curso
  2. Programación en c
  3. Programación OpenMP
  4. Programación MPI
  5. Análisis de rendimiento
  6. Programación GPU
  7. Examen final

Metodología

Clases magistrales y prácticas de laboratorio

Actividades

Título Horas ECTS Resultados de aprendizaje
Tipo: Dirigidas      
Asistencia a clase 14 0,56 2, 3, 4, 5, 8, 9
Prácticas de laboratorio 24 0,96 3, 4, 7, 8
Tipo: Autónomas      
Diseño desarrollo de ejercicios prácticos 52 2,08 1, 3, 4, 5, 7, 8, 10, 9, 11
Estudio 36 1,44 1, 2, 3, 4, 5, 6, 7, 8, 10, 9, 11

Evaluación

Hay 4 notas correspondientes a Programación en C, Programación en OpenMP, Programación en MPI y Programación con GPUs. También hay un examen final.

Actividades de evaluación

Título Peso Horas ECTS Resultados de aprendizaje
Ejercicios prácticos con GPUs 15 4 0,16 3, 4, 5
Ejercicios prácticos en C 20 6 0,24 10, 9
Ejercicios prácticos en MPI 20 8 0,32 1, 2, 3, 4, 5, 6, 7, 8, 10, 9, 11
Ejercicios prácticos en OpenMP 15 4 0,16 1, 2, 4, 5, 6, 8
Examen Final 30 2 0,08 3, 4, 5, 10, 9

Bibliografía

Parallel Programming : Techniques and Applications using Networked Workstations and Parallel Computers. Barry Wilkinson. Prentice Hall, 1999.

 

Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Ian Foster . Addison Wesley,1995.

 

Introduction to Parallel Computing. A. Grama et alter. Addison Wesley, Second Edition, 2003.

 

Parallel Program Development For Cluster Computing: Methodology, Tools and Integrated  Environments. Edited by J. C. Cunha, P. Kacsuk, S. C. Winter. Nova Science Publishers, Inc., 2001.

 

High Performance Cluster Computing (Vols. 1 y 2), Rajkumar Buyya ed., Prentice Hall, 1999.

 

Parallel Programming with MPI, Peter Pacheco, Morgan Kauffman, 1996

 

Using MPI-2, William Gropp, Ewing Lusk and Rajeev Thakur, MIT Press, 1999.

 

Programming Massively Parallel Processors: A Hands-on Approach. David Kirk and Wen-mei Hwu. ISBN: 978-0-12-381472-2. Published by Elsevier Inc. 2010.

 

http://www.elsevierdirect.com/morgan_kaufmann/kirk/