Máster en
Computación de Altas Prestaciones
USC UDC CESGA

Técnicas de Optimización y Paralelización



Coordinador: Basilio B. Fraguela Rodrí­guez - basilio (at) udc.es

Profesores de la Universidade de Santiago de Compostela (USC):
  • Francisco Argüello Pedreira - francisco.arguello (at) usc.es
Profesores de la Universidade da Coruña (UDC):
  • Basilio B. Fraguela Rodrí­guez - basilio (at) udc.es
  • Manuel C. Arenaz Silva - arenaz (at) udc.es


Número de Créditos Europeos (ECTS): 6.

Carácter: Obligatorio.

Unidad Temporal: Cuatrimestre I.

Competencias y resultados del aprendizaje:

El objetivo principal del curso es proporcionar una visión general de los esquemas básicos de optimización de código y paralelización más usados en aplicaciones de todo tipo, con especial énfasis en las científicas y de ingeniería. Se hace una revisión de los núcleos computacionales más comunes en este tipo de aplicaciones, y de sus versiones paralelas, usando MPI y/o OpenMP para cada tipo de algoritmo. Con las competencias adquiridas en esta materia, el egresado tendrá la capacidad de tomar decisiones profesionales y empresariales que permitan mejorar la calidad, el rendimiento y la competitividad de los productos de software de su organización.

Las principales competencias que adquirirá el alumno una vez superada la materia, y su relación con las competencias de la titulación, serán:
Competencias de la materia Relación con las competencias de la titulación
específicas básicas y generales transversales
Aplicar técnicas de optimización para códigos secuenciales que tienen un alto impacto en programas paralelos CE1, CE6 CG2
Aplicar los algoritmos de transformación de programas secuenciales en programas paralelos más utilizados CE1, CE6
Extraer paralelismo mediante el análisis de las características de una aplicación secuencial con objeto de desarrollar una versión paralela CE1, CE6 CG2
Adaptar aplicaciones de forma que tengan un buen rendimiento en computadores paralelos con diferentes arquitecturas CE1, CE6
Comparar y evaluar alternativas de diseño e implementación de aplicaciones paralelas para computadores paralelos con diferentes arquitecturas CE1, CE2, CE6 CB8, CB9 CT6, CT3
Trabajar en equipo CG7,CG8 CT1
Llevar a cabo un aprendizaje autónomo CB10 CT2, CT7


Requisitos previos: Es recomendable cursar Programación Paralela.

Metodología de enseñanza-aprendizaje:

Se pretende desarrollar una materia eminentemente práctica a partir de unos sólidos conceptos teóricos. Para ello en cada tema se partirá de unas clases magistrales en las que se presentan los fundamentos de los conceptos teóricos correspondientes a cada parte para a continuación pasar a las prácticas en equipo particularizadas para cada tema, las cuales permitirán a los alumnos profundizar en los conceptos presentados durante la clase de teoría. Las prácticas se realizarán usando los recursos computacionales del CESGA y de los grupos de investigación participantes en el máster.

Actividades formativas y su relación con las competencias:

Actividades formativas de carácter presencial Número de horas Relación con las competencias
Clases teóricas: impartidas por el profesor y exposición de seminarios 22 CE1, CE2, CE6, CT6
Clases prácticas de laboratorio, resolución de problemas y casos prácticos 26 CE1, CE2, CE6, CB8, CG2, CG7, CT3, CT6
Tutorías programadas: orientación para la realización de los trabajos individuales o en grupo, resolución de dudas y actividades de evaluación contínua 4 CE1, CE2, CE6, CB9, CB10, CG2, CG7, CG8, CT1, CT2
Examen 2 CB9, CT1
TOTAL 54
Actividades formativas de carácter no presencial
Trabajo personal del alumno: consulta de bibliografía, estudio autónomo, desarrollo de actividades programadas, preparación de presentaciones y trabajos 96 CE1, CE2, CE6, CB8, CB9, CB10, CG2, CG7, CG8, CT2, CT6, CT7
TOTAL 96
TOTAL 150


Descriptores de los contenidos:
  • Métricas del rendimiento
  • Particionamiento de datos
  • Distribución de datos
  • Balanceo de la carga
  • Optimización del uso de la memoria
  • Técnicas de paralelización de núcleos computacionales
  • Extracción automática de paralelismo