Supercomputación para Aplicaciones Exigentes

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
Este curso cubre la explotación de la supercomputación para una variedad de aplicaciones científicas y de ingeniería. Los contenidos abarcan varios dominios de aplicación tanto en las áreas numéricas como no numéricas.

Profesorado

Responsable

  • Carlos Alvarez Martinez ( )

Otros

  • Daniel Jimenez Gonzalez ( )
  • Josep Larriba Pey ( )
  • Josep Ramon Herrero Zaragoza ( )

Horas semanales

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

Competencias

Competencias Técnicas de cada especialidad

Advanced computing

  • CEE3.3 - Capacidad para entender las necesidades computacionales de problemas de disciplinas distintas de la informática y efectuar contribuciones significativas en equipos multidisciplinares que usen la computación.

High performance computing

  • CEE4.2 - Capacidad de analizar, evaluar, diseñar y optimizar software considerando la arquitectura y de proponer nuevas técnicas de optimización.

Específicas comunes

  • CEC3 - Capacidad para aplicar soluciones innovadoras y realizar avances en el conocimiento que exploten los nuevos paradigmas de la Informática, particularmente en entornos distribuidos.

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.
  • CG3 - Capacidad para el modelado matemático, cálculo y diseño experimental en centros tecnológicos y de ingeniería de empresa, particularmente en tareas de investigación e innovación en todos los ámbitos de la Informática.
  • CG5 - Capacidad para aplicar soluciones innovadoras y realizar avances en el conocimiento que exploten los nuevos paradigmas de la Informática, particularmente en entornos distribuidos.

Objetivos

  1. El estudiante debe ser capaz de comprender la complejidad de los diferentes algoritmos, identificar las partes computacionalmente intensivas de una simulación o procesamiento de datos, y decidir qué partes necesitan optimizarse y paralelizarse.
    Competencias relacionadas: CEE3.3, CG1, CG3,
  2. El estudiante debe ser capaz de diseñar e implementar algoritmos eficientes de simulación paralela y procesamiento de datos usando un modelo de programación paralelo.
    Competencias relacionadas: CEC3, CEE4.2, CG1, CG5,
  3. El estudiante debe ser capaz de evaluar los diferentes compromisos (robustez, coste computacional, escalabilidad) para seleccionar un algoritmo específico para un problema de simulación o procesamiento de datos
    Competencias relacionadas: CG1, CEE3.3,

Contenidos

  1. Introducción
    - Introducción: descripción general
    - El método científico moderno
    - Simulación y optimización
    - HPC vs. HTC
    - Simulaciones numéricas
    - Límites de la paralelización
    - Evolución y límites de los sistemas HPC
  2. Introducción a las Simulaciones Numéricas
    - De modelos a algoritmos
    - Discretización y PDE
    - Tipo de PDEs: elípticas, parabólicas, hiperbólicas
    - Del problema a las matemáticas y la solución
    - Esquemas numéricos: Explicit vs Implicit
    - Diferencias finitas y elementos finitos
  3. Resolución directa de sistemas lineales de ecuaciones a gran escala
    - Sistemas triangulares y paralelización
    - Eliminación de Gauss
    - Factorización LU
    - Métodos de particionamiento
    - HPL
  4. Resolución iterativa de sistemas lineales de ecuaciones a gran escala
    - Métodos directos vs iterativos
    - Jacobi
    - Paralelización de métodos iterativos
    - Gauss-Seidel y SOR
    - Metodos de Krylov y precondicionamiento: HPCG
    - Software para métodos numéricos: BLAS, LAPACK, etc.
  5. Casos prácticos de sistemas numéricos
    - Modelos de programación en paralelo
    - Paralelismo y granularidad
    - Paralelismo de bloques
    - Resolución sistemas dispersos
  6. Introducción a los problemas de ML
    - Introducción a las operaciones comunes de las DNNs
    - Aplicaciones de DNNs más comunes
    - Arquitecturas para DNNs
    - Optimizaciones para DNNs
    - DNNs y precisión
    - Paralelismo en DNNs
  7. Alineación de secuencia
    Se trata de una forma de ordenar las secuencias de ADN, ARN o proteína para identificar regiones de semejanza que pueden ser consecuencia de relaciones funcionales, estructurales o evolutivos entre las secuencias.
    Las estrategias de búsqueda, puntuación y de paralelización son importantes para superar este reto.
  8. Casos prácticos
    - DNNs y precisión
    - Paralelismo en DNNs
    - Algoritmos se Sequence Alignment
  9. Introducción al kernel de DBMSs y la ejecución de consultas en tales sistemas
    Este tema tiene como objetivo comprender las diferentes capas de software de un DBMS y cómo interactúan, las diferentes complejidades que encarnan y como su interacción determina el rendimiento de estos DBMS.
  10. Aplicaciones de Big Data y bases de datos de grafos
    Esta sesión tiene el objetivo de presentarles a los estudiantes el diseño de tales sistemas de base de datos Big Data y de grafos, cómo se construyen y cómo su estructura se ve influenciada por la estructura de sus diferentes capas de software.
  11. Benchmarking para bases de datos
    El benchmarking es uno de los problemas más importantes en el diseño y la evolución de la base de datos. Esta parte del curso será diseñada para comprender los diferentes esfuerzos realizados en benchmarking de EEUU y Europa para bases de datos relacionales y grafos.
  12. Casos prácticos de Big Data
    Casos prácticos de Big Data

Actividades

Actividad Acto evaluativo


Introducción

Siga las conferencias, estudiar los materiales y las prácticas.
  • Teoría: Introducción: descripción general El método científico moderno Simulación y optimización HPC vs. HTC Simulaciones numéricas HPC = Algoritmos + Arquitectura + Modelo de programación Límites de la paralelización Evolución y límites de los sistemas HPC
  • Aprendizaje autónomo: Estudiar los contenidos asociados y trabajar en las tareas.
Objetivos: 1
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h

Parte I: Aplicaciones Numéricas

Siga las conferencias, estudie los materiales y las prácticas.
  • Teoría: 1. Introducción a las simulaciones numéricas - De modelos a algoritmos - Discretización y PDE - Tipos de PDE: elípticas, parabólicas, hiperbólicas - Del problema a las matemáticas y la solución - Problemas de valor inicial y valor límite - Esquemas numéricos: explícitos frente a implícitos - Diferencias finitas y elementos finitos 2. Resolución directa de sistemas lineales de ecuaciones a gran escala - Sistemas triangulares y paralelización - Eliminación de Gauss - Factorización LU - Métodos de particionamiento - HPL 3. Resolución iterativa de sistemas lineales de ecuaciones a gran escala - Métodos directos frente a iterativos - Jacobi - Paralelización de métodos iterativos - Gauss-Seidel y SOR - Métodos de Krylov y preacondicionamiento: HPCG - Software para métodos numéricos: BLAS, LAPACK, etc.
Objetivos: 1 2 3
Contenidos:
Teoría
8h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Laboratorio de aplicaciones numéricas



Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
8h
Aprendizaje dirigido
2h
Aprendizaje autónomo
12h

Entregable: asignación en aplicaciones numéricas

Asignación para la parte de Aplicaciones Numéricas. Para ser entregado en Racó.
Objetivos: 1 2 3
Semana: 6
Tipo: entrega
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Parte II: Aplicaciones no numéricas: ML y Bioinformática

Sigue las clases magistrales, estudia los materiales y prácticas
  • Teoría: Principios de los problemas de IA - Introducción a las operaciones comunes de las DNN - Aplicaciones DNN más comunes - Arquitecturas para DNN - Optimizaciones para DNN Alineación de secuencia
Objetivos: 1 2 3
Contenidos:
Teoría
10h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Laboratorio de aplicaciones no numéricas


  • Laboratorio: Análisis con profilining/timing, análisis de dependencies y paralelización usando un modelo de programación paralela.

Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
6h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Entregable: Problema no numérico


Objetivos: 1 2 3
Semana: 10
Tipo: entrega
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Part III: Problemas de Big Data

Siga las conferencias, estudie los materiales y las prácticas.
  • Teoría: Introducción al kernel de DBMSs y la ejecución de consultas en tales sistemas Aplicaciones de Big Data y bases de datos de grafos Benchmarking para bases de datos
  • Aprendizaje autónomo: Estudiar los contenidos asociados y trabajar en las tareas.

Contenidos:
Teoría
10h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Laboratorio Big Data



Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
6h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h

Entregable de Big Data


Objetivos: 1 2 3
Semana: 15
Tipo: entrega
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Metodología docente

Durante el curso se realizarán dos tipos de actividades:

a) Actividades centradas en la adquisición de conocimientos teóricos.
b) Actividades centradas en la adquisición de conocimientos mediante experimentación con la implementación y evaluación empírica en el laboratorio de los mecanismos explicados a nivel teórico.


Las actividades teóricas incluyen clases expositivas participativas donde se explican los contenidos básicos del curso. Las actividades prácticas incluyen seminarios de laboratorio usando el ordenador portátil del alumno/a, donde los alumnos implementan los mecanismos descritos en las clases expositivas. Los seminarios requieren de una preparación previa mediante la lectura del enunciado y la documentación de apoyo, y una elaboración posterior de las conclusiones obtenidas en un informe.

Método de evaluación

El curso se evaluará con una nota parcial por bloque de contenidos (Numéricos, No numéricos y Big Data). Cada bloque pesará igual en la nota final:

Nota = A1 / 3 + A2 / 3 + A3 / 3

Dónde

Ai: = Nota del bloque i (i de 1 a 3)

y

- Cada parte del curso (bloque) tiene algunos entregables cortos y parciales (PD) y un entregable del proyecto final (FPD).

Bibliografía

Básica:

Complementaria:

Web links

Capacidades previas

Comprensión básica de las arquitecturas paralelas, incluidos los sistemas multiprocesador de memoria compartida y distribuida.

Habilidades de programación útiles de algún modelo de programación paralela.