Logo UAB
2020/2021

Computación de Altas Prestaciones

Código: 104404 Créditos ECTS: 6
Titulación Tipo Curso Semestre
2503740 Matemática Computacional y Analítica de Datos OB 3 1
La metodología docente y la evaluación propuestas en la guía pueden experimentar alguna modificación en función de las restricciones a la presencialidad que impongan las autoridades sanitarias.

Contacto

Nombre:
Eduardo Cesar Galobardes
Correo electrónico:
Eduardo.Cesar@uab.cat

Uso de idiomas

Lengua vehicular mayoritaria:
catalán (cat)
Algún grupo íntegramente en inglés:
No
Algún grupo íntegramente en catalán:
No
Algún grupo íntegramente en español:
No

Equipo docente

Albert Coca Abelló

Prerequisitos

Aunque no hay prerrequisitos formalmente establecidos y es responsabilidad de la propia asignatura proporcionar a los alumnos un medio para adquirir los conocimientos descritos en el apartado de contenidos de la asignatura, es recomendable: un buen conocimiento de programación, del funcionamiento de un computador, del sistema operativo a nivel de usuario programador y de cómo se envían mensajes por la red (Fonamentos de Computadores, Software del Sistema, Iniciación a la Programación).

Objetivos y contextualización

El objetivo de esta asignatura es conocer los sistemas de cómputo de altas prestaciones y paralelos, sistemas multiprocesador y multicomputadores, paradigmas de programación paralela, aprender a desarrollar aplicaciones con memoria compartida, introducir el concepto de paso de mensajes y aplicaciones en memoria distribuida y analizar las prestaciones de ejecución de estas aplicaciones.

Los conceptos teóricos sobre paradigmas de programación, memoria compartida y paso de mensajes, se refuerza con las sesiones de problemas y prácticas en las que los alumnos aprenden a programar utilizando lenguajes de programación paralela.

Todos los componentes descritos en esta asignatura deben permitir al alumno comprender el funcionamiento de los sistemas de altas prestaciones y paralelos y, hasta cierto punto, ser capaz de realizar un diseño sencillo de una aplicación paralela y evaluar sus prestaciones.

Competencias

  • Diseñar, desarrollar y evaluar soluciones algorítmicas eficientes para problemas computacionales de acuerdo con los requisitos establecidos.
  • Evaluar de manera crítica y con criterios de calidad el trabajo realizado.
  • Implementar y optimizar aplicaciones basadas en las funcionalidades y estructura de los sistemas paralelos, distribuidos y en nube y las redes de computadores e internet.
  • Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio.
  • Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
  • Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
  • Utilizar eficazmente bibliografía y recursos electrónicos para obtener información.

Resultados de aprendizaje

  1. Analizar y evaluar arquitecturas de computadores, incluyendo plataformas paralelas y distribuidas, así como desarrollar y optimizar software para las mismas.
  2. Conocer y aplicar los principios fundamentales y técnicas básicas de la programación paralela, concurrente y distribuida.
  3. Desarrollar y optimizar software para las plataformas paralelas y distribuidas.
  4. Evaluar de manera crítica y con criterios de calidad el trabajo realizado.
  5. Evaluar y analizar la complejidad computacional de las soluciones algorítmicas para poder desarrollar e implementar aquella que garantice el mejor rendimiento.
  6. Implementar soluciones recursivas a problemas de programación.
  7. Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio.
  8. Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
  9. Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
  10. Seleccionar y utilizar las estrategias de programación apropiadas para la resolución de un problema dado.
  11. Utilizar eficazmente bibliografía y recursos electrónicos para obtener información.

Contenido

Tema 1: Introducción a sistemas de altas prestaciones.

Programación avanzada en C. Concurrencia: concepto, condición de carrera, región crítica y mecanismos d'exclusión mútua.

Introducción a los sistemas de altas prestaciones, sistemas paralelos, multiprocesadores y multicomputadores. Ejecución de aplicaciones paralelas en sistemas de altas prestaciones.

Tema 2: Clasificación de paralelismo

SIMD (Single Instruction, Multiple Data), MIMD (Multiple Instruction, Multiple Data). Modelos de aplicaciones paralelas.

Tema 3: Algoritmos paralelos

Definición de algoritmos paralelos. Ejemplos de algoritmos paralelos. Desarrollo de algoritmos paralelos.

Tema 4: Programación paralela

Paradigmas de programación paralela. Aplicaciones basadas en paso de mensajes. Estándar MPI (Message Passing Interface). Aplicaciones basadas en memoria compartida. Estándares OpenMP (Open multiprocessing) y OpenACC (Open Accelerators). Paralelismo en Python. Desarrollo de aplicaciones paralelas utilizando MPI, OpenMP, OpenACC y Python.

Tema 5: Análisis de prestaciones

Análisis de prestaciones de sistemas paralelos. Evaluación de prestaciones de sistemas paralelos. Ejemplos de herramientas de evaluación de prestaciones.

Metodología

En el desarrollo de la asignatura se podrán diferenciar cuatro tipos de actividades docentes:

  • Clases teóricas: exposición en la pizarra de la parte teórica de cada tema del programa. La estructura típica de una clase magistral de este tipo será la siguiente: en primer lugar se hará una introducción donde se presentarán brevemente los objetivos de la exposición y los contenidos a tratar. A continuación se desgranarán los contenidos objeto de estudio, incluyendo exposiciones narrativas, desarrollos formales que proporcionen los fundamentos teóricos, e intercalando ejemplos que ilustren la aplicación de los contenidos expuestos. Finalmente, el/la profesor/a expondrá las conclusiones de los contenidos. Durante todo el curso habrá evaluación continuada de grupos de temas.
  • Clases prácticas: Todos los temas irán acompañados de un lista de problemas que el alumno debe intentar resolver. En este sentido, y a medida que el alumno vaya progresando y profundizando en sus conocimientos, estos problemas serán poco a poco más complejos. Los seminarios serán el foro natural en el que se podrá discutir en común el desarrollo del trabajo práctico, aportando los conocimientos que le faltan al estudiante para llevarlo adelante. La misión de las clases prácticas es hacer de puente entre las clases teóricas y las clases de laboratorio, que promoverá la capacidad de análisis y síntesis, el razonamiento crítico, y que entrenará al estudiante en la resolución de problemas. Aquellos que el/la profesor/a considere de mayor interés o en los que los alumnos/as encuentren mayor dificultad serán corregidos en la pizarra. Antes del comienzo de cada tema de problemas el/la profesor/a podrá proponeruna lista de ejercicios que los alumnos/as deberán resolver.
  • Clases en el laboratorio: La parte práctica de los temas teóricos quedará completada con sesiones de laboratorio, donde el/la alumno/a desarrollará una serie de programas y deberá intentar resolver un problema concreto que recibirá al comenzar el temario. Algunos de estos ejercicios se deberán entregar a la clase en las fechas especificadas. Las prácticas se desarrollarán en grupos de dos o tres alumnos. Las clases incluyen 6 sesiones en el laboratorio, de 2 horas de duración, donde el/la alumno/a realizará el desarrollo de los ejercicios.

Este planteamiento del trabajo está orientado a promover un aprendizaje activo y desarrollar las competencias de capacidad de organización y planificación, comunicación oral y escrita, trabajo en equipo y razonamiento crítico. La calidad de los ejercicios realizados, de su presentación y de su funcionamiento se valorará especialmente.

 

Variaciones de la metodología docente por motivo de la situación sanitaria sobrevenida en 2020:


Durante el 1er semestre del curso 2020-21 está previsto que esta asignatura se haga de forma semi-presencial.

Dada la excepcionalidad de este hecho, no se incluyen en esta guía las condiciones específicas en las que se desarrollará el curso. Al comienzo del curso dispondréis de una planificación adaptada a las circunstancias, la cual podrá ir variando según se vayan desarrollando los acontecimientos.

Actividades

Título Horas ECTS Resultados de aprendizaje
Tipo: Dirigidas      
Prácticas de Laboratorio 10 0,4 1, 4, 5, 2, 3, 6, 9, 10, 11
Seminarios de Problemas 11 0,44 1, 4, 5, 2, 3, 6, 7, 9, 10, 11
Teoría 24 0,96 1, 5, 2, 7, 8, 11
Tipo: Autónomas      
Estudio autónomo 30 1,2 1, 5, 2, 8, 9, 10, 11
Preparación de laboratorios 30 1,2 1, 4, 5, 2, 3, 6, 9, 10, 11
Preparación de seminarios 30 1,2 1, 4, 5, 2, 3, 6, 9, 10, 11

Evaluación

El objetivo del proceso de evaluación es verificar que el alumno ha adquirido los conocimientos y habilidades definidos en los objetivos de la asignatura, así como las competencias.

Se evaluarán cuatro tipos de actividades de manera independiente donde la suma ponderada de ellas dará la nota final. Estas actividades son:

  1. Teoría (T)
  2. Resolución de las prácticas de laboratorio (PL)
  3. Realización de ejercicios prácticos (PA).

La parte de Teoría (T) se evaluará con dos controles parciales individuales durante todo el curso. La nota final de Teoría saldrá de la suma ponderada de los dos controles (0.5 * Control 1 + 0.5 * Control 2). Habrá una segunda oportunidad para recuperar esta parte el día que tengamos asignado en la semana de exámenes de febrero. Se podrán recuperar las partes que no hayan sido superadas en los controles parciales de teoría. La nota mínima para aprobar esta parte es >= 4,5.

La parte de Resolución de prácticas de laboratorio (PL) se evaluará de manera grupal. El número de entregas dependerá de las tecnologías que se incluyan en el curso. La nota final saldrá de la suma ponderada de las entregas (el número de entragas y el peso de cada una de ellas se informará al comienzo del curso). Para aprobar las PL la nota mínima deberá ser> = 4,5. Sólo hay una única oportunidad (no se puede recuperar esta parte).

Los ejercicios prácticos (PA) consistirán en trabajar problemas de programación muy concretos y en algunos casos relacionados con los que se encontrarán en las prácticas de laboratorio. Se quiere que cada estudiante estudie la resolución de un conjunto de problemas concretos de forma aislada al caso más general de la práctica. Dada su naturaleza y objetivo estos ejercicios no son recuperables (no entregarlos o hacerlo tarde sera evaluado con un 0).

La nota final de la asignatura será la suma ponderada de las notas de cada una de las cuatro actividades: Teoría, Resolución de ejercicios prácticos individuales y Resolución de prácticas de laboratorio. El resultado deberá ser >= 5.

En caso de no superar la asignatura por no alcanzar la puntuación mínima en alguno de los apartados (Teoría o Prácticas de Laboratorio), aunque al hacer la media ponderada la nota final fuera igual o superior a 5 la nota que se pondrá en el expediente será de 4,5.

En caso de que la media no llegue a 5 la nota que figurará en el expediente será la nota media obtenida numéricamente.

Si el/la alumno/a entrega cualquier actividad, se entiende que se presenta en la asignatura y será evaluado/a. Si no entrega ninguna actividad, entonces se puede considerar No evaluable.

Otorgar una calificación de matrícula de honor es decisión del profesorado responsable de la asignatura. La normativa de la UAB indica que las MH sólo se podrán conceder a estudiantes que hayan obtenido una calificación final igual o superior a 9.00. Se puede otorgar hasta un 5% de MH del total de estudiantes matriculados.

Las fechas de evaluación continua y entrega de trabajos se publicarán en el campus virtual y pueden estar sujetos a cambios de programación por motivos de adaptación a posibles incidencias; siempre se informará en el campus virtual sobre estos cambios ya que se entiende que el CV es el mecanismo habitual de intercambio de información entre el profesorado y los/las estudiantes.

Para cada actividad de evaluación, se indicará un lugar, fecha y hora de revisión en la que el estudiante podrá revisar la actividad con el/la profesor/a. En este contexto, se podrán hacer reclamaciones sobre la nota de la actividad, que serán evaluadas por el profesorado responsable de la asignatura. Si el/la estudiante no se presenta en esta revisión, 

no se revisará posteriormente esta actividad.

RESUMEN

Si ((T >= 4,5) y (P >= 4,5) entonces

       NF = 0.35 * T + 0.25 * VA +  0,4 * PA + 0.35 * PL

       Si (NF >= 5) entonces APROBADO

       sino SUSPENDIDO

sino SUSPENDIDO

Estudiantes repetidores: Los alumnos repetidores o repetidoras que tengan aprobadas las prácticas de laboratorio pueden pedir la convalidación de esta parte de la asignatura. El resto de actividades de evaluación deberán hacerlas en las mismas condiciones que los/las otros/as estudiantes.

Nota sobre plagios:

Sin perjuicio de otras medidas disciplinarias que se estimen oportunas, y de acuerdo con la normativa académica vigente, las irregularidades cometidas por un estudiante que puedan conducir a una variación de la calificación en una actividad evaluable se calificarán con un cero (0). Las actividades de evaluación calificadas de esta forma y por este procedimiento no serán recuperables. Si es necesario superar cualquiera de estas actividades de evaluación para aprobar la asignatura, esta asignatura quedará suspendida directamente, sin oportunidad de recuperarla en el mismo curso. Estas irregularidades incluyen, entre otros:

  • la copia total o parcial de una práctica, informe, o cualquier otra actividad de evaluación;
  • dejar copiar;
  • presentar un trabajo de grupo no hecho íntegramente por los y las miembros del grupo (aplicado a todos los y lasmiembros, no sólo a los que no han trabajado);
  • presentar como propios materiales elaborados por un tercero, aunque sean traducciones o adaptaciones, y en general trabajos con elementos no originales y exclusivos del estudiante;
  • tener dispositivos de comunicación (como teléfonos móviles, smart watches, bolígrafos con cámara, etc.) accesibles durante las pruebas de evaluación teórico-prácticas individuales (exámenes);
  • hablar con compañeros o compañeras durante las pruebas de evaluación teórico-prácticas individuales (exámenes);
  • copiar o intentar copiar de otros alumnos durante las pruebas de evaluación teórico-prácticas (exámenes);
  • usar o intentar usar escritos relacionados con la materia durante la realización de las pruebas de evaluación teórico-prácticas (exámenes), cuando éstos no hayan sido explícitamente permitidos.

En caso de no superar la asignatura debido a que alguna de las actividades de evaluación no alcanza la nota mínima requerida, la nota numérica del expediente será el valor menor entre 4.5 y la media ponderada de las notas. Con las excepciones de que se otorgará la calificación de "No Evaluable" a los y las estudiantes que no participen en ninguna de las actividades de evaluación, y de que la nota numérica del expediente será el valor menor entre 3.0 y la media ponderada de las notas en caso de que el estudiante haya cometido irregularidades en un acto de evaluación (y por tanto no será posible el aprobado por compensación). En ediciones futuras de esta asignatura, el estudiante que haya cometido irregularidades en un acto de evaluación no se le convalidará ninguna de las actividades de evaluación realizadas.

En resumen: copiar, dejar copiar o plagiar (o el intento de) en cualquiera de las actividades de avaluación equivale a un SUSPENSO,no compensable y sin convalidaciones de partes de la asignatura en cursos posteriores.

 

 

Actividades de evaluación

Título Peso Horas ECTS Resultados de aprendizaje
1r Control individual 17,5% 2 0,08 5, 6, 7, 8, 9, 10
2o Control individual 17,5% 2 0,08 1, 5, 2, 3, 7, 8, 9, 10
Evaluación de seminarios de problemas 25% 6 0,24 1, 4, 5, 2, 3, 6, 10, 11
Prácticas de Laboratorio 40% 5 0,2 1, 4, 5, 2, 3, 6, 8, 9, 10, 11

Bibliografía

 

  • Parallel Programming Concepts and Practice. Bertil Schmidt, Jorge González-Domínguez, Christian Hundt, Moritz Schlarb. Morgan Kaufmann, 2018
  • An Introduction to Parallel Programming, 2nd edition. Peter S. Pacheco. Morgan Kaufmann. 2018
  • Programming Massively Parallel Processors, A Hands-on Approach. David B. Kirk, Wen-mei W. Hwu. Morgan Kaufmann. 3th Edition. 2018
  • Computer Architecture. A quantitative approach. John L. Hennessy, David A. Patterson. Morgan Kaufmann. 6a edición. 2018
  • Introduction to Parallel Computing. A. Grama et alter. Addison Wesley, Second Edition, 2003.
  • Parallel Program Development For Cluster Computing: Methodology, Tools and Integrated  Environments. Edited by J. C. Cunha, P. Kacsuk, S. C. Winter. Nova Science Publishers, Inc., 2001.
  • Parallel Programming with MPI, Peter Pacheco, Morgan Kauffman, 1996
  • OpenACC Programming and Best Practices Guide (https://www.openacc.org/sites/default/files/inline-files/OpenACC_Programming_Guide_0.pdf)