Arquitectura de Supercomputadores

Usted está aquí

Créditos
6
Tipos
Complementaria de especialidad (Computación de Altas Prestaciones)
Requisitos
Esta asignatura no tiene requisitos, pero tiene capacidades previas
Departamento
AC
Los supercomputadores son el exponente de la tecnología de computación de alto rendimiento. En este curso estudiaremos todos los elementos en la arquitectura del sistema de un supercomputador, desde el multiprocesador de memoria compartida a la red de interconexión y clúster de memoria distribuida, incluyendo las infraestructuras que alojan estos supercomputadores. También discutiremos la pila de software del sistema con los modelos de programación paralela y sus herramientas de análisis de rendimiento asociados. Por último vamos a discutir la evolución de estos sistemas de supercomputación para que permitan la convergencia de estos con la compleja analítica avanzada que se requiere en el mundo actual. En este punto, vamos a parar especial atención a los algoritmos de Deep Learning y su ejecución en las plataformas de GPUs. La componente práctica es la parte más importante de esta asignatura. En este curso se utiliza el método de “learn by doing”, con un conjunto de Hands-on basados en problemas reales que los estudiantes deben llevar a cabo a lo largo del curso. Se realizará una evaluación continuada a lo largo del curso que no permite relajación y que produce mejores resultados y mayor motivación entre los estudiantes. El método se basa igualmente en el trabajo en equipo y que el alumno ‘aprenda a aprender' mediante la lectura y presentacion de artículos. De esta manera el estudiante será capaz de adaptarse y anticiparse a las tecnologías que llegaran en los próximos años. Para la parte práctica usaremos recursos de supercomputación del Barcelona Supercomputing Center (BSC-CNS).

Profesores

Responsable

  • Jordi Torres Viñals ( )

Horas semanales

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

Competencias

Competencias Técnicas de cada especialidad

High performance computing

  • CEE4.1 - Capacidad de analizar, evaluar y diseñar computadores y proponer nuevas técnicas de mejora en su arquitectura.
  • CEE4.2 - Capacidad de analizar, evaluar, diseñar y optimizar software considerando la arquitectura y de proponer nuevas técnicas de optimización.
  • CEE4.3 - Capacidad de analizar, evaluar, diseñar y administrar software de sistema en entornos de supercomputación.

Competencias Técnicas Genéricas

Genéricas

  • CG1 - Capacidad para aplicar el método científico en el estudio y análisis de fenómenos y sistemas en cualquier ámbito de la Informática, así como en la concepción, diseño e implantación de soluciones informáticas innovadoras y originales.

Competencias Transversales

Trabajo en equipo

  • CTR3 - Ser capaz de trabajar como miembro de un equipo, ya sea como un miembro más, o realizando tareas de dirección con la finalidad de contribuir a desarrollar proyectos con pragmatismo y sentido de la responsabilidad, asumiendo compromisos teniendo en cuenta los recursos disponibles.

Básicas

  • CB6 - Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio.
  • CB8 - Que los estudiantes sepan comunicar sus conclusiones y los conocimientos y razones últimas que las sustentan a públicos especializados y no especializados de un modo claro y sin ambigüedades.
  • CB9 - Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.

Objetivos

  1. Capacitar a los estudiantes para que sigan por sí mismos el desarrollo continuo de los sistemas de supercomputación que permiten el avance de algoritmos analíticos avanzados o la inteligencia artificial.
    Competencias relacionadas: CB6, CB8, CB9, CTR3, CEE4.1, CEE4.2, CEE4.3, CG1,

Contenidos

  1. Contenido del curso y motivación
  2. Conceptos básicos de supercomputación
  3. Supercomputers Architecture
  4. Supercomputers Benchmarking
  5. General Purpose Supercomputers
  6. Resource Management in Supercomputers
  7. Parallel Programming Models and Motivation
  8. MPI basics
  9. Taking Time
  10. OpenMP basics
  11. MPI Advanced
  12. Parallel Performance
  13. Heterogeneous Supercomputers
  14. Accelerator Architecture
  15. Getting Started with CUDA Programming Model
  16. Supercomputing, the heart of Deep Learning
  17. Software Stack for Artificial Intelligence
  18. Deep Learning Basics Concepts
  19. Computing Performance
  20. Training on Multiple GPUs
  21. Training on Multiple Servers

Actividades

Actividad Acto evaluativo


Course content and motivation


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

Supercomputing Basics



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

HPC Building Blocks (general purpose blocks)



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

HPC Software Stack (general purpose blocks)



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

Parallel Programming Models: OpenMP



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

Parallel Programming Models: MPI



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

Parallel Performance Metrics and Measurements



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

HPC Building Blocks for AI servers



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

Coprocessors and Programming Models



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

Powering Artificial Intelligence, Machine Learning and Deep Learning with Supercomputing



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

Parallel AI platforms and its software stack



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

Distributed AI platforms and its software stack



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

Conclusions and remarks: Towards Exascale Computing



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

1- Supercomputing Building Blocks



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

2- Getting Started with Supercomputing



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

3- Getting Started with Parallel Programming Models



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

4- Getting Started with Parallel Performance Metrics



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

5- Getting Started with Parallel Performance Model – I



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

6- Getting Started with Parallel Performance Model – II



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

7- Getting Started with GPU based Supercomputing



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

8- Getting Started with CUDA programming model



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

9- Getting Started with Deep Learning Frameworks in a Supercomputer



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

10- Getting Started with Deep Learning basic model



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

11- Getting Started with a Deep Learning real problems and its solutions



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

12- Getting Started with parallelization of a Deep Learning problems



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

13- Getting Started with a distributed Deep Learning problems



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

Metodología docente

The theoretical part of the course will follow the slides designed by the teacher. The practical component is the most important part of this subject. In this course the “learn by doing” method is used, with a set of Hands-on, based on problems that the students must carry out throughout the course. The course will be marked by a continuous assessment that ensures constant and steady work. The method is also based on teamwork and a ‘learn to learn' approach reading and presenting papers. Thus the student is able to adapt and anticipate new technologies that will arise in the coming years.
Class attendance and participation: Regular and consistent attendance is expected and to be able to discuss concepts covered during class.

Lab activities: Hands-on sessions will be conducted during the course using supercomputing facilities. Each hands-on will involve writing a lab report with all the results.

Reading/Presentation Assignments: 6 assignments that include reading documentation/papers that expand the concepts introduced during lectures.

Assessment: There will be 2 short midterm exams along the course (and some pop quiz that can be used to replace attendance if due to the situation it is required).

Student presentation: Students/groups randomly chosen will present the reading assignment (presentations/projects).

Método de evaluación

The evaluation of this course will take into account different items (tentative):

Attendance (minimum 80% required) & participation in class will account for 20% of the grade.
Readings, Presentations (and Homework) will account for 20 % of the grade.
Exams will account for 20% of the grade.
Lab sessions (+ Lab reports) will account for 40 % of the grade.

Bibliografía

Básica:

  • Class handouts and materials associated with this class - Torres, J, 2019.
  • Understanding Supercomputing, to speed up machine learning algorithms (Course notes) - Torres, J, 2018.
  • Marenostrum4 User's guide - BSC documentation, Operations department, 2019.
  • High performance computing : modern systems and practices - Sterling, T.; Anderson, M.; Brodowicz, M, Morgan Kaufmann, 2018. ISBN: 9780124201583
    http://cataleg.upc.edu/record=b1519884~S1*cat
  • Dive into deep learning - Zhang, A.; Lipton, Z.C.; Li, M.; Smola, A.J, 2020.
  • First contact with Deep learning: practical introduction with Keras - Torres, J, Kindle Direct Publishing, 2018. ISBN: 9781983211553
    http://cataleg.upc.edu/record=b1510639~S1*cat

Web links

Capacidades previas

Programming in C and Linux basics will be expected in the course. Prior exposure to parallel programming constructions, Python language, experience .

Adenda

Contenidos

THERE ARE NOT CHANGES IN THE CONTENTS REGARDING THE INFORMATION IN THE COURSE GUIDE.

Metodología docente

THE COURSE IS PLANNED WITH 100% PRESENTIALITY, SO THERE ARE NOT CHANGES IN THE METHODOLOGY REGARDING THE INFORMATION IN THE COURSE GUIDE.

Método de evaluación

THERE ARE NOT CHANGES IN THE EVALUATION METHOD REGARDING THE INFORMATION IN THE COURSE GUIDE.

Plan de contingencia

IF THE COURSE HAS TO BE OFFERED WITH REDUCED PRESENTIALITY OR NOT PRESENTIALLY, THERE WILL BE NOT CHANGES IN THE CONTENTS AND THE EVALUATION METHOD, BUT THE METHODOLOGY WILL BE ADAPTED TO ALLOW FOLLOWING THE COURSE REMOTELY, INCLUDING AMONG OTHERS: * USE THE 'RACÓ' TO DOWNLOAD THE SLIDES, EXERCISES, PRACTICAL ASSIGNMENTS, AND OTHER DOCUMENTATION * USE VIDEO AND/OR SCREENCAST MATERIAL FOR ASYNCHRONOUS LECTURES AND PRACTICAL CLASSES * USE VIDEOCONFERENCE FOR SYNCHRONOUS LECTURES AND PRACTICAL CLASSES * USE THE 'RACÓ' FOR ASSIGNMENT SUBMISSIONS * USE MAIL AND/OR THE FORUM FOR ASYNCHRONOUS CONSULTATION * USE CHAT AND/OR VIDEOCONFERENCE FOR SYNCHRONOUS CONSULTATION * TENTATIVE TO USE "ATENEA" OR "RACÓ" FOR TWO MIDTERM EVALUATION