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
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
ActividadActo evaluativo
Modelos de ejecución, métricas y herramientas para el análisis de rendimiento
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, existirá la opción de reevaluación mediante un examen que recogerá toda la asignatura (teoría y prácticas). La nota de dicho examen reemplazara la nota NF, cuyo valor no podrá ser mayor de 7.