Esta versión de la guía docente es provisional hasta que no finalice el periodo de edición de las guías del nuevo curso.

Logo UAB
2022/2023

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

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

Prerrequisitos

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
  • Determinar el enfoque de programación paralela más conveniente para desarrollar una aplicación particular
  • Desarrollar aplicaciones paralelas.
  • Evaluar 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

Metodología

La asignatura se desarrollará en clases teóricas y ejercicios prácticos.

Es recomendable que el alumnado asista a todas las clases de la asignatura con un ordenador portatial con la batería bien cargada.

Nota: se reservarán 15 minutos de una clase dentro del calendario establecido por el centro o por la titulación para que el alumnado rellene las encuestas de evaluación de la actuación del profesorado y de evaluación de la asignatura o módulo.

Actividades

Título Horas ECTS Resultados de aprendizaje
Tipo: Dirigidas      
Asistencia a clases de teoría y ejercicios prácticos 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 los ejercicios de Programación en C, Programación en OpenMP, Programación en MPI y Programación con GPUs realizados en grupo. También hay un examen final individual.

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/

Software

C

OpenMP

MPI

OpenACC