Computación de Alto Rendimiento

Usted está aquí

Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos, pero tiene capacidades previas
Departamento
AC
Mail
,
El objetivo de esta asignatura es conocer el funcionamiento y aplicaciones de sistemas de computación de alto rendimiento, a fin de desplegar aplicaciones de inteligencia artificial que requieren gran cantidad de recursos, optimización de procesos y aplicación de aceleradores, y aprovechamiento y orquestación de recursos en la nube. En este curso se verán conceptos de virtualización y containerización, así como sistemas de archivos distribuidos y sistemas de computación distribuida. También se verá escalabilidad en algoritmos de aprendizaje automático e inteligencia artificial, usando tecnologías del estado del arte, tanto por middleware como por aceleradores. Se trabajará con lenguajes C, Python y Scala.

Profesorado

Responsable

  • Jordi Torres Viñals ( )
  • 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

  • CT2 - Sostenibilidad y Compromiso Social. Conocer y comprender la complejidad de los fenómenos económicos y sociales típicos de la sociedad del bienestar; tener capacidad para relacionar el bienestar con la globalización y la sostenibilidad; lograr habilidades para utilizar de forma equilibrada y compatible la técnica, la tecnología, la economía y la sostenibilidad.
  • CT3 - 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.

Básicas

  • CB2 - Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.

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.
  • CE06 - Identificar las características, funcionalidades y estructura de los Sistemas Operativos y diseñar e implementar aplicaciones basadas en sus servicios.
  • 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.
  • CE08 - Detectar las características, funcionalidades y componentes de los gestores de datos, que permitan su adecuado uso en flujos de información, y el diseño, análisis e implementación de 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.
  • CE19 - Utilizar los sistemas de computación actuales, incluidos sistemas de alto rendimiento, para el proceso de grandes volúmenes de datos desde el conocimiento de su estructura, funcionamiento y particularidades.

Competencias Técnicas Genéricas

Genéricas

  • CG1 - Concebir, redactar, organizar, planificar y desarrollar proyectos en el ámbito de la inteligencia artificial.
  • 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.
  • 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. Entender el uso de la computación de altas prestaciones y middleware para la inteligencia artificial
    Competencias relacionadas: CG1, CG9, CT3, CT6, CE19,
  2. Conocer los componentes básicos de hardware y middleware en plataformas de altas prestaciones
    Competencias relacionadas: CG9, CT2, CE05, CE08, CE19,
  3. Aprender sobre el uso de aceleradores (e.g. GPUs) y herramientas para su explotación
    Competencias relacionadas: CG3, CT6, CE08, CE19,
  4. Aprender conceptos de virtualización y usos de las máquinas virtuales
    Competencias relacionadas: CG3, CT2, CB2, CE05, CE06,
  5. Familiarizarse con las herramientas básicas para la explotación de sistemas distribuidos, con modelos de programación orientados a la distribución
    Competencias relacionadas: CG3, CT6, CE07, CE08, CE11,
  6. Conocer los conceptos básicos de sistemas distribuidos: interconexión y comunicaciones entre sistemas.
    Competencias relacionadas: CG3, CT3, CT6, CE07, CE11,
  7. Aprender sobre sistemas de ficheros: uso básico de los sistemas de ficheros, sistemas en de discos redundantes, volúmenes lógicos, tolerancia a fallos.
    Competencias relacionadas: CG3, CT6, CB2, CE06, CE07, CE08,
  8. Descubrir los retos en la computación de altas prestaciones en inteligencia artificial
    Competencias relacionadas: CG1, CG9, CT2, CT3,

Contenidos

  1. Introducció a los sistemas de Computación de Altas Prestaciones
    Introducción a los sistemas de computación de gran escala, especializados y la nube.
  2. Aceleradores y dispositivos de altas prestaciones
    Incorporación de aceleradores (e.g. GPUs) y herramientas para su explotación. Operaciones con matrices aceleradas mediante dispositivos especializados.
  3. Middleware y plataformas de altas prestaciones para la inteligencia artificial
    Componentes básicos de hardware y middleware en plataformas de altas prestaciones. Uso de herramientas del estado del arte y la industria (e.g. TensorFlow, Pytorch, etc.) combinado con dispositivos especializados.
  4. Paralelismo aplicado a la inteligencia artificial
    Paralelismo en computación de altas prestaciones y su interacción con los middlewares más extendidos en aplicaciones de inteligencia artificial, aprendizaje profundo y transformers, y sus técnicas asociadas.
  5. Introducción a modelos distribuidos para Big Data
    Introducción a modelos Map-Reduce sobre sistemas de datos distribuidos y lenguaje Scala.
  6. Concepto de virtualización y containerización
    Introducción al uso de máquinas virtuales y containerización, para ejecuciones isoladas y personalización de entornos, así como migración de carga y gestión de recursos en sistemas compartidos.
  7. Sistemas de ficheros locales y distribuidos, redundancia y disponibilidad
    Uso básico de los sistemas de ficheros, así como sistemas de almacenamiento distribuido, volúmenes lógicos, redundancia, tolerancia a fallos y alta disponibilidad.
  8. Computación en sistemas distribuidos
    Conceptos básicos de sistemas distribuidos (e.g. Hadoop y Spark), interconexión y comunicaciones, paradigmas de los sistemas distribuidos y protocolos, tolerancia a fallos. Herramientas básicas para la explotación de concurrencia en sistemas distribuidos, y sus modelos de programación orientados a inteligencia artificial y el proceso masivo de datos.
  9. Retos de la computación de altas prestaciones para la inteligencia artificial
    Retos de presente y futuro de la computación de altas prestaciones aplicada a la inteligencia artificial. Herramientas y entornos actuales en la industria, la nube, la academia y la sociedad.

Actividades

Actividad Acto evaluativo


Introducción a los sistemas de Computación de Altas Prestaciones

Introducción a los sistemas de Computación de Altas Prestaciones, herramientas y entornos. Familiarización con las instalaciones HPC, hand-on en uso de sistemas HPC y lenguaje C.
Objetivos: 2
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
9h

Aceleradores, supercomputadores y dispositivos de altas prestaciones

Aceleradores y dispositivos de altas prestaciones. GPUs y dispositivos aceleradores. Multiplicación de matrices usando GPUs. Introducción a Python en un supercomputador.
Objetivos: 3
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
9h

Middleware y plataformas de altas prestaciones para la inteligencia artificial

Middleware y plataformas de altas prestaciones para la inteligencia artificial. TensorFlow/Pytorch, Deep Learning y HPC.
Objetivos: 1
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Paralelismo aplicado a la inteligencia artificial

Paralelismo aplicado a la inteligencia artificial. Escalabilidad, técnicas avanzadas de deep learning, transformers y futuro de Deep Learning.
Objetivos: 2 1
Contenidos:
Teoría
4h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Introducción a modelos distribuidos de programación para Big Data

Introducción a modelos de programación Map-Reduce sobre sistemas de datos distribuidos y lenguaje Scala.
Objetivos: 6
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Conceptos de virtualización y containerización

Introducción al uso de máquinas virtuales y containerización, para la ejecución aislada y personalizada de entornos, así como migración de carga y gestión de recursos a sistemas compartidos.
Objetivos: 4
Contenidos:
Teoría
4h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Sistemas de archivos locales y distribuidos, redundancia y disponibilidad

Usos básicos de sistemas de archivos, así como a los sistemas de almacenamiento distribuido de datos, volúmenes lógicos, redundancia, tolerancia a fallos y alta disponibilidad.
Objetivos: 7
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
2h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Computación en sistemas distribuidos

Conceptos básicos de sistemas distribuidos (e.g. Hadoop y Spark), interconexión y comunicaciones, paradigmas de sistemas distribuidos y protocolos, y tolerancia a fallos. Herramientas básicas para la explotación de concurrencia en sistemas distribuidos, y sus modelos de programación orientados a la inteligencia artificial y al proceso masivo de datos.
Objetivos: 6 5
Contenidos:
Teoría
4h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Herramientas y entornos actuales en la industria, la nube, la academia y la sociedad.

Herramientas y entornos actuales en la industria, la nube, la academia y la sociedad.
Objetivos: 8
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Retos presentes y futuros de la computación de altas prestaciones aplicadas a la inteligencia artificial. Seminarios HPC

Seminarios de expertos en la materia. Presentación de trabajos.
Objetivos: 5 1 8
Contenidos:
Teoría
6h
Problemas
0h
Laboratorio
4h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Metodología docente

El curso se basa en sesiones de teoría y laboratorio presenciales. Las sesiones teóricas combinan clases magistrales y seminarios de expertos en el ámbito, siguiendo el programa expuesto en este plan de estudios y basadas en el uso de material propio. 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 las diferentes tecnologías presentadas, y siguen los mismos temas del plan de estudios. Son sesiones prácticas en forma de Hands-On, utilizando diferentes recursos computacionales en el Departamento de Arquitectura de Computadores y en el Barcelona Supercomputing Center.

Método de evaluación

La evaluación se fundamentará básicamente en la realización de trabajos de forma continua durante las distintas sesiones del curso. La asistencia y la participación serán obligatorias, y por tanto también se evaluarán pasando lista y requiriendo la participación en las sesiones interactivas. Finalmente, habrá un trabajo de investigación a lo largo de la asignatura, que los estudiantes tendrán que presentar ante sus compañeros.

La distribución de los pesos de cada actividad es la correspondiente:
- AS: asistencia a clase, teoría y laboratorios (10%), que servirá para evaluar la competencia transversal CT3.
- PR: participación en clase (10%)
- EX: ejercicios de laboratorio (65%), como media aritmética de las prácticas de laboratorio.
- RE: presentación de trabajo de investigación (15%), que servirá para evaluar las competencias transversales CT2, CT3 y CT6.

La Nota Final (NF) de la asignatura se obtiene a partir de
NF = 0.10 x AS + 0.10 x PR + 0.65 x EX + 0.10 x RE

Bibliografía

Básica:

Complementaria:

  • BSC documentation about Marenostrum 4 and CTE-Power - Barcelona Supercomputing Center, , .

Capacidades previas

Haber cursado las asignaturas de Fundamentos de Computadores, así como Paralelismo y Sistemas Distribuidos.