Paralelismo y Sistemas Distribuidos

Usted está aquí

Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos, pero tiene capacidades previas
Departamento
AC
Web
-
Mail
-
Esta asignatura proporciona conocimientos básicos sobre: 1) los diferentes niveles de paralelismo que podemos encontrar en las arquitecturas actuales (a nivel de instrucciones o ILP, a nivel de datos o DLP ya nivel de flujo de ejecución o TLP; 2) cómo la jerarquía de memoria se organiza para darles soporte; y 3) los mecanismos que permiten explotarlos desde el punto de vista de la programación de aplicaciones. Estos conocimientos permitirán entender las oportunidades que ofrecen estas arquitecturas para hacer frente a las necesidades de cálculo de la mayor parte de aplicaciones de inteligencia artificial.

Profesorado

Responsable

  • Eduard Ayguadé Parra ( )

Otros

  • Josep Lluís Berral García ( )

Horas semanales

Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6

Competencias

Competencias Transversales

Transversales

  • CT3 [Avaluable] - Comunicación eficaz oral y escrita. Comunicarse de forma oral y escrita con otras personas sobre los resultados del aprendizaje, de la elaboración del pensamiento y de la toma de decisiones; participar en debates sobre temas de la propia especialidad.
  • CT6 [Avaluable] - Aprendizaje autónomo. Detectar deficiencias en el propio conocimiento y superarlas mediante la reflexión crítica y la elección de la mejor actuación para ampliar dicho conocimiento.

Competencias Técnicas

Específicas

  • CE05 - Analizar y evaluar la estructura y arquitectura de los computadores, así como los componentes básicos que los conforman.
  • CE07 - Interpretar las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y diseñar e implementar aplicaciones basadas en ellas.
  • CE11 - Identificar y aplicar los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.

Competencias Técnicas Genéricas

Genéricas

  • CG2 - Utilizar los conocimientos fundamentales y metodologías de trabajo sólidas adquiridos durante los estudios para adaptarse a los nuevos escenarios tecnológicos del futuro.
  • CG3 - Definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas en el ámbito de la inteligencia artificial.
  • CG5 - Trabajar en equipos y proyectos multidisciplinares relacionados con la inteligencia artificial y la robótica, interactuando fluidamente con ingenieros/as y profesionales de otras disciplinas.
  • CG9 - Afrontar nuevos retos con una visión amplia de las posibilidades de la carrera profesional en el ámbito de la Inteligencia Artificial. Desarrollar la actividad aplicando criterios de calidad y mejora continua, y actuar con rigor en el desarrollo profesional. Adaptarse a los cambios organizativos o tecnológicos. Trabajar en situaciones de carencia de información y/o con restricciones temporales y/o de recursos.

Objetivos

  1. Conocer los modelos básicos de ejecución y las métricas rendimiento
    Competencias relacionadas: CE05,
    Subcompetences:
    • Herramientas para la caracterización de rendimiento
  2. Conocer la arquitectura de los procesadores escalares y las técnicas para explotar el ILP (paralelismo a nivel de instrucción) y el DLP (paralelismo a nivel de datos)
    Competencias relacionadas: CG3, CE05,
    Subcompetences:
    • Optimizaciónde la ejecución escalar: vectorización
  3. Conocer las arquitecturas de memoria compartida, soporte hardware a la coherencia de memoria y sincronización
    Competencias relacionadas: CG3, CE05,
    Subcompetences:
    • Programación paralela de memoria compartida: OpenMP
  4. Conocer las arquitecturas de memoria distribuida y el soporte hardware para el intercambio de datos
    Competencias relacionadas: CG3, CE05, CE07,
    Subcompetences:
    • Programación paralela con paso de mensajes: MPI
  5. Conocer las arquitecturas basadas en aceleradores y el acceso a la jerarquía de memoria del procesador escalar
    Competencias relacionadas: CG3, CE05,
  6. Conocer y aplicar las técnicas básicas de la programación paralela, para sistemas multiprocesador de memoria compartida y distribuida
    Competencias relacionadas: CT6, CE11,
  7. Capacidades para discutir y contrastar la resolución de problemas y ejercicios prácticos, tanto en trabajo de grupo como de forma autónoma
    Competencias relacionadas: CT3, CT6,
  8. Entender la relación de la asignatura con el campo de la IA
    Competencias relacionadas: CG2, CG5, CG9,

Contenidos

  1. Modelos de ejecución y métricas de rendimiento
    Presentación de los modelos de ejecución serie, multiprogramado, concurrente y paralelo, junto a las métricas básicas que caracterizan su rendimiento.
  2. Arquitectura del procesador escalar y optimización de código
    En este tema se presenta la arquitectura básica del procesador escalar y las técnicas para incrementar el paralelismo a nivel de instrucciones (ILP: diseño segmentado y superescalar) y a nivel de datos (DLP: unidades vectoriales). Optimización del acceso a la jerarquía de memoria y vectorización.
  3. Arquitectura y programación de multiprocesadores de memoria compartida
    En este tema se presentan las arquitecturas multiprocesador de memoria compartida UMA (uniform memory access time) y NUMA (non-uniform memory access time), incluyendo los mecanismos de coherencia basados en bus y directorio y el soporte a la sincronización mediante instrucciones atómicas. También se presenta la arquitectura de un nodo dentro de una arquitectura cluster y los componentes que lo forman (procesadores con múltiples núcleos de ejecución, memoria y buses). Paralelización de aplicaciones usando el modelo de tareas en OpenMP.
  4. Arquitectura y programación de multiprocesadores de memoria distribuida
    En este tema se presentan las arquitecturas multiprocesador de memoria distribuida basadas en paso de mensajes a través de una red de interconexión escalable. Paralelización de aplicaciones con el modelo de programación MPI.
  5. Aceleración para aplicaciones de inteligencia artificial
    En este tema se presentan las arquitecturas destinadas a acelerar los núcleos de cómputo más característicos en aplicaciones de inteligencia artificial: GPU (Graphics Processing Units), TPU (Tensor Processing Units),... y su integración en los nodos de memoria compartida de una arquitectura de clúster. Caso de uso: aceleradores para entornos de Deep Learning.

Actividades

Actividad Acto evaluativo


Modelos de ejecución, métricas y herramientas para el análisis de rendimiento

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

Arquitectura del procesador escalar y optimización de aplicaciones

-
Objetivos: 2 7
Contenidos:
Teoría
6h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Arquitectura multiprocesador de memoria compartida y programación OpenMP

-
Objetivos: 3 7 8 6
Contenidos:
Teoría
8h
Problemas
0h
Laboratorio
8h
Aprendizaje dirigido
0h
Aprendizaje autónomo
14h

Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Control teoria


Objetivos: 1 2
Semana: 6
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Arquitectura multiprocesador de memoria distribuida y programación MPI

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

Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Arquitectura de aceleradores por aplicaciones de inteligencia artificial

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

Examen final


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

Control de laboratorio


Objetivos: 6
Semana: 14
Tipo: examen de laboratorio
Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
8h

Metodología docente

El curso se basa en sesiones de teoría y laboratorio presenciales. Las sesiones teóricas combinan clases magistrales con la resolución de ejercicios siguiendo el programa expuesto en este plan de estudios y usando material propio (transparencias, enunciados de problemas, ...). Durante las sesiones, se promueve el diálogo y la discusión para anticipar y consolidar los resultados de aprendizaje de la asignatura.

Las sesiones de laboratorio tratan los aspectos relacionados con la programación y siguen los mismos temas del plan de estudios. Son sesiones prácticas utilizando una arquitectura cluster disponible en el Departamento de Arquitectura de Computadores.

Método de evaluación

Hay dos pruebas evaluativas de la parte de teoría y una de la parte de laboratorio:
- PT: examen parcial de teoría (20%)
- FT: examen final de teoría (35%)
- FL: examen final de laboratorio (35%)
Adicionalmente, se evaluarán de forma continua:
- SL: informes de seguimiento del laboratorio (10%) que también servirá para evaluar las competencias transversales CT3 y CT6.

La Nota Final (NF) de la asignatura se obtiene a partir de
NF = 0.30 x FL + 0.15 x SL + MAX (0.55 x FT; 0.20 x PT + 0.35 x FT))

Bibliografía

Básica:

Capacidades previas

Las adquiridas en la asignatura de Fundamentos de Computadores (FC) que conceptualmente precede a esta asignatura.