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: G8.3, CT8.7, CEC2.2, -
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: G8.3, CEC2.1, -
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: G8.3, CEC2.2, -
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
Cualquier acto de fraude académico, plagio o uso o mera tenencia al alcance de medios no autorizados en cualquier actividad de
evaluación comportará la calificación de cero (0) en la prueba o entrega afectada. Además, de acuerdo con la normativa de la
Universidad, la posible derivación de los hechos para la apertura de un expediente disciplinario implicará que la asignatura quede en
el estado provisional de "pendiente de evaluación" hasta la resolución del expediente. La gestión de estas incidencias se lleva a cabo
de acuerdo con el Marco de actuación para la integridad académica en la evaluación de la UPC.
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/