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