Créditos ECTS Créditos ECTS: 4.5
Horas ECTS Criterios/Memorias Traballo do Alumno/a ECTS: 70.5 Horas de Titorías: 2 Clase Expositiva: 10 Clase Interactiva: 30 Total: 112.5
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: Con docencia
Matrícula: 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 (GPU), 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 GPU.
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 4: 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 5: Técnicas de optimización do rendemento
As prácticas pódense programar nos ordenadores da aula de informática y nos computadores persoais dos alumnos/as, pero deben executarse nos nodos do supercomputador do CESGA.
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.
- Alessandrini, V. (2015). Shared memory application programming: Concepts and strategies in Multicore application programming. Morgan Kaufmann.
El libro se divide en dos partes: la primera desarrolla los conceptos esenciales de gestión y sincronización de hilos, discutiendo bibliotecas nativas (hilos de Windows, Pthreads), así como en el estándar de C ++ 11. La segunda parte proporciona una discusión en profundidad de TBB y OpenMP.
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.
Esta materia aplica un sistema de avaliación continua 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.
A asistencia ás prácticas é obrigatoria. Cada unha das prácticas propostas terá unha data de finalización específica. Logo desta data, a práctica considerarase como non realizada. As prácticas avaliaranse durante as sesións posteriores á data de entrega.
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.
Oportunidade ordinaria
Participación no desenvolvemento das clases teóricas (20%). Adquisición de coñecementos básicos en OpenMP e CUDA (15%). Realización de programas paralelos en OpenMP e CUDA (25%). 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 a materia do Fundamentos de Sistemas Paralelos do GrEI.
A entrega dos materiais do curso e as comunicacións electrónicas co alumnado levará a cabo coas ferramentas do 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 Contratado/a Doutor
Luns | |||
---|---|---|---|
09:00-11:30 | Grupo /CLIL_01 | Castelán | IA.03 |
Mércores | |||
15:30-16:30 | Grupo /CLE_01 | Castelán | IA.S1 |
22.05.2024 16:00-20:00 | Grupo /CLIL_01 | Aula A2 |
22.05.2024 16:00-20:00 | Grupo /CLE_01 | Aula A2 |
09.07.2024 10:00-14:00 | Grupo /CLIL_01 | Aula A7 |
09.07.2024 10:00-14:00 | Grupo /CLE_01 | Aula A7 |