Paralelismo y Sistemas Distribuidos

Usted está aquí

Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos, pero tiene capacidades previas
Departamento
AC
Mail
El curso pretende que el estudiante tome conciencia de que hoy en día el análisis de datos que la mayoría de empresas realicen, requieren de avanzadas plataformas de ejecución que ofrezcan una computación a gran escala y de alto rendimiento basada en sistemas paralelos alelo y distribuidos, disponibles a través de las propias empresas o través del amplio abanico de proveedores de servicios de Cloud Computing.

Este curso proporcionará al estudiante a los fundamentos, y lo introducirá en el su uso, de estos sistemas de computación paralela y distribuida actuales para dar soporte a los entornos de análisis de datos que requieren los científicos e ingenieros de datos . El alumno comprenderá el continuo desarrollo de estos sistemas que permiten la convergencia de los algoritmos de análisis avanzados y las tecnologías de computación relacionadas.

Las clases es complementen con ejercicios de programación en base a problemas habituales del científico de datos y evaluar los soluciones, usando sistemas paralelos y distribuidos al alcance de todos. Gracias a los servicios de computación y análisis de alto rendimiento. De esta, manera el alumno podrá dissenay experimentos que sean realistas.

Uno de los objetivos finales de la asignatura es alentar a los estudiantes a querer ser actores y no espectadores de esta profunda transformación de la analítica de alto rendimiento que se está produciendo y procurar estimular sume deseo de querer profundizar más en este apasionante mundo de la tecnología, más allá de la asignatura.

Profesores

Responsable

  • Julita Corbalan Gonzalez ( )

Otros

  • Yolanda Becerra Fontal ( )

Horas semanales

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

Competencias

Competencias Técnicas

Competencias técnicas

  • CE4 - 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 Transversales

Transversales

  • CT4 - Trabajo en equipo. Ser capaz de trabajar como miembro de un equipo interdisciplinar, 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.
  • CT5 - Uso solvente de los recursos de información. Gestionar la adquisición, la estructuración, el análisis y la visualización de datos e información en el ámbito de especialidad y valorar de forma crítica los resultados de dicha gestión.
  • CT6 - 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.
  • CT7 - Tercera lengua. Conocer una tercera lengua, preferentemente el inglés, con un nivel adecuado oral y escrito y en consonancia con las necesidades que tendrán los titulados y tituladas.

Básicas

  • CB1 - Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio.
  • 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.
  • CB5 - Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía

Competencias Técnicas Genéricas

Genéricas

  • CG1 - Concebir sistemas computacionales que integren datos de procedencias y formas muy diversas, creen con ellos modelos matemáticos, razonen sobre dichos modelos y actúen en consecuencia, aprendiendo de la experiencia.
  • CG2 - Elegir y aplicar los métodos y técnicas más adecuados a un problema definido por datos que representen un reto por su volumen, velocidad, variedad o heterogeneidad, incluidos métodos informáticos, matemáticos, estadísticos y de procesado de la señal.
  • CG4 - Identificar oportunidades para aplicaciones innovadoras orientadas a datos en entornos tecnológicos en continua evolución.

Objetivos

  1. Conèixer els fonaments dels sistemes paral·lels i distribuïts actuals
    Competencias relacionadas: CG1, CB1,
  2. Coneixer i saber usar els elements bàsics que conformen els sistemes paral·lels i distribuïts
    Competencias relacionadas: CT4, CT6, CT7, CB2,
  3. Familiaritzar-se amb els models de programació més habituals dels sistemes paral·lels i distribuïts
    Competencias relacionadas: CE4, CT5, CB5,
  4. Coneixer i poder triar convenientment quin els entorns d'analítica avançada que usen sistemes distribuïts i parallel
    Competencias relacionadas: CE4, CG2, CG4,
  5. Us pràctic per diferents problemes plantejats dels entorns cloud, sistemes paral.lels i distribuïts disponibles actualment per a un enginyer i científic de dades
    Competencias relacionadas: CE4, CT4, CT6, CG1, CB2,

Contenidos

  1. Fundamentos de la supercomputación paralela y distribuida
    En este tema, los alumnos aprenderán conceptos básicos de la computación paralela así como métricas que les ayudarán a evaluar tanto el rendimiento de sus programas como los límites derivados de la propia estructura de la aplicación.
  2. Arquitecturas paralelas y distribuidas
    En este tema, los alumnos aprenderán las principales características de las arquitecturas paralelas y distribuidas que más les pueden influir a la hora de diseñar sus programas de análisis de datos o de entender el rendimiento (o pérdida de rendimiento) de los mismos.
  3. Entornos de ejecución de computación paralela y análisis de datos
    En este tema los alumnos aprenderán los diferentes entornos que principalmente pueden encontrarse al ejecutar tantos las aplicaciones que generar datos como las que los almacenan o analizan. Se hará énfasis en las diferencias entre los tres entornos y en impacto que puede tener en la eficiencia de sus aplicaciones.
  4. Modelos de programación para supercomputadores
    En este tema los alumnos verán los principio básicos de los modelos de programación más utilizados en los entornos HPC: MPI, OpenMP y modelos híbridos MPI+OpenMP. Se darán las herramientas para detectar y gestionar los principales detalles que puedan afectar tanto a la robustez de sus programas como a la eficiencia.

    También se introducirán modelos orientados a co-procesadores que ofrecen una buena eficiencia rendimiento vs. consumo energético y muy utilizados en el análisis de datos.
  5. Software y entorno de ejecución específico para análisis avanzados
    En este tema los alumnos verán en más detalle las características de los modelos de programación y entornos de ejecución para almacenamiento y análisis de datos. Se utilizará como referencia el modelo Apache Spark/Hadoop, como referencia de almacenamiento de datos Cassandra y como herramientas de análisis TensorFlow/keras.
  6. Machine Learning en Supercomputadores: Caso de ejemplo basado en Spark/Cassandra/TensorFlow
    En este tema profundizaremos en un entorno de Machine learning usando como referencia el modelo Apache Spark, como DB key/value Cassandra y como herramienta de análisis TensorFlow. Se explicarán los elementos más importantes de estos tres componentes que puedan afectar en mayor medida tanto al diseño de aplicaciones de machine learning como al almacenamiento de datos y análisis.
  7. Sesiones de laboratorio
    Las sesiones de laboratorio se agruparán en dos proyectos que se irán realizando tanto en las sesiones de laboratorio como en trabajo autónomo. Los dos proyectos estarán relacionados con la programación, análisis y optimización de un caso lo más realista posible en dos entornos: entornos de ejecución paralelo (mpi+openmp, sistemas de colas, etc), utilizados para generar y post-procesar datos, y entornos específicos de gestión y análisis de datos como es Apache Stark + Cassandra + TensorFlow.

Actividades

Actividad Acto evaluativo


Introducción de la asignatura

Durante esta actividad se explicarán los objetivos, contenidos, y funcionamiento de la asignatura

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

Desarrollo del tema "Fundamentos de supercomputación paralela y distribuida"

En este tema, los alumnos aprenderán conceptos básicos de la computación paralela así como métricas que les ayudarán a evaluar tanto el rendimiento de sus programas como los límites derivados de la propia estructura de la aplicación.
Objetivos: 1
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Desarrollo del tema "Arquitecturas paralelas y distribuidas"

En este tema, los estudiantes aprenden las principales características de las arquitecturas paralelas y distribuidas que pueden influir en el diseño de sus programas de análisis de datos y entender el rendimiento (o pérdida de rendimiento) de estos: Se verán , por ejemplo características de sistemas con arquitectura multi-core, hyperthreading, memoria compartida-distribuida, localidad de datos temporal-espacial, tipo storage (local, remoto), tipología redes, etc.
Objetivos: 1 2
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Desarrollo del tema "Entornos de ejecución de computación paralela y análisis de datos"

En este tema los alumnos aprenderán los diferentes entornos que principalmente pueden encontrarse al ejecutar tantos las aplicaciones de generar datos como los que los almacenan o analizan. Se hará énfasis en las diferencias entre los tres entornos y en impacto que puede tener en la eficiencia de sus aplicaciones. Entorno de ejecucion con colas para HPC, cloud computing para DA. Durante este tema se dividirá en entornos HPC y entornos de análisis de datos (DA). También se harán ejercicios de problemas durante las clases de teoría.
Objetivos: 2 4
Contenidos:
Teoría
6h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Desarrollo del tema "Modelos de programación para supercomputadores"

En este tema los alumnos verán los principio básicos de los modelos de programación más utilizados en los entornos HPC: MPI, OpenMP y modelos híbridos MPI + OpenMP. Se darán las herramientas para detectar y gestionar los principales detalles que puedan afectar tanto la robustez de sus programas como la eficiencia. También se introducirán modelos orientados a coprocesadores que ofrezcan un buen rendimiento vs. eficiencia. Consumo de energía y muy usado en el análisis de datos.
Objetivos: 3
Contenidos:
Teoría
6h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Desarrollo del tema "New software para análisis de datos"

En este tema, los estudiantes verán con más detalle las características de los modelos de programación y entornos de ejecución para el almacenamiento y el análisis de datos. El modelo Apache Spark / Hadoop utilizará como referencia, como referencia para el almacenamiento de datos Cassandra y como herramientas de análisis TensorFlow / keras.
Objetivos: 4
Contenidos:
Teoría
7h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
7h

Desarrollo del tema "Machine Learning en Supercomputadores: Caso de uso basado en Spark / Cassandra / TensorFlow"

En este tema profundizaremos en un entorno de Machine learning utilizando como referencia el modelo Apache Spark, como DB key / value Cassandra y como herramienta de análisis TensorFlow. Se explicarán los elementos más importantes de estos tres componentes que puedan afectar en mayor medida tanto el diseño de aplicaciones de machine learning como el almacenamiento de datos y análisis.
Objetivos: 5
Contenidos:
Teoría
4h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Sesiones de laboratorio y entregables: Ejecución de aplicaciones HPC HPC, almacenamiento y anal de datos en contexto de DA (Data Analytics)

Durante los laboratorio se plantearán ejercicios que se harán mayoritariamente durante las clases. Algunos de estos ejercicios tindram como objetivo practicar aspectos concretos tanto de entornos más tradicionales HPC cono de análisis de datos. Otros formarán parte de un ejercicio más grande que se hará al llarge de las sesiones. Habrán dos ejercicios: uno para la parte más HPC y otro más específico para entornos de análisis de datos. En primer entregará justo después de finalizar las sesiones dedicadas a entornos y aplicaciones HPC. El segundo justo después de finalizar las sesiones de entornos de análisis de datos.
Objetivos: 2 3 4 5
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
28h
Aprendizaje dirigido
0h
Aprendizaje autónomo
28h

Metodología docente

Durante el curso habrá cuatro tipos de actividades:

a) Actividades orientadas a la adquisición de conocimientos teóricos. Las actividades teóricas incluyen clases de clases participativas, que explican los contenidos básicos del curso.

b) Las actividades se centraron en la adquisición del conocimiento a través de la experimentación mediante el enfoque "aprendiendo para hacer" en sesiones de laboratorio guiadas por prácticas (e informe final). Algunas sesiones pueden incluir trabajo previo o hacer después de las sesiones dependiendo de
el aprovechamiento de los laboratorios.

c) Pocas sesiones durante las clases teóricas donde se realizarán ejercicios prácticos para realizar evaluaciones numéricas y análisis para la evaluación del rendimiento

d) Dos informes de los ejercicios que se llevarán a cabo en los laboratorios relacionados con entornos y aplicaciones HPC y con entornos de análisis de datos

Método de evaluación

La evaluación de la asignatura se realizará a partir de tres componentes:

- Examen parcial: 40%
- Examen final: 40%
- Laboratorio: 20%

La nota de laboratorio saldrá de la evaluación de los entregables de laboratorio
El examen parcial liberara materia siempre y cuando la nota sea >= 5.0
La nota final se calculará como: La nota serà 0.2*lab+MAX(0.8*final,0.4*final+0.4*parcial).

El examen de re-evaluación será solamente para alumnos que tengan una nota previa <5.0. En este caso, la nota final será:

Nota final: máximo (Examen reevaluación *0.8, Examen parcial*0.4+Examen final *0.4)+Trabajo laboratorio * 0.2

Bibliografía

Básica:

  • Hand-on sessions at GitHub - TORRES, Jordi,
  • Slides of the course - Torres, J, UPC,
  • Understanding supercomputing: with Marenostrum Supercomputer in Barcelona - Torres, J, Universitat Politècnica de Catalunya, Barcelona Supercomputing Center, 2016. ISBN: 9781365376825
    http://cataleg.upc.edu/record=b1490214~S1*cat
  • Hello world en TensorFlow - Torres, J, Universitat Politècnica de Catalunya, Barcelona Supercomputing Centrer, 2016. ISBN: 9781326532383
    http://cataleg.upc.edu/record=b1472879~S1*cat
  • Introducción a Apache Spark: para empezar a programar el big data - Macias, M.; Gómez, M.; Tous, R.; Torres, J, UOC, 2015. ISBN: 9788491160373
    http://cataleg.upc.edu/record=b1467894~S1*cat
  • Articles from Technical Journals in the area - ,

Complementaria:

Capacidades previas

C y Python son los lenguajes de programación de elección para las sesiones de laboratorio de este curso. Se supone que el estudiante tiene un conocimiento básico de Python y C antes de comenzar las clases.