Guía docente de Arquitectura y Computación de Altas Prestaciones (Especialidad Ingeniería de Computadores) (296113L)

Curso 2022/2023
Fecha de aprobación: 15/06/2022

Grado

Grado en Ingeniería Informática

Rama

Ingeniería y Arquitectura

Módulo

Formación de Especialidad 3: Ingeniería de Computadores

Materia

Sistemas de Cómputo de Altas Prestaciones

Curso

3

Semestre

2

Créditos

6

Tipo

Obligatoria

Profesorado

Teórico

Nicolás Calvo Cruz. Grupo: A

Práctico

Nicolás Calvo Cruz Grupo: 1

Tutorías

Nicolás Calvo Cruz

Email
  • Miércoles de 09:00 a 15:00 (Pedir Cita por Correo)

Prerrequisitos y/o Recomendaciones

Se recomienda la superación de los contenidos y adquisición de competencias de las materias de formación básica y de rama, en especial la asignatura “Arquitectura de Computadores” y “Sistemas Concurrentes y Distribuidos”

Breve descripción de contenidos (Según memoria de verificación del Máster)

  • Arquitecturas para computación de altas prestaciones.
  • Programación paralela y distribuida (herramientas, paradigmas, modelos, ...).
  • Red de interconexión en plataformas de altas prestaciones.
  • Evaluación de prestaciones.

Competencias

Competencias Generales

  • CG06. Capacidad para concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes.

Competencias Transversales

  • CT01. Capacidad de organización y planificación así como capacidad de gestión de la Información. 
  • CT02. Capacidad para tomar decisiones basadas en criterios objetivos (datos experimentales, científicos o de simulación disponibles) así como capacidad de argumentar y justificar lógicamente dichas decisiones, sabiendo aceptar otros puntos de vista. 

Resultados de aprendizaje (Objetivos)

Objetivos formativos particulares

  • Distinguir entre los diferentes tipos de plataformas de altas prestaciones. Identificar las características de una plataforma de altas prestaciones.
  • Distinguir entre los diferentes paradigmas de programación de arquitecturas de altas prestaciones.
  • Relacionar los paradigmas de programación con el hardware que lo implementa más directamente.
  • Reconocer y utilizar eficientemente los diferentes tipos de herramientas de programación de plataformas paralelas y distribuidas (compiladores, bibliotecas de funciones, lenguajes, directivas, …) y asociar herramientas de programación con su tipo.
  • Distinguir entre procesamiento paralelo y procesamiento distribuido y asociarlo a las herramientas de programación que se utilizan para implementarlo.
  • Generar código adaptado a la arquitectura en la que se va a ejecutar siguiendo una metodología concreta de diseño.
  • Depurar, optimizar y evaluar código para arquitecturas de altas prestaciones. Identificar posibles problemas en la ejecución y proponer posibles soluciones.
  • Explicar los conceptos de escalabilidad y eficiencia. Estudiar la escalabilidad de un sistema.
  • Distinguir y reconocer conceptos habituales en computación de altas prestaciones (ganancia en velocidad, ganancia escalable, isoeficiencia, etc.)
  • Explicar la organización y las tareas básicas de los componentes de una red de interconexión de altas prestaciones (interfaz de red, conmutadores y enlaces).
  • Describir las partes en las que se divide el diseño o análisis de una red de interconexión entre nodos de procesamiento en una plataforma de altas prestaciones.
  • Describir las alternativas de implementación de control de flujo, técnicas de conmutación, encaminamiento y topología en redes de interconexión entre nodos de una plataforma de altas prestaciones.
  • Evaluar las prestaciones de una red de interconexión de altas prestaciones.
  • Analizar críticamente las listas de computadores de altas prestaciones y su evolución.

Objetivos formativos de carácter general (Competencias según BOE de 4 de Agosto de 2009)

  • Describir las alternativas de implementación de control de flujo, técnicas de conmutación, encaminamiento y topología en redes de interconexión entre nodos de una plataforma de altas prestaciones.
  • Evaluar las prestaciones de una red de interconexión de altas prestaciones.
  • Analizar críticamente las listas de computadores de altas prestaciones y su evolución.

Programa de contenidos Teóricos y Prácticos

Teórico

  1. Arquitecturas MIMD.
    1. Clasificaciones de arquitecturas MIMD.
    2. Evaluación de prestaciones: Isoeficiencia, Ley de Amdahl, Ley de Gustafson.
  2. Modelos de Programación Paralela adaptados a la arquitectura.
    1. Encontrar Concurrencia.
    2. Patrones de Algoritmos Paralelos.
    3. Estructuras Disponibles.
    4. Algoritmos comunes para HPC.
  3. Redes de Interconexión.
    1. Clasificación de los tipos de Redes de Interconexión.
    2. Estructura general del sistema.
    3. Análisis de Prestaciones.
    4. Diseño de redes: Niveles de servicio.
    5. Topología y clasificación.
    6. Técnicas de conmutación.
    7. Control de flujo.
    8. Encaminamiento.

Práctico

  • Práctica 1: Paralelización de un algoritmo base: MPI
  • Práctica 2: Paralelización de un algoritmo base II: MPI. Análisis de Rendimiento.
  • Práctica 3: Paralelización de un algoritmo base: PThreads.
  • Práctica 4: Paralelización de un algoritmo base: CUDA. Análisis de Rendimiento.
  • Práctica 5: Paralelización de un algoritmo base II: CUDA. Análisis de Rendimiento.

Seminarios:

  • Seminario práctico 1: Herramientas de programación paralela: MPI.
  • Seminario práctico 2: Herramientas de programación paralela: PThreads
  • Seminario práctico 3: Herramientas de programación paralela: GPU's
  • Seminario práctico 4: Herramientas de programación paralela: CUDA

Bibliografía

Bibliografía fundamental

  • Ortega, M. Anguita, A. Prieto. Arquitectura de Computadores. Thomson, 2005. ESIIT/C.1 ORT arq Laurence T. Yang, Minyi Guo. High-Performance Computing: Paradigm and Infrastructure. Wiley-Interscience, 2005.
  • Georg Hager, Gerhard Wellein. Introduction to High Performance Computing for Scientistis and Engineers. CRC Press, A Chapman & Hall Book. ISBN: 978-1-4398-1192-4, 2011
  • Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill. Patterns For Parallel Programming. Addison-Wesley. ISBN: 0-321-22811-1, June 2010
  • John Levesque, High Performance Computing. Ahapman & Hall /CRC. ISBN: 978-1-4200-7705. 2011

Bibliografía complementaria

  • Jason Sanders and Edward Kandrot, CUDA by Example An Introduction to General-Purpose GPU Programming. Addison-Wesley ISBN-13: 978-0-13-138768-3
  • P. Pacheco, M. Malensek. An Introduction to Parallel Programming (Second Edition). Morgan Kaufmann. 2018.

Enlaces recomendados

  • Página web de la ETS de Informática y Telecomunicación.
  • Información sobre planes de estudio, horarios, exámenes, foros y eventos en el centro, etc.
  • Página web del departamento de Arquitectura y Tecnología de Computadores. Información sobre profesores, líneas de investigación, otras asignaturas, etc.
  • Página web de la Universidad de Granada. Información sobre otros centros, vicerrectorados, acceso identificado, matrícula, etc.
  • SWAD (Sistema Web de Apoyo a la Docencia). A través de esta plataforma se cubre un amplio espectro de facilidades para la interacción entre el alumnado y el profesorado, entre otras:
  • Información y documentación de asignaturas
  • Evaluación de estudiantes
  • Información y administración de estudiantes y docentes
  • Comunicación entre estudiantes y docentes
  • Estadísticas y control de accesos
  • Enlaces y bibliografía actualizados NVIDIA: Página oficial de NVidia donde se pueden encontrar documentación actualizada sobre CUDA y arquitecturas de GPUs.

Metodología docente

  • MD01. Lección Magistral (Clases Teóricas-Expositivas) 
  • MD02. Actividades Prácticas (Resolución de Problemas, Resolución de Casos Prácticos, Desarrollo de Proyectos, Prácticas en Laboratorio, Taller de Programación, Aula de Informática, Prácticas de Campo). 

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)

Evaluación Ordinaria

Con objeto de evaluar la adquisición de los contenidos y competencias a desarrollar en el módulo, se utilizará un sistema de evaluación diversificado, seleccionando las técnicas de evaluación más adecuadas para poner de manifiesto los diferentes conocimientos y capacidades adquiridos por el alumnado al cursar la materia.

La calificación final que aparecerá en el Acta será un número comprendido entre 0 y 10 con una precisión de un dígito decimal. En función de la convocatoria (ordinaria o extraordinaria), y del tipo de evaluación (continua o evaluación única final), la calificación se obtendrá como se detalla a continuación:

La calificación global corresponderá por tanto a la puntuación ponderada de los diferentes aspectos y actividades que integran el sistema de evaluación. Por tanto, el resultado de la evaluación será una calificación numérica obtenida mediante la suma ponderada de las calificaciones correspondientes a una parte teórica (actividades y evaluación de conocimientos) y una parte práctica.

Porcentajes de evaluación

Clases Teóricas

Evaluación de actividades individuales/grupales realizadas durante el desarrollo de las clases, del trabajo autónomo de cada estudiante en las clases y en el desarrollo, puesta en común y presentación de las actividades propuestas a lo largo del desarrollo de las clases teóricas.

15%
Evaluación de conocimientos adquiridos durante el desarrollo de la asignatura, así como de la aplicación de estos conocimientos a la resolución de problemas a lo largo del desarrollo de la asignatura 35%
Clases Prácticas

Evaluación individual mediante la valoración del profesorado de la entrega de las prácticas propuestas a lo largo del desarrollo de la asignatura, ya sea mediante la documentación generada por el alumnado, como por las explicaciones que el estudiantado acompaña a la entrega de las prácticas propuestas. Cada práctica se evaluará de forma individual e independiente del resto ponderando cada práctica según su importancia y dificultad.

50%

Evaluación Extraordinaria

En la evaluación de la convocatoria extraordinaria se evaluará por separado la parte teórica y la parte práctica. 

La parte teórica se evaluará mediante una prueba escrita que podrá incluir preguntas tipo test, preguntas de respuesta corta o problemas y que se realizará de forma presencial o virtual según sea el escenario docente en la fecha asignada para la evaluación de la convocatoria extraordinaria. La valoración de esta parte constituirá el 50% de la nota final.

La evaluación de la parte práctica se realizará entregando un informe detallado del desarrollo y de los pasos a seguir para la resolución de todas las prácticas de las que consta la asignatura en su parte práctica debiendo el estudiante elegir el formato a utilizar para la realización de dicho informe.  La entrega será el mismo día que se asigne a la evaluación de la parte teórica. La valoración de esta parte constituirá el 50% de la nota final.

Evaluación única final

En la evaluación mediante convocatoria única final se evaluará por separado la parte teórica y la parte práctica. 

La parte teórica se evaluará mediante una prueba escrita que podrá incluir preguntas tipo test, preguntas de respuesta corta o problemas y que se realizará de forma presencial o virtual según sea el escenario docente en la fecha asignada para la evaluación de la convocatoria extraordinaria. La valoración de esta parte constituirá el 50% de la nota final.

La evaluación de la parte práctica se realizará entregando un informe detallado del desarrollo y de los pasos a seguir para la resolución de todas las prácticas de las que consta la asignatura en su parte práctica debiendo el estudiante elegir el formato a utilizar para la realización de dicho informe.  La entrega será el mismo día que se asigne a la evaluación de la parte teórica. La valoración de esta parte constituirá el 50% de la nota final.

Información adicional

Las fechas de entrega del informe de prácticas será la fijada por el calendario de exámenes del centro para cada convocatoria.