En esta asignatura se profundiza en los temas de paralelismo estudiados en la asignatura PAR. En concreto se trabajan tres aspectos: 1) implementación de un modelo de programación de memoria compartida tipo OpenMP, haciendo uso de los mecanismos ofrecidos por una librería de threads de bajo nivel (pthreads) y la generación de código por parte de un compilador (gcc); 2) diseño de un clúster de memoria distribuida a partir de sus componentes básicos: nodos multiprocesador/multicore, aceleradores, interfaces de red y otros componentes para crear la red de interconexión; y 3) estudiar un modelo de programación para arquitecturas cluster (MPI).
Profesorado
Responsable
Eduard Ayguadé Parra (
)
Horas semanales
Teoría
1
Problemas
1
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Competencias Transversales
Actitud frente al trabajo
G8 [Avaluable] - Tener motivación para la realización profesional y para afrontar nuevos retos, así como una visión amplia de las posibilidades de la carrera profesional en el ámbito de la Ingeniería en Informática. Tener motivación por la calidad y la mejora continua, y actuar con rigor en el desarrollo profesional. Capacidad de adaptación a los cambios organizativos o tecnológicos. Capacidad de trabajar en situaciones de falta de información y/o con restricciones temporales y/o de recursos.
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.
Competencias Técnicas de cada especialidad
Especialidad ingeniería de computadores
CEC2 - Analizar y evaluar arquitecturas de computadores incluyendo plataformas paralelas y distribuidas, y desarrollar y optimizar software para dichas plataformas.
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
Competencias técnicas comunes
CT8 - Planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha, su mejora continua y valorando su impacto económico y social
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.
Objetivos:1234 Semana:
15 (Fuera de horario lectivo)
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
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.