Datos Identificativos 2019/20
Asignatura (*) Herramientas para HPC Código 614973105
Titulación
Mestrado Universitario en Computación de Altas Prestacións / High Performance Computing (Mod. Virtual)
Descriptores Ciclo Periodo Curso Tipo Créditos
Máster Oficial 1º cuatrimestre
Primero Optativa 6
Idioma
Inglés
Modalidad docente Presencial
Prerrequisitos
Departamento Departamento profesorado máster
Enxeñaría de Computadores
Coordinador/a
Padron Gonzalez, Emilio Jose
Correo electrónico
emilio.padron@udc.es
Profesorado
Andrade Canosa, Diego
Padron Gonzalez, Emilio Jose
Correo electrónico
diego.andrade@udc.es
emilio.padron@udc.es
Web http://aula.cesga.es
Descripción general O obxectivo desta materia é que o alumnado se familiarice cos tipos de aplicación máis comúns que son susceptibles de precisar a utilización de HPC, así como que coñezan as ferramentas e as implementacións existentes para cada unha delas, entendendo ademais os retos que hai que abordar para a súa paralelización e mellora do rendemento. Isto permitirá ao estudante adquirir un coñecemento xeral do mundo HPC e das súas diferentes aplicacións.

Ademais, o alumno aprenderá que ferramentas ten á súa disposición para a caracterización do rendemento en contornos HPC, e como se poden empregar estas para abordar o proceso de paralelización e mellora do rendemento dunha aplicación nunha determinada plataforma. Isto permitiralle ao estudante ser capaz de analizar o rendemento esperable desa aplicación nese sistema, identificando ademais os puntos quentes sobre os que centrar os seus esforzos de optimización.

Finalmente, o alumnado aprenderá que alternativas tecnolóxicas existen para despregar unha aplicación HPC de forma rápida e eficiente. Isto permitirá ao alumno ser capaz de distribuír aplicacións HPC de xeito sinxelo e eficaz en distintas contornos.

Competencias del título
Código Competencias del título
A1 CE1 - Definir, evaluar y seleccionar la arquitectura y el software más adecuado para la resolución de un problema
A2 CE2 - Analizar y mejorar el rendimiento de una arquitectura o un software dado
A3 CE3 - Conocer los conceptos y las técnicas básicas de la computación de altas prestaciones
A4 CE4 - Profundizar en el conocimiento de herramientas de programación y diferentes lenguajes en el campo de la computación de altas prestaciones
A5 CE5 - Analizar, diseñar e implementar algoritmos y aplicaciones paralelas eficientes
B1 CB6 - Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en el desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación
B3 CB8 - 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
B4 CB9 - Que los estudiantes sepan comunicar sus conclusiones y los conocimientos y razones últimas que las sustentan a públicos especializados y no especializados de un modo claro y sin ambigüedades
B6 CG1 - Ser capaz de buscar y seleccionar la información útil necesaria para resolver problemas complejos, manejando con soltura las fuentes bibliográficas del campo
B8 CG3 - Ser capaz de mantener y extender planteamientos teóricos fundados para permitir la introducción y explotación de tecnologías nuevas y avanzadas en el campo
B9 CG4 - Ser capaz de planificar y realizar tareas de investigación, desarrollo e innovación en ámbitos relacionados con la computación de altas prestaciones
C1 CT1 - Utilizar las herramientas básicas de las tecnologías de la información y las comunicaciones (TIC) necesarias para el ejercicio de su profesión y para el aprendizaje a lo largo de su vida
C4 CT4 - Valorar la importancia que tiene la investigación, la innovación y el desarrollo tecnológico en el avance socioeconómico y cultural de la sociedad

Resultados de aprendizaje
Resultados de aprendizaje Competencias del título
El alumno conocerá los principales tipos de aplicaciones existentes en los que se suelen aplicar técnicas de HPC. AP1
AP2
BP1
BP6
CP1
El alumno aprenderá a utilizar herramientas para caracterizar y representar el rendimiento de una aplicación. AP3
AP4
BP3
BP9
CP4
El alumno aprenderá a usar herramientas para la compilación, generación y despliegue de software en entornos HPC. AP3
AP5
BP1
BP4
BP8
CP1

Contenidos
Tema Subtema
Estudio de los principales tipos de aplicación HPC. Para cada tipo se verá: 1. Descripción formal del problema.
2. Retos para su paralelización y mejora del rendimiento.
3. Soluciones existentes.
Herramientas para la caracterización y representación del rendimiento de aplicaciones HPC. 1. Uso de herramientas para la caracterización del rendimiento de aplicaciones, tales como monitores software o contadores hardware.
2. Detección de puntos calientes sobre los que incidir en el proceso de optimización.
3. Aplicación de modelos de rendimiento a este proceso.
4. Herramientas para la representación del rendimiento de una aplicación.
Herramientas para la compilación, generación y despliegue de software HPC. 1. Proceso de compilación, optimización y generación de código en un compilador.
2. Optimización del código a través del compilador.
3. Paralelización y vectorización automáticas.
4. Herramientas para la construcción del software.
5. Uso de contenedores para facilitar el despliegue de aplicaciones HPC.

Planificación
Metodologías / pruebas Competéncias Horas presenciales Horas no presenciales / trabajo autónomo Horas totales
Lecturas A3 B1 C4 0 23 23
Prácticas de laboratorio A1 A2 A4 A5 C1 4 66 70
Trabajos tutelados B3 B4 B6 B8 B9 0 54 54
Prueba mixta B4 B6 2 0 2
 
Atención personalizada 1 0 1
 
(*)Los datos que aparecen en la tabla de planificación són de carácter orientativo, considerando la heterogeneidad de los alumnos

Metodologías
Metodologías Descripción
Lecturas Lectura de material didáctico, visionado de vídeos y consulta de material multimedia. Instrucción programada a través de materiales docentes, especialmente diseñados para un aprendizaje autónomo y asíncrono, con un peso importante de las referencias a las fuentes documentales empleadas en los distintos contenidos.
Prácticas de laboratorio Realización de prácticas de forma autónoma con seguimiento del profesorado, en las que se realizan tareas dirigidas que permitan al alumno familiarizarse desde un punto de vista práctico con los contenidos expuestos en las clases teóricas.
Trabajos tutelados Realización de trabajos, en los que el alumno tiene que emplear los conocimientos adquiridos para resolver distintos problemas de forma autónoma.
Prueba mixta Prueba escrita en la que el alumno tiene que mostrar que ha adquirido las competencias propias de la asignatura a través de la respuesta a preguntas teóricas y de la resolución de problemas.

Atención personalizada
Metodologías
Prácticas de laboratorio
Trabajos tutelados
Descripción
La atención personalizada estará garantizada en la realización de las prácticas de laboratorio y de los trabajos tutelados, siendo imprescindible para dirigir a los alumnos en el desarrollo de su trabajo. Esta atención personalizada sirve, además, para validar y evaluar el trabajo realizado por los alumnos en las distintas fases del desarrollo, hasta su finalización.

Por otra parte, se recomienda a los alumnos el aprovechamiento de las horas de tutoría individual como ayuda complementaria.

Evaluación
Metodologías Competéncias Descripción Calificación
Prueba mixta B4 B6 Prueba escrita en la que el alumno tiene que mostrar que ha adquirido las competencias propias de la asignatura mediante la repuesta a preguntas teóricas y la resolución de problemas. 30
Trabajos tutelados B3 B4 B6 B8 B9 Realización de trabajos, en los que el alumno tiene que emplear los conocimientos adquiridos para resolver distintos problemas de forma autónoma. 70
 
Observaciones evaluación

Fuentes de información
Básica
[1] Computer Architecture: A Quantitative Approach (5th or 6th Ed.). John L. Hennessy, David A. Patterson. Morgan Kaufmann. ISBN 978-0123838728 (5th Ed. 2011) 978-0128119051 (6th Ed. 2017)
[2] Performance Tuning of Scientific Applications. David H. Bailey, Robert F. Lucas, Samuel Williams. CRC Press. ISBN 978-1439815694
Complementária

[3] Intel® C++ Compiler Developer Guide and Reference https://software.intel.com/cpp-compiler-developer-guide-and-reference

[4] A Guide to Vectorization with Intel® C++ Compilers https://software.intel.com/sites/default/files/m/4/8/8/2/a/31848-CompilerAutovectorizationGuide.pdf

[5] Intel® VTune™ Amplifier Help https://software.intel.com/en-us/vtune-amplifier-help

[6] Free Software Foundation, Inc.: Using the GNU Compiler Collection (GCC). https://gcc.gnu.org/onlinedocs


Recomendaciones
Asignaturas que se recomienda haber cursado previamente
Programación Paralela/614473102

Asignaturas que se recomienda cursar simultáneamente

Asignaturas que continúan el temario

Otros comentarios
Debido a la fuerte interrelación entre la parte teórica y la parte práctica, y á la progresividad en la presentación de conceptos muy relacionados entre si en la parte teórica, es recomendable dedicar un tiempo de estudio o un repaso diario.

En esta materia se hará un uso intensivo de herramientas de comunicación en línea: videoconferencia, correo-e, chat, etc.


(*) La Guía Docente es el documento donde se visualiza la propuesta académica de la UDC. Este documento es público y no se puede modificar, salvo cosas excepcionales bajo la revisión del órgano competente de acuerdo a la normativa vigente que establece el proceso de elaboración de guías