Créditos ECTS Créditos ECTS: 4.5
Horas ECTS Criterios/Memorias Horas de Titorías: 2 Clase Expositiva: 10 Clase Interactiva: 30 Total: 42
Linguas de uso Castelán, Galego
Tipo: Materia Ordinaria Grao RD 1393/2007 - 822/2021
Departamentos: Electrónica e Computación
Áreas: Arquitectura e Tecnoloxía de Computadores
Centro Escola Técnica Superior de Enxeñaría
Convocatoria: Segundo semestre
Docencia: Sen docencia (Extinguida)
Matrícula: Non matriculable
O obxectivo principal desta materia é preparar ao alumnado para as necesidades de deseño e creación de código eficiente capaz de explotar ao máximo as capacidades do hardware dispoñible en sistemas multinúcleo e multiprocesador, así como en sistemas manycore, dispoñibles na actualidade e nun futuro próximo. Partindo da descrición das arquitecturas multinúcleo, analizaremos diferentes técnicas para o deseño de algoritmos paralelos e centrarémonos en mecanismos de programación de sistemas de memoria compartida e manycore.
Tema 1: Sistemas multicore e manycore
Introdución a arquitecturas de computación paralela
Sistemas de memoria compartida e distribuída
Sistemas multicore e manycore
Tema 2: Caracterización do rendemento
Escalamiento e lei de Amdahl
Ganancia en velocidade, isoeficiencia
Tema 3: Introdución á programación paralela
Programación paralela para sistemas de memoria compartida: OpenMP
Programación paralela para sistemas manycore: CUDA
Tema 3: Técnicas de adaptación de aplicacións a sistemas multinúcleo e multiprocesador
Análise do problema
Descomposición do problema guiada por tarefas e datos
Comunicación e sincronización
Dependencia de datos
Granularidad
Tema 4: Técnicas de optimización do rendemento
As prácticas pódense realizar nos ordenadores da aula de informática, pero deben executarse nos nodos do CESGA para a parte de CUDA. Algunhas das prácticas tamén se poden programar nos computadores persoais dos alumnos/as.
Bloque 1: Programación básica con OpenMP e CUDA. O obxectivo é adquirir os coñecementos básicos para a realización de programas paralelos en sistemas de memoria compartida e manycore.
Bloque 2: Programación paralela de algoritmos básicos. O obxectivo é aplicar as metodoloxías de programación paralela vistas en clase utilizando OpenMP e CUDA. Neste bloque faremos un estudo do rendemento.
Bloque 3: Proxecto de programación paralela. O obxectivo é paralelizar unha aplicación de certa complexidade aplicando as metodoloxías vistas en clase e facer un estudo do escalamiento dependendo do número de fíos e tamaño do problema (caracterización do rendemento) usando OpenMP e comparar os resultados cunha versión paralela en GPU. Este proxecto pódese realizar en grupos.
Básica
T.G. Mattson, B.A. Sanders and B.L. Massingill, Patterns for Parallel Programming, Addison-Wesley, 2005.
Esta é a referencia fundamental para a base teórica de programación paralela mediante unha metodoloxía baseada en patróns de concorrencia que serve de soporte para os contidos da materia.
P. Pacheco, "An Introduction to Parallel Programming", Morgan Kaufmann Publishers, 2011.
Libro de introdución á programación paralela que explica como desenvolver programas paralelos utilizando entre outros o modelo de programación OpenMP.
Kirk, D. B., & Wen-mei, W. H. (2013). Programming massively parallel processors: a hands-on approach. Morgan Kaufmann Publishers.
Conceptos básicos de programación en paralelo e arquitectura da GPU. Explora en detalle varias técnicas para a construción de programas paralelos en GPU.
Complementaria
Schmidt, Bertil, et al. Parallel programming: concepts and practice. Morgan Kaufmann, 2017.
Este libro cobre aspectos básicos de programación paralela e presenta, entre outros, os modelos de programación de OpenMP e a arquitectura paralela das GPUs de NVIDIA.
Cook, Shane. CUDA programming: a developer's guide to parallel computing with GPUs. Newnes, 2012.
Libro específico de programación en GPU que profunda nesta arquitectura e abarca temas de deseño de sistemas de computación baseados en GPU.
En caso de cambiar a un escenario de distanciamento (escenario 2) ou de peche das instalacións (escenario 3) ver o Plan de continxencia no apartado Observacións para coñecer as adaptacións no acceso á bibliografía.
Contribuír a alcanzar as competencias recollidas na memoria do título de Grao en Enxeñería Informática na USC (CG4, CG9, TR1, TR2, TR3, RI1, RI6, RI7, RI8, RI14).
CG4. Capacidade para definir, avaliar e seleccionar plataformas hardware e software para o desenvolvemento e execución de sistemas, servizos e aplicacións informáticas, de acordo cos coñecementos adquiridos segundo o establecido no apartado 4 de dicho acordo.
CG9 - Capacidade para resolver problemas con iniciativa, toma de decisións, autonomía e creatividade. Capacidade para saber comunicar e transmitir os coñecementos, habilidades e destrezas da profesión de Enxeñeiro Técnico en Informática.
TR1 - Instrumentais: Capacidade de análise e síntese. Capacidade de organización e planificación. Comunicación oral e escrita en galego, castelán e inglés. Capacidade de xestión da información. Resolución de problemas. Toma de decisións.
TR2 - Persoais: Traballo en equipo. Traballo nun equipo multidisciplinar e multilingüe. Habilidades nas relacións interpersoais. Razoamento crítico. Compromiso ético.
TR3 - Sistémicas: Aprendizaxe autónoma. Adaptación a novas situacións. Creatividade. Iniciativa e espírito emprendedor. Motivación pola calidade. Sensibilidade cara a temas ambientais.
RI1 - Capacidade para deseñar, desenvolver, seleccionar e avaliar aplicacións e sistemas informáticos, asegurando a súa fiabilidade, seguridade e calidade, conforme a principios éticos e á lexislación e normativa vixente.
RI6 - Coñecemento e aplicación dos procedementos algorítmicos básicos das tecnoloxías informáticas para deseñar solucións a problemas, analizando a idoneidade e complexidade dos algoritmos propostos.
RI7 - Coñecemento, deseño e utilización de forma eficiente dos tipos e estruturas de datos máis adecuados á resolución de un problema.
RI8 - Capacidade para analizar, deseñar, construír e manter aplicacións de forma robusta, segura e eficiente, elixindo o paradigma e as linguaxes de programación máis adecuados.
RI14 - Coñecemento e aplicación dos principios fundamentais e técnicas básicas da programación paralela, #concorrente, distribuída e de tempo real.
Competencias asociadas ao módulo de programación dentro do Grao:
Saber calcular a complexidade computacional dun algoritmo e avaliar a implementación máis adecuada dun algoritmo determinado de acordo cos recursos dispoñibles (memoria e tempo de execución).
Coñecer diferentes paradigmas de programación e saber escoller o máis apropiado en cada situación.
Esta materia ten un enfoque práctico onde a aprendizaxe é a través de exercicios e un proxecto de programación.
Clases maxistrais: nestas clases o profesor expoñerá de modo resumido os contidos teóricos que serven de base para as clases prácticas de programación buscando un ambiente participativo por parte do alumnado mediante a exposición dalgúns temas de teoría.
Clases prácticas: estas clases estarán dedicadas a desenvolver o programa de prácticas da materia. Basicamente consistirán na realización de programas paralelos de complexidade crecente ata completar un proxecto completo de programación paralela que se poderá realizar en grupo. O alumnado será o elemento activo nestas clases, e o profesor guiará a aprendizaxe ante as cuestións e dúbidas expostas. Os enunciados das prácticas, así como o material de axuda estarán dispoñibles no campus virtual da USC.
Clases de discusión: Nestas clases expoñeranse os proxectos realizados, discutindo a súa implementación a diferentes niveis e, o grao de escalamiento da aplicación.
As titorías poderán ser presenciais (horario acordado co alumnado ou fixado polo centro), a través de correo electrónico ou a través do campus virtual.
En caso de cambiar a un escenario de distanciamento (escenario 2) ou de peche das instalacións (escenario 3) ver Plan de continxencia no apartado Observacións para coñecer as adaptacións na metodoloxía de ensino.
Esta materia aplica un sistema de avaliación continua formativa baseado na participación do alumnado, desenvolvemento de prácticas e proxecto de programación paralela a desenvolver durante o curso. As titorías, discusións en clase e a interacción nas clases prácticas permitirán ao profesor coñecer o grao de asimilación da materia que van obtendo os/as alumnos/ as durante o curso.
Para os casos de realización fraudulenta de exercicios ou probas será de aplicación o recollido na Normativa de avaliación do rendemento académico dos estudantes e de revisión de cualificacións.
En caso de cambiar a un escenario de distanciamento (escenario 2) ou de peche das instalacións (escenario 3) ver o Plan de continxencia no apartado Observacións para coñecer as adaptacións no sistema de avaliación.
Oportunidade ordinaria
Participación no desenvolvemento das clases teóricas (10%). Adquisición de coñecementos básicos en OpenMP e CUDA (20%). Realización de programas paralelos en OpenMP e CUDA (30%). Proxecto de programación paralela (40%).
Non existe unha nota mínima en participación nin en prácticas, excepto no proxecto de programación paralela que debe superarse cun aprobado (5 puntos sobre 10).
Non se conservarán as notas de cursos anteriores.
Oportunidade de recuperación e convocatoria extraordinaria
Mesmos criterios que na oportunidade ordinaria. A data límite de entrega das prácticas e proxecto de programación paralela será a data oficial do exame de segunda oportunidade. O alumno/a fará unha presentación do proxecto o día do exame.
Condicións para cualificación de non presentado: non presentar ningunha práctica nin proxecto.
O traballo persoal do alumnado nunha materia de 4,5 créditos ECTS debe ser dunhas 70,5 horas dedicadas a consulta de bibliografía, estudo autónomo, desenvolvemento das actividades programadas e preparación e presentación de traballos.
A dedicación en tempo pode variar ao longo do cuadrimestre, en especial na etapa de elaboración e presentación de resultados de prácticas e proxecto.
A materia está deseñada para que o alumno/a participe activamente e de maneira regular durante o seu desenvolvemento.
Requisitos previos recomendados: Programación I, Programación II, Fundamentos de Computadores, Arquitectura de Computadores, Sistemas Operativos I, Sistemas Operativos II. Tamén resulta interesante ter cursada as materias do grao Fundamentos de Sistemas Paralelos.
A entrega dos materiais do curso e as comunicacións electrónicas co alumnado levará a cabo coas ferramentas do campus virtual da materia.
Plan de continxencia
Metodoloxía da ensinanza. En caso de cambiar a un escenario de distanciamento (escenario 2) ou de peche das instalacións (escenario 3), as clases de teoría serán síncronas a través de Microsoft Teams e asíncronas mediante vídeo gravado (dispoñibles no campus virtual da materia), seguindo coa planificación semanal prevista. A decisión de clase síncrona/asíncrona estará marcada polo tipo de actividade que se vaia a desenvolver durante a clase, por exemplo, presentacións, seminarios e interacción de temas co alumnado requirirán dunha sesión síncrona.
En caso de pasar a un escenario 3, as prácticas pódense desenvolver como estaba previsto accedendo de forma remota ao Centro de Supercomputación de Galicia. No horario establecido para as clases prácticas usaremos Microsoft Teams para resolver dúbidas de forma síncrona. Usaremos os foros do campus virtual para un apoio extra na resolución de dúbidas.
Sistemas de avaliación. En caso de cambiar a un escenario de distanciamento (escenario 2) ou de peche das instalacións (escenario 3), a participación no desenvolvemento das clases teóricas adaptarase a participación no foro da materia no campus virtual e nas sesións síncronas de teoría a través de Microsoft Teams. As prácticas seguiranse avaliando de forma continua durante o desenvolvemento das clases con entregas a través do campus virtual.
En caso de pasar a un escenario 3, o proxecto de programación paralela avaliarase de forma remota usando as ferramentas de comunicación síncrona de Microsoft Teams.
Bibliografía básica. En caso de cambiar a un escenario de peche das instalacións (escenario 3) a bibliografía básica poderá consultarse online accedendo coa conta institucional, excepto o libro de T. G. Mattson, B.A. Sanders and B. L. Massingill, Patterns for Parallel Programming, que pode substituírse polos artigos científicos correspondentes. Este material estará dispoñible no campus virtual da materia.
Pablo Quesada Barriuso
Coordinador/a- Departamento
- Electrónica e Computación
- Área
- Arquitectura e Tecnoloxía de Computadores
- Teléfono
- 881813538
- Correo electrónico
- pablo.quesada [at] usc.es
- Categoría
- Profesor/a: Profesor Axudante Doutor LOU
Luns | |||
---|---|---|---|
09:00-11:00 | Grupo /CLIL_01 | Castelán | Lab PP-2 |
Mércores | |||
15:30-16:30 | Grupo /CLE_01 | Castelán | Aula A4 |