Herramientas y Modelos de Programación Paralela

Usted está aquí

Créditos
6
Tipos
Complementaria de especialidad (Computación de Altas Prestaciones)
Requisitos
Esta asignatura no tiene requisitos
Departamento
AC
En este curso se presentan los conceptos principales detrás de los modelos de programación paralelos y su implementación. El curso analiza el papel del programador, del compilador, el entorno de ejecución y el sistema operativo en la búsqueda de entornos de programación productivos y eficientes en su implementación. El curso también describe las herramientas necesarias para entender el comportamiento de las aplicaciones paralelas cuando se ejecutan en arquitecturas de supercomputación actuales (basadas en un conjunto de nodos de memoria distribuida, cada uno construido a partir de los actuales chips con múltiples núcleos y/o aceleradores). El curso tiene un carácter muy práctico con tareas de análisis y paralelización en las que se usarán diferentes herramientas (Extrae, Paraver y Dimemas) y modelos de programación (OpenMP, OmpSs, MPI o CUDA), adentrándonos en su implementación.

Profesorado

Responsable

  • Jesus Jose Labarta Mancho ( )

Horas semanales

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

Competencias

Competencias Técnicas de cada especialidad

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.
  • 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

  • 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.

Competencias Transversales

Básicas

  • CB7 - Que los estudiantes sean capaces de integrar conocimientos y enfrentarse a la complejidad de formular juicios a partir de una información que, siendo incompleta o limitada, incluya reflexiones sobre las responsabilidades sociales y éticas vinculadas a la aplicación de sus conocimientos y juicios
  • 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.

Contenidos

  1. Conceptos básicos en programación paralela y análisis de rendimiento.
    Conocimiento previo necesario para seguir el curso de programación paralela avanzada. Problemas en la programación de arquitecturas multinúcleo. Introducción general de las principales técnicas y características básicas de las actuales herramientas de análisis de rendimiento.
  2. Programación avanzada de memoria compartida y distribuida: OpenMP y MPI.
    Resumen de las características básicas en OpenMP y MPI. Características avanzadas en OpenMP, MPI y programación híbrida.
  3. Programación avanzada en flujo de datos y paradigmas innovadores en arquitecturas basadas en aceleradores.
    Paradigmas de flujo de datos (OmpSs). Explotación del paralelismo en tiempo de ejecución y ocultación de la arquitectura. Programación paralela avanzada usando aceleradores: CUDA, OpenCL, OpenACC, ...
  4. Adquisición de datos y analitica de rendimiento.
    Traceo de aplicaciones secuenciales y paralelas. Procesado de trazas y analitica de rendimiento.
  5. Modelos y predicción de rendimiento.
    Modelos de rendimiento paralelo basados en trazas. Parámetros de la arquitectura: CPU, memoria, interconexión.
  6. Análisis y optimización de aplicaciones reales
    Análisis de dos aplicaciones grandes (secuenciales y/o paralelas) y optimización usando paradigmas de programación híbrida (flujo de datos, memoria compartida y distribuida y aceleradores).

Metodología docente

Para la parte dedicada a modelos de programación, clases teóricas para entender los conceptos tras los modelos de programación paralela para las arquitecturas de supercomputación actuales. A esto le seguirá una introducción general de las técnicas principales usadas y las características básicas de las herramientas más importantes. Las clases de laboratorio empezarán con una introducción de las características avanzadas de los modelos de programación más usados y el uso de herramientas en algunos ejemplos sencillos. Después, el estudiante se enfrentará con algunos códigos relativamente grandes que tendrán que ser analizados con las diferentes herramientas y optimizados usando modelos de programación híbridos.

Método de evaluación

La evaluación del curso se basará en una serie de trabajos prácticos. Al menos dos aplicaciones principales deberán ser evaluadas por cada estudiante. Por lo menos una de las aplicaciones estará en un área en la que el estudiante no ha sido expuesto. Se requerirá un informe detallado de análisis de los “problemas” de rendimiento de cada aplicación, incluyendo una cuantificación detallada de su importancia y sugerencias de maneras potenciales de superarlos.