Última modificación: 13-09-2016 270020 - PAR - Paralelismo Unidad responsable: 270 - FIB - Facultad de Informática de Barcelona Unidad que imparte: 701 - AC - Departamento de Arquitectura de Computadores Curso: 2016 Titulación: GRADO EN INGENIERÍA INFORMÁTICA (Plan 2010). (Unidad docente Obligatoria) GRADO EN INGENIERÍA FÍSICA (Plan 2011). (Unidad docente Optativa) Créditos ECTS: 6 Idiomas docencia: Catalán, Castellano Profesorado Responsable: - Eduard Ayguadé Parra (eduard@ac.upc.edu) Otros: - Daniel Jimenez Gonzalez (djimenez@ac.upc.edu) Gladys Miriam Utrera Iglesias (gutrera@ac.upc.edu) Jordi Tubella Murgadas (jordit@ac.upc.edu) Julian David Morillo Pozo (jmorillo@ac.upc.edu) Lluc Álvarez Martí (lluca@ac.upc.edu) Rosa Maria Badia Sala (rosab@ac.upc.edu) Capacidades previas Las capacidades previas son las definidas por los pre-requisitos de la asignatura. Requisitos - Pre-requisito AC - Pre-requisito EDA - Pre-requisito SO Competencias de la titulación a las cuales contribuye la asignatura Específicas: CT1.1B. Interpretar, seleccionar y valorar conceptos, teorías, usos y desarrollos tecnológicos relacionados con la informática y su aplicación a partir de los fundamentos matemáticos, estadísticos y físicos necesarios. CEFB2. Capacidad para comprender y dominar los fundamentos físicos y tecnológicos de la informática: electromagnetismo, ondas, teoría de circuitos, electrónica y fotónica y su aplicación para la resolución de problemas propios de la ingeniería. CT5.1. Escoger, combinar y explotar diferentes paradigmas de programación, en el momento de construir software, atendiendo a criterios como la facilidad de desarrollo, la eficiencia, la portabilidad y la mantenibilidad. CT5.3. Diseñar, escribir, probar, depurar, documentar y mantener código en un lenguaje de alto nivel para resolver problemas de programación aplicando esquemas algorítmicos y usando estructuras de datos. CT5.6. Demostrar conocimiento y capacidad de aplicación de los principios fundamentales y de las técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real. CT6.2. Demostrar conocimiento, comprensión y capacidad de evaluar la estructura y la arquitectura de los computadores, así como los componentes básicos que los conforman. CT7.2. Evaluar sistemas hardware/software en función de un criterio de calidad determinado. CT8.1. Identificar tecnologías actuales y emergentes y evaluar si son aplicables, y en qué medida, para satisfacer las necesidades de los usuarios. Genéricas: G3. TERCERA LENGUA: Conocer el idioma inglés con un nivel adecuado de forma oral y por escrito, y con 1/9 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270020 - PAR - Paralelismo consonancia con las necesidades que tendrán los graduados y graduadas en ingeniería informática. Capacidad de trabajar en un grupo multidisciplinar y en un entorno multilingüe, y de comunicar, tanto por escrito como de forma oral, conocimientos, procedimientos, resultados e ideas relacionadas con la profesión de ingeniero técnico en informática. Metodologías docentes Las clases de teoría introducen todos los conocimientos, las técnicas, los conceptos necesarios que se ponen en práctica en las horas dedicadas a problemas y de laboratorio, así como con trabajo personal utilizando una colección de problemas. Las dos horas de clases de teoría/problemas se hacen semanalmente. Las dos horas de clase de laboratorio también se hacen semanalmente. El curso utiliza el lenguaje de programación C y principalmente el modelo de programación paralela OpenMP. Objetivos de aprendizaje de la asignatura 1.El alumno debe ser capaz de formular sencillos modelos de rendimiento dada una estrategia de paralelización para una aplicación, que permitan estimar la influencia de los principales aspectos arquitectónicos: numero de elementos de proceso, coste de acceso a los datos, coste de la interacción entre elementos de proceso, entre otros. 2.El alumno debe ser capaz de medir, empleando herramientas de instrumentación, visualización y análisis, el rendimiento alcanzado con la ejecución paralela de una aplicación y detectar los factores que limitan dicho rendimiento: granularidad de tareas, distribución equitativa de carga de trabajo, interacción entre tareas, entre otros. 3.El alumno debe ser capaz de compilar y ejecutar un programa paralelo, utilizando las herramientas básicas a nivel de línea de comandos para medir el tiempo de ejecucion. 4.El alumno debe ser capaz de aplicar optimizaciones sencillas en fragmentos de código paralelo para mejorar su rendimiento en arquitecturas paralelas, atacando los factores que limitan su rendimiento 5.El alumno debe ser capaz de escoger la estrategia de descomposión más apropriada para expresar el paralelismo en una aplicación (tareas, datos). 6.El alumno debe ser capaz de aplicar las técnicas básicas que permiten sincronizar la ejecución paralela, evitando las condiciones de carrera y abrazo mortal, y favoreciendo el solapamiento entre cálculo e interacción, entre otros. 7.El alumno debe ser capaz de implementar en OpenMP la versión paralela de una aplicación secuencial 8.El alumno debe ser capaz de identificar los diferentes tipos de paralelismo que se pueden explotar en una arquitectura de computador (ILP, DLP y TLP dentro de un procesador, multiprocesador y multicomputador) y describir sus principios básicos de funcionamiento. 9.El alumno debe ser capaz de clasificar los diferentes modelos de programación paralela y los rasgos característicos de los diferentes paradigmas (memoria compartida vs. distribuida, esquemas de paralelización, ...). 10.El alumno debe ser capaz de seguir la asignatura utilizando los materiales proporcionados en ingles, así como realizar los actos de evaluación (controles y examen final) con el enunciado escrito en ingles. 11.En caso de optar por la competencia transversal Tercera Lengua, el estudiante deberá ser capaz de elaborar los entregables de las práctica (parcial o totalmente) en inglés. 2/9 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270020 - PAR - Paralelismo Horas totales de dedicación del estudiantado Dedicación total: 150h Grupo grande/Teoría: 30h 20.00% Grupo mediano/Prácticas: 0h 0.00% Grupo pequeño/Laboratorio: 30h 20.00% Actividades dirigidas: 6h 4.00% Aprendizaje autónomo: 84h 56.00% 3/9 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270020 - PAR - Paralelismo Contenidos Introducción y motivación Competencias de la titulación a las que contribuye el contenido: Descripción: Necessitat del paral.lelisme, paral.lelisme vs. concurrència, possibles problemes en l'us concurrència: deadlock, lifelock, starvation, fairness, data races Análisis de aplicaciones paralelas Competencias de la titulación a las que contribuye el contenido: Descripción: Llei d'Amdahl, speedup i escalabilitat, overheads i cost de les comunicacions, granularitat. Eines per la predicció i l'anàlisi de paral.lelisme i visualització de comportament: Paraver i Tareador Introducción a las arquitecturas paralelas Competencias de la titulación a las que contribuye el contenido: Descripción: Paral.lelisme dins d'un processador (ILP, DLP i TLP), multiprocessadors de memòria compartida SMP i ccNUMA (coherència de cache, consistència de memòria, sincronització) i multiprocessadors de memòria distribuïda (xarxa d'interconnexió, cost de la comunicació). Principios de programación paralela: descomposición en tareas Competencias de la titulación a las que contribuye el contenido: Descripción: Task decomposition vs. data decomposition. Descomposcio en tasques, granularitat i anàlisi de dependències. Identificació de patrons de paral.lelisme: iterative vs. divide and conquer task decompositions. Mecanismes per implementar la descomposició en tasques: creació i sincronització (barrier synchronization, point-to-point synchronization, dataflow tasks) de tasques i exclusió en l'accés a dades compartides (mutual exclusion, locks). Principios de programación paralela: descomposición de datos Competencias de la titulación a las que contribuye el contenido: Descripción: Descomposició de dades (descomposició geomètrica vs. estructures recursives) per arquitectures amb memoria compartida. Generació de codi en funció de la descomposició de dades. Mecanismes de d'assignació de memòria i comunicació (point-to-point vs. collective, synchronous vs. asyncronous) per arquitectures amb memòria distribuïda. Cas concret: MPI. 4/9 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270020 - PAR - Paralelismo Programación con memoria compartida: OpenMP Competencias de la titulación a las que contribuye el contenido: Descripción: Regions paral.leles, threads i tasques. Task/thread barriers. Exclusió mútua i locks. Distribuïdors de feina: bucles. Revisión de problemas de controles Competencias de la titulación a las que contribuye el contenido: Descripción: En aquestes sessions es resoldran dubtes que els estudiants puguin tenir en els problemes dels controls 5/9 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270020 - PAR - Paralelismo Planificación de actividades Asimilación de los temas introductorios Dedicación: 16h Grupo grande/Teoría: 6h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 4h Actividades dirigidas: 0h Aprendizaje autónomo: 6h Descripción: Participar activamente en las sesiones de teoría/problemas. Estudiar los contenidos de los temas 1 y 3 y realizar los ejercicios propuestos. Objetivos específicos: 8, 9, 10 Asimilación de los conceptos y herramientas Dedicación: 18h Grupo grande/Teoría: 6h para modelar y analizar el comportamiento Grupo mediano/Prácticas: 0h de aplicaciones paralelas Grupo pequeño/Laboratorio: 4h Actividades dirigidas: 0h Aprendizaje autónomo: 8h Descripción: Participar activamente en las sesiones de teoría / problemas. Estudiar los contenidos del tema 2 y realizar los ejercicios propuestos. Resolución de los ejercicios propuestos en las sesiones de laboratorio y extracción de conclusiones. Objetivos específicos: 1, 2, 3, 10 Dedicación: 10h Actividades dirigidas: 2h Aprendizaje autónomo: 8h Control temas 1, 2 y 3 Objetivos específicos: 1, 8, 9 Dedicación: 40h Grupo grande/Teoría: 0h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 20h Actividades dirigidas: 0h Aprendizaje autónomo: 20h Uso de OpenMP para la expresión de paralelismo en memoria compartida Descripción: Participar activamente en las sesiones de teoría/problemas. Estudiar los contenidos del tema 6 y preparar la realización de los ejercicios propuestos para las sesiones de laboratorio. Resolución de los ejercicios propuestos en las sesiones de laboratorio y extracción de conclusiones. 6/9 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270020 - PAR - Paralelismo Objetivos específicos: 4, 7, 10, 11 Dedicación: 18h Grupo grande/Teoría: 8h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 0h Actividades dirigidas: 0h Aprendizaje autónomo: 10h Asimilación de los principios de descomposición en tareas Descripción: Participar activamente en las sesiones de teoría/problemas. Estudiar los contenidos del tema 4 y realizar los ejercicios propuestos. Aplicar los nuevos conocimientos para la resolución de los ejercicios de laboratorio del tema 6. Objetivos específicos: 5, 6, 10 Dedicación: 14h Grupo grande/Teoría: 6h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 0h Actividades dirigidas: 0h Aprendizaje autónomo: 8h Asimilación de los principios de descomposición de datos Descripción: Participar activamente en las sesiones de teoría/problemas. Estudiar los contenidos del tema 5 y realizar los ejercicios propuestos. Usar OpenMP para expresar descomposiciones de datos para arquitecturas con memoria compartida. Objetivos específicos: 5, 6, 10 Dedicación: 7h Grupo grande/Teoría: 0h Grupo mediano/Prácticas: 0h Grupo pequeño/Laboratorio: 0h Actividades dirigidas: 3h Aprendizaje autónomo: 4h Revisión de problemas de controles Descripción: Participar activamente en las sesiones de problemas. Objetivos específicos: 9, 10 7/9 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270020 - PAR - Paralelismo Dedicación: 10h Actividades dirigidas: 2h Aprendizaje autónomo: 8h Control temas 4-6 Objetivos específicos: 4, 5, 6, 7, 10 Dedicación: 15h Actividades dirigidas: 3h Aprendizaje autónomo: 12h Examen final Objetivos específicos: 4, 5, 6, 7, 8, 9, 10 8/9 Universitat Politècnica de Catalunya Última modificación: 13-09-2016 270020 - PAR - Paralelismo Sistema de calificación La nota de la asignatura se calcula a partir de 2 notas: - Nota de contenidos teóricos (peso 70%) - Nota de laboratorio (peso 30%) La nota de laboratorio (Lab) se obtiene principalmente a partir de las notas de los entregables, modulada por el rendimiento durante las sesiones de prácticas y una posible entrevista a final de curso por parte del profesor de laboratorio. Durante el curso se realizan 2 controles C1 i C2 con pesos 30% y 70%, respectivamente. La nota de evaluación continua (AC) se calcula como la media aritmética ponderada de los 2 controles. AC = 0.3*C1 + 0.7*C2 Si AC>=5 entonces la nota final (NF) del alumno será: NF = 0.3*Lab + 0.7*AC El alumno que no supere la evaluación continua (AC<5) tendrá que hacer el examen final (EF). También deberá hacer el examen final aquel alumno que no obtenga una calificación NF>=5. En ámbos casos, la nota final será: NF = 0.3*Lab + 0.7*max(EF, 0.25*AC + 0.75*EF) Si algún alumno que haya aprobado la asignatura por evaluación continua (AC>=5) quiere hacer el examen final, tendrá que avisar al coordinador de la asignatura por e-mail al menos con una semana de antelación a la fecha del examen. En este caso, la nota final se calculará utilizando la misma expresión que en el caso anterior. La competencia transversal de tercera lengua se evaluará a partir de los informes asociados a las prácticas de laboratorio. Estos informes deberán escribirse en inglés y podrán requerir la lectura de algún documento prévio (también en inglés) sobre el contenido de la práctica. Se evaluará tanto la estructura del documento escrito como la capacidad de transmitir los resultados y las conclusiones de la práctica (siguiendo un documento de rúbricas disponible). La nota de la competencia podrá ser A, B, C, D o NA donde: - A indica que la competencia se ha superado con un nivel de excelencia - B indica que la competencia se ha superado con el nivel deseado - C indica que la competencia se ha superado con un nivel suficiente - D indica que la competencia no se ha superado - NA indica que la competencia no se ha evaluado Bibliografía Básica: Mattson, T.G.; Sanders, B.A.; Massingill, B.L. Patterns for parallel programming. Addison Wesley, 2005. ISBN 9780321228116. OpenMP application program interface: version 4.0 [en línea]. OpenMP, 2013Disponible a: <http://www.openmp.org/mpdocuments/OpenMP4.0.0.pdf>. Grama, A.; Karypis, G.; Kumar, V.; Gupta, A. Introduction to parallel computing. 2nd ed. Addison-Wesley, 2003. ISBN 0201648652. 9/9 Universitat Politècnica de Catalunya