Pasar al contenido principal

Supercomputación para Aplicaciones Exigentes

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

Otros

Horas semanales

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

Competencias

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.
  • 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
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    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
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    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
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    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ásico

    Complementario

    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.