Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos
, pero tiene capacidades previas
Departamento
AC
Web
-
Mail
-
Profesorado
Responsable
- Eduard Ayguadé Parra ( eduard@ac.upc.edu )
Otros
- Josep Lluís Berral García ( berral@ac.upc.edu )
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Transversales
Específicas
Genéricas
Objetivos
-
Conocer los modelos básicos de ejecución y las métricas rendimiento
Competencias relacionadas: CE05,
Subcompetences- Herramientas para la caracterización de rendimiento
-
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
-
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
-
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
-
Conocer las arquitecturas basadas en aceleradores y el acceso a la jerarquía de memoria del procesador escalar
Competencias relacionadas: CG3, CE05, -
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, -
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, -
Entender la relación de la asignatura con el campo de la IA
Competencias relacionadas: CG2, CG5, CG9,
Contenidos
-
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. -
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. -
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. -
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. -
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
Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h
Teoría
0h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
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 (30%)
Adicionalmente, se evaluarán de forma continua:
- SL: informes de seguimiento del laboratorio (15%) 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))
En caso de NF < 5.0 pero superior a 3.5 habiendo realizado las dos partes del examen final, existirá la opción de reevaluación mediante un examen que recogerá toda la asignatura (teoría y prácticas). La nota del examen de reevaluación reemplazará la nota NF, cuyo valor no podrá ser mayor de 7.
Bibliografía
Básico
-
Computer organization and design: the hardware/software interface
- Patterson, David A and Hennessy, John L,
Morgan Kaufmann,
2017.
ISBN: 9780128017333
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004094079706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Computer architecture: a quantitative approach
- Hennessy, John L. and Patterson, David A.,
Morgan Kaufmann,
2019.
ISBN: 9780128119051
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004117509706711&context=L&vid=34CSUC_UPC:VU1&lang=ca