Programación y Arquitecturas Paralelas

Usted está aquí

Créditos
6
Tipos
Complementaria de especialidad (Ingeniería de Computadores)
Requisitos
  • Prerrequisito: PAR
Departamento
AC
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).

Profesores

Responsable

  • Eduard Ayguadé Parra ( )

Horas semanales

Teoría
1
Problemas
1
Laboratorio
2
Aprendizaje dirigido
0.4
Aprendizaje autónomo
5.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

  1. El alumno debe ser capaz de escribir y entender programas paralelos que utilicen la interfaz de bajo nivel Pthreads.
    Competencias relacionadas: CEC2.2,
  2. El alumno debe ser capaz 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,
  3. El alumno debe ser capaz 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,
  4. El alumno debe ser capaz 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,
  5. El alumno debe ser capaz de evaluar la calidad de una solución propuesta a un problema específico
    Competencias relacionadas: G8.3,
  6. El alumno debe ser capaz 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

  1. Programación paralela con Pthreads
    Introducción a las funcionalidades básicas que ofrece la biblioteca de soporte de bajo nivel Pthreads
  2. 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.
  3. 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.
  4. 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.

Actividades

Actividad Acto evaluativo


POSIX threads (Pthreads)


Objetivos: 1
Contenidos:
Teoría
3h
Problemas
3h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Implementación de un modelo de programación de memoria compartida

-
Objetivos: 1 2 5 6
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
16h
Aprendizaje dirigido
0h
Aprendizaje autónomo
30h

Componentes y diseño de una arquitectura clúster

-
Objetivos: 3 6
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
6h
Aprendizaje dirigido
4h
Aprendizaje autónomo
20h

Otros modelos de programación paralelos: MPI

-
Objetivos: 4 5 6
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
8h
Aprendizaje dirigido
0h
Aprendizaje autónomo
20h

Examen Final


Objetivos: 1 2 3 4
Semana: 15 (Fuera de horario lectivo)
Tipo: examen final
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
2h
Aprendizaje autónomo
8h

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 entregas de problemas realizados en clase y presentaciones de trabajos. Si un alumno no supera la parte teórica (T < 5), tendrá que hacer un examen final; en este caso, la nueva nota de contenidos teóricos T se obtendrá como el maximo entre la nota de evaluación continuada y la nota obtenida en el examen final.

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 los resultados de aquellas prácticas en las que se requiera buscar información adicional y/o realizar partes opcionales/libres.

La nota final se calcula F = T * 0.5 + L * 0.3 + A * 0.2.

Bibliografía

Básica:

Web links

Capacidades previas

Definidas por pre-requisitos de la asignatura

Adenda

Contenidos

No hi ha modificacions respecte la Guia Docent.

Metodología docente

No hi ha modificacions respecte la Guia Docent.

Método de evaluación

No hi ha modificacions respecte la Guia Docent.

Plan de contingencia

En cas de confinament, els laboratoris passaran a efectuarse de forma no presencial síncrona i les dues practiques de laboratori que es realitzen amb mini-clusters es realitzarien a boada sense alterar prácticament els objectius docents de l'assignatura.