Guía docente de Arquitectura y Computación de Altas Prestaciones (Especialidad Ingeniería de Computadores) (296113L)
Grado
Rama
Módulo
Materia
Year of study
Semestre
ECTS Credits
Tipo
Profesorado
Teórico
Práctico
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, especialmente las asignaturas "Arquitectura de Computadores" y "Sistemas Concurrentes y Distribuidos".
En el caso de utilizar herramientas de IA para el desarrollo de la asignatura, el estudiante debe adoptar un uso ético y responsable de las mismas. Se deben seguir las recomendaciones del CEPRUD.
Breve descripción de contenidos (Según memoria de verificación del Grado)
- 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
Tema 1. Arquitecturas paralelas
- Clasificaciones de arquitecturas
- Evaluación de prestaciones: Isoeficiencia, Ley de Amdahl, Ley de Gustafson
Tema 2. Modelos de programación paralela adaptados a la arquitectura
- Encontrar concurrencia
- Patrones de algoritmos paralelos
- Estructuras disponibles
- Algoritmos comunes para HPC
Tema 3. Redes de interconexión
- Clasificación de los tipos de redes de interconexión
- Estructura general del sistema
- Análisis de prestaciones
- Diseño de redes: Niveles de servicio
- Topología y clasificación
- Técnicas de conmutación
- Control de flujo
- Encaminamiento
Práctico
Seminarios
- Herramientas de paralelismo mediante paso de mensajes
- Unidades de procesamiento gráfico (GPUs)
- Computación de propósito general en GPUs
- Herramientas de computación cuántica
Prácticas de laboratorio
- Paralelización de algoritmos con MPI
- Aceleración de algoritmos con CUDA
- Desarrollo de circuitos cuánticos
Bibliografía
Bibliografía fundamental
- J. Ortega Lopera, M. Anguita López, y A. Prieto Espinosa, Arquitectura de computadores, 1ª ed., 2ª reimp. Madrid: Paraninfo, 2006.
- J. Levesque y G. Wagenbreth, High Performance Computing: Programming and Applications. New York: Chapman and Hall/CRC, 2010. doi: 10.1201/b10442.
- L. T. Yang y M. Guo, Eds., High-Performance Computing: Paradigm and Infrastructure, 1.ª ed. Wiley, 2005. doi: 10.1002/0471732710.
- G. Hager y G. Wellein, Introduction to high performance computing for scientists and engineers. en Chapman & Hall/CRC computational science series, no. 7. Boca Raton London New York: CRC Press, Taylor & Francis Group, 2011. doi: 10.1201/EBK1439811924.
- T. G. Mattson, B. A. Sanders, B. Massingill, y B. Massingill, Patterns for parallel programming, 6. printing. en The software patterns series. Boston Munich: Addison-Wesley, 2010.
Bibliografía complementaria
- P. S. Pacheco y M. Malensek, An introduction to parallel programming, Second edition. Cambridge: Morgan Kaufmann Publishers, 2022.
- J. Sanders y E. Kandrot, CUDA by Example: An Introduction to General-Purpose GPU Programming. Addison-Wesley Professional, 2010.
- W. W. Hwu, D. B. Kirk, y I. E. Hajj, Programming Massively Parallel Processors: A Hands-on Approach. Elsevier Science, 2022.
Enlaces recomendados
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).
- MD03. Seminarios (Debates, Demos, Exposición de Trabajos Tutelados, Conferencias, Visitas Guiadas, Monografías).
- MD04. Actividades no presenciales Individuales.
- MD05. Actividades no presenciales Grupales.
- MD06. Tutorías Académicas.
Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)
Evaluación Ordinaria
Todo lo relativo a la evaluación se regirá por la normativa sobre evaluación y calificación de los estudiantes vigente en la Universidad de Granada. El sistema de calificaciones se expresará mediante calificación numérica de acuerdo con lo establecido en el art. 5 del R. D 1125/2003, de 5 de septiembre, por el que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y validez en el territorio nacional.
La metodología de evaluación ordinaria es la evaluación continua, que en esta asignatura se compone de los siguientes instrumentos de evaluación, ponderaciones y notas mínimas exigidas:
| Actividades Formativas | Ponderación | Mínimo | Máximo | |
|---|---|---|---|---|
| Parte teórica | Prueba final | 35% | 2 | 3,5 |
| Actividades grupales | 10% | 1 | ||
| Asistencia a clase y participación | 5% | 0,5 | ||
| Parte práctica | Prácticas de laboratorio | 50% | 2 | 5 |
Obsérvese que tener un mínimo supone que es obligatorio realizar la prueba final para poder aprobar la asignatura. Esta prueba teórica tendrá lugar al final del semestre en la fecha que fije el centro. La calificación en Acta para quien, no habiendo superado alguno de los mínimos de las partes teórica o práctica, alcance una puntuación superior a 5 al sumar la nota de ambas partes, será igual a 4,9 (suspenso).
Evaluación Extraordinaria
Para la evaluación extraordinaria se utilizará la evaluación única final.
Si en la convocatoria ordinaria se hubiese alcanzado el mínimo exigido en alguna de las partes (teórica o práctica), el estudiante no tiene la obligación de presentarse a esa parte en la convocatoria extraordinaria, usándose en ese caso la calificación obtenida para dicha parte en la convocatoria ordinaria.
Evaluación única final
Además de la evaluación continua, para la convocatoria ordinaria el alumno puede optar por la evaluación de la asignatura mediante una única prueba final, que se celebrará el día indicado por el centro para tal efecto y constará de las siguientes partes, ponderaciones y notas mínimas exigidas:
| Prueba escrita | Ponderación | Mínimo | Máximo |
|---|---|---|---|
| Parte teórica | 50% | 2 | 5 |
| Parte práctica | 50% | 2 | 5 |
Esta prueba escrita tendrá lugar al final del semestre en la fecha que fije el centro. La calificación en Acta para quien, no habiendo superado alguno de los mínimos de las partes teórica o práctica, alcance una puntuación superior a 5 al sumar la nota de ambas partes, será igual a 4,9 (suspenso).
Software Libre
- Compiladores para código C.
- Compiladores para código MPI.