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
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:
CG1,
CG3,
CEE3.3,
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:
CG1,
CEE4.2,
CEC3,
CG5,
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
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
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
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
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.
Casos prácticos de sistemas numéricos
- Modelos de programación en paralelo
- Paralelismo y granularidad
- Paralelismo de bloques
- Resolución sistemas dispersos
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
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.
Casos prácticos
- DNNs y precisión
- Paralelismo en DNNs
- Algoritmos se Sequence Alignment
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.
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.
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.
Casos prácticos de Big Data
Casos prácticos de Big Data
Actividades
ActividadActo 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.
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.
Asignación para la parte de Aplicaciones Numéricas. Para ser entregado en Racó. Objetivos:123 Semana:
6
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
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.
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).