Créditos
6
Tipos
Complementaria de especialidad (Ingeniería de Computadores)
Requisitos
- Prerrequisito: PAR
Departamento
AC
Profesorado
Responsable
- Eduard Ayguadé Parra ( eduard@ac.upc.edu )
Horas semanales
Teoría
1
Problemas
1
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Actitud frente al trabajo
- G8.3 - Tener motivación para el desarrollo profesional y para afrontar nuevos retos. Tener motivación para la mejora continua. Disponer de capacidad de trabajo en situaciones de falta de información.
Especialidad ingeniería de computadores
- CEC2.1 - Analizar, evaluar, seleccionar y configurar plataformas hardware para el desarrollo y la ejecución de aplicaciones y servicios informáticos.
- CEC2.2 - Programar considerando la arquitectura hardware, tanto en ensamblador como en alto nivel.
Competencias técnicas comunes
- CT8.7 - Controlar versiones y configuraciones del proyecto.
Objetivos
-
Capacidad de escribir y entender programas paralelos que utilicen la interfaz de bajo nivel Pthreads.
Competencias relacionadas: CEC2.2, -
Capacidad de implementar las funcionalidades básicas en una librería que de soporte a la ejecución paralela de aplicaciones en una arquitectura de memoria compartida.
Competencias relacionadas: CT8.7, CEC2.2, G8.3, -
Capacidad de entender los componentes básicos de una arquitectura multiprocesador, así como realizar un diseño sobre papel que obedezca a determinados criterios de diseño.
Competencias relacionadas: CEC2.1, G8.3, -
Capacidad de escribir aplicaciones sencillas usando el modelo de programación MPI, evaluar su rendimiento, y detectar las partes críticas que limitan la escalabilidad.
Competencias relacionadas: CEC2.2, G8.3, -
Capacidad de evaluar la calidad de una solución propuesta a un problema específico
Competencias relacionadas: G8.3, -
Capacidad de completar o ampliar los conocimientos adquiridos de forma autónoma y realizar un trabajo específico aunque el enunciado sea incompleto, o falte información relevante para su implementación
Competencias relacionadas: G8.3,
Contenidos
-
MPI: programación paralela para arquitecturas de memoria distribuida
En este tema aprenderemos a programar aplicaciones paralelas usando MPI, un modelo de programación basado en paso de mensajes para arquitecturas clúster de memoria distribuida. -
Programación paralela con Pthreads
Introducción a las funcionalidades básicas que ofrece la biblioteca de soporte de bajo nivel Pthreads -
Implementación de un modelo de programación de memoria compartida: threads y sincronización, reparto de trabajo y modelo de tareas
En este tema aprenderemos como diseñar e implementar una librería que de soporte a la ejecución de programas paralelos en OpenMP, en concreto los mecanismos relacionados con la gestión de threads y sincronización, el reparto de trabajo en los OpenMP "worksharing constructs" y el modelo de ejecución basado en tareas. -
Componentes y diseño de una arquitectura cluster
En este tema se presentarán los principales componentes que forman una arquitectura clúster y se realizará un diseño que atienda a determinados compromisos de potencia de cálculo, consumo energético i coste.
Actividades
Actividad Acto evaluativo
Teoría
3h
Problemas
3h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h
Metodología docente
Las clases de teoría introducen todos los conocimientos, las técnicas, y los conceptos necesarios, usando ejemplos de código reales o pseudo-código. Estas clases de teoría se complementan con clases de problemas en las que se plantearan y resolverán ejercicios prácticos. En el laboratorio se ponen en práctica los contenidos teóricos, y se realizará una evaluación de comportamiento y rendimiento de las soluciones implementadas.La asignatura contempla que parte de los contenidos teóricos, o los enunciados de laboratorio, los deberá desarrollar el estudiante de forma autónoma.
El curso está principalmente centrado en las arquitecturas clúster, utilizando el lenguaje de programación C, la librería Pthreads y los modelos de programación OpenMP y MPI.
Método de evaluación
La nota de la asignatura se calcula a partir de 3 notas:- nota de contenidos teóricos;
- nota de laboratorio;
- nota de autonomía y motivación.
La nota de contenidos teóricos (T) se obtiene a partir de las notas obtenidas en el examen parcial (50%) y el examen final (50%). Estas pruebas podrán substituirse por la realización, entrega y discusión de un mínimo del 70% de los problemas pedidos durante las clases de teoría.
La nota de laboratorio (L) se obtendrá a partir de las notas de las entregas y el seguimiento de las sesiones de prácticas por parte del profesor.
La nota de autonomía y motivación (A) evalúa la capacidad del alumno para enfrentarse a situaciones de falta de información y la motivación para ir más allá de lo que se pide o explorar en temas adicionales. Se obtiene a partir de: 1) los resultados de aquellas prácticas en las que se requiera buscar información adicional y/o realizar partes opcionales/libres; y 2) del diseño sobre papel de un clúster para HPC.
La nota final se calcula F = T * 0.4 + L * 0.4 + A * 0.2.
Bibliografía
Básico
-
Introduction to parallel computing
- Grama, A.; Karypis, G.; Kumar, V.; Gupta, A,
Pearson Education,
2003.
ISBN: 0201648652
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003524559706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementario
-
Unit 1: POSIX Threads (Pthreads) programming
- Ayguadé, Eduard,
Departament d'Arquitectura de Computadors,
2021.
-
Unit 2: Build (on paper) your own cluster architecture
- Ayguadé, Eduard,
Departament d'Arquitectura de Computadors,
2021.
-
Unit 3: MPI (Message Passing Interface)
- Ayguadé, Eduard,
Departament d'Arquitectura de Computadors,
2021.
-
Laboratory assignments: Lab 1 - OpenMP parallelisation of Eratosthenes Sieve
- Ayguadé, Eduard,
Departament d'Arquitecture de Computadors,
2023.
-
Laboratory assignments: Lab2 - Implementing a minimal OpenMP runtime
- Ayguadé, Eduard,
Departament d'Arquitectura de Computadors,
2021.
-
Laboratory assignments: Lab 3 - Performance characteritzation of HPC clusters
- Ayguadé, Eduard ; Àlvarez, Lluc,
Departament d'Arquitectura de Computadors,
2023.
-
Laboratory assignments: Lab 4 - Heat equation using MPI
- Ayguadé, Eduard ; Àlvarez, Lluc,
Departament d'Arquitectura de Computadors,
2023.
Web links
- Message Passing Interface (MPI) https://computing.llnl.gov/tutorials/mpi/
- POSIX Threads Programming https://computing.llnl.gov/tutorials/pthreads/
- OpenMP complete specifications and examples https://www.openmp.org/specifications/