Datos Identificativos 2023/24
Asignatura (*) Computación Concorrente. Paralela e Distribuída Código 614G03014
Titulación
Grao en Intelixencia Artificial
Descriptores Ciclo Período Curso Tipo Créditos
Grao 2º cuadrimestre
Segundo Obrigatoria 6
Idioma
Castelán
Modalidade docente Presencial
Prerrequisitos
Departamento Enxeñaría de Computadores
Coordinación
Enes Álvarez, Jonatan
Correo electrónico
jonatan.enes@udc.es
Profesorado
Enes Álvarez, Jonatan
Correo electrónico
jonatan.enes@udc.es
Web
Descrición xeral Nesta materia o alumno estudará o papel que o uso do paralelismo ten á hora de acelerar a execución de programas en xeral, e a Intelixencia Artificial en particular.

O coñecemento teórico partirá dos conceptos técnicos máis básicos de paralelismo, incluíndo a súa utilidade, aplicabilidad, o contexto técnico da execución de programas paralelos e a súa evolución histórica (Tema 1). Despois, exporanse as principais tecnoloxías hardware que existen actualmente para o procesamiento paralelo, así como as súas capacidades técnicas subxacentes relacionadas e necesarias para explotar o paralelismo (Tema 2). A continuación, profundarase no paralelismo con conceptos engadidos, clasificacións, posibles deseños para o seu implementación software e maneiras de analizar o seu rendemento (Tema 3). Finalmente, aplicarase todo o coñecemento previamente adquirido estudando as ferramentas e tecnoloxías modernas pondo o foco na Intelixencia Artificial (Tema 4).

No aspecto práctico, o alumno realizará diversas sesións cun enfoque incremental a fin de adquirir o coñecemento e a habilidade de programar e/ou despregar solucións de procesamiento. Empezarase con prácticas dirixidas a adquirir competencias máis técnicas e simples, e irase progresando cara a solucións máis completas, cada vez máis relacionadas á súa vez co a Intelixencia Artificial. As prácticas serán autocontenidas e fortemente enfocadas á resolución de problemas ou escenarios concretos.

Esta materia ten unha forte dependencia con materias previas como "Programación I e II", principalmente polo seu requisito técnico para a programación. En menor medida requírense coñecementos previos da materia de "Introducción a los Computadores" para comprender o comportamento empírico e o rendemento en xeral dalgúns programas cando estes execútanse nun computador.

Competencias do título
Código Competencias do título
A4 Coñecer a estrutura, organización, funcionamento e interconexión dos sistemas informáticos (computador, sistemas operativos e redes de computadores).
A5 Comprender e aplicar os principios e técnicas básicas da programación paralela e distribuída para o desenvolvemento e execución eficiente das técnicas de intelixencia artificial.
A6 Capacidade para realizar a análise, deseño, implementación de aplicacións que requiran traballar con grandes volumes de datos e na nube de forma eficiente
B2 Que o alumnado saiba aplicar os seus coñecementos ao seu traballo ou vocación dunha forma profesional e posúa as competencias que adoitan demostrarse por medio da elaboración e defensa de argumentos e a resolución de problemas dentro da súa área de estudo.
B5 Que o alumnado desenvolva aquelas habilidades de aprendizaxe necesarias para emprender estudos posteriores cun alto grao de autonomía.
B7 Capacidade para resolver problemas con iniciativa, toma de decisións, autonomía e creatividade.
B10 Capacidade para concibir novos sistemas computacionais e/ou avaliar o rendemento de sistemas existentes, que integren modelos e técnicas de intelixencia artificial.
C3 Capacidade para crear novos modelos e solucións de forma autónoma e creativa, adaptándose a novas situacións. Iniciativa e espírito emprendedor.

Resultados de aprendizaxe
Resultados de aprendizaxe Competencias do título
Comprender a interrelación entre o software do sistema operativo e o hardware sobre o que se executa. A4
A6
B10
Coñecer os diferentes modelos de sistemas paralelos e a súa programación A5
B7
B10
Ter a capacidade para desenvolver códigos que aproveiten de forma óptima os recursos hardware dispoñibles no computador. A4
A5
A6
B2
B7
Ser capaz de desenvolver códigos que se executen en sistemas paralelos de memoria concorrente, compartida e distribuída, así como en aceleradores hardware A4
A6
B2
B7
C3
Comprender a importancia do desenvolvemento, análise e optimización dos códigos paralelos no contexto da Intelixencia Artificial. B5
B10
C3

Contidos
Temas Subtemas
Tema 1 - Introducción e conceptos previos * Programa secuencial e Proceso
* Anatomía e ciclo de vida dun proceso
* Fíos
* Programa paralelo
* Utilidades do paralelismo
Tema 2 - Paralelismo en Hardware, xerarquía do paralelismo * Niveis de paralelismo
* Paralelismo interno do procesador (agochado)
* Funcionalidades do procesador (paralelismo baixo nivel)
* Recursos accesibles do procesador (paralelismo alto nivel)
* Conxunto de máquinas (Cluster e Supercomputador)
* Redes distribuidas de Computación
* Dispositivos específicos
* Estado del arte de los procesadores
Tema 3 - Paralelismo en Software, diseño e implementación * Clasificación do paralelismo (Taxonomía de Flynn)
* Linguaxes e frameworks do paralelismo
* Conceptos chave
* Paradigmas do procesamento paralelo
* Análise de programas paralelos
* Deseño de programas paralelos
Tema 4 - Paralelismo na Intelixencia Artificial * Paralelismo en aplicacións de IA
* Procesamiento masivo e distribuído de datos
* Procesamiento de datos en GPU

Planificación
Metodoloxías / probas Competencias Horas presenciais Horas non presenciais / traballo autónomo Horas totais
Sesión maxistral A4 A5 B5 B10 C3 30 20 50
Prácticas de laboratorio A5 A6 B2 B5 B7 B10 30 50 80
Proba obxectiva A4 B2 B5 B7 B10 C3 3 11 14
 
Atención personalizada 6 0 6
 
*Os datos que aparecen na táboa de planificación son de carácter orientativo, considerando a heteroxeneidade do alumnado

Metodoloxías
Metodoloxías Descrición
Sesión maxistral * As clases de sesión maxistral introducirán a base teórica sobre a cal se basearán as prácticas que o alumnado realizará posteriormente, tentando en todo momento sinalar esta conexión.

* De igual forma, as sesións maxistrais explicarán e detallarán outros conceptos importantes relacionados co paralelismo en xeral, xa sexan previos ou fundamentais a fin de entender o funcionamento das tecnoloxías usadas nas sesións de prácticas, ou ben máis avanzados e que explican o seu uso e papel crítico en procesos relevantes para a sociedade.
________________________________________________________________________________
Prácticas de laboratorio * Cada práctica será brevemente explicada polo profesor nunha sesión de prácticas, onde ademais o alumnado iniciará a súa realización.

* As prácticas de laboratorio serán autocontidas e estarán enfocadas a escenarios moi concretos ou á resolución de problemas moi comúns, todo mediante o uso de técnicas, paradigmas e tecnoloxías previamente explicadas nas sesións maxistrais.

* Cada práctica, que pode ocupar unha ou varias sesións, centrarase nun problema para o cal o alumno dispoñerá dunha explicación previa, un código xa proporcionado a utilizar e unha serie de preguntas sobre as cales terá que desenvolver a práctica no seu traballo en clase e autónomo. As preguntas poden pedir realizar unha extensión ou modificación do código, facer un estudo empírico do rendemento con distintas configuracións de paralelismo, describir o seu funcionamento ou comportamento, ou outras preguntas enfocadas en xeral a que o alumno comprenda o problema e a solución de paralelismo aplicada.
________________________________________________________________________________
Proba obxectiva * Ao final do cuadrimestre realizarase un exame de avaliación de toda a materia, onde se incluirán principalmente preguntas de desenvolvemento dos conceptos e materia en xeral explicada nas sesións maxistrais.

* De igual forma tamén se poden incluír en menor medida preguntas breves especificamente enfocadas a avaliar a adquisición dos coñecementos chave das prácticas de laboratorio.

Atención personalizada
Metodoloxías
Sesión maxistral
Prácticas de laboratorio
Descrición
* A atención personalizada destinarase ao apoio de forma xeral do alumnado ao longo da materia e estenderase sobre todo o temario que se expoña.

* Por unha banda dita atención estará dispoñible para a comprensión/ampliación de conceptos explicados nas sesións maxistrais de teoría, co fin de que ningunha alumna ou alumno teña dificultades na adquisición do coñecemento máis teórico e que será suxeito de avaliación na proba final. Isto é especialmente importante nas fases temperás daquel temario que sexa incremental, ou nos momentos de 'cambio' de temario.

* Por outra banda a atención personalizada tamén estará dispoñible de cara ao alumnado que requira unha atención máis específica para a resolución de incidentes ou dúbidas orixinadas nas prácticas de laboratorio, xa sexan problemas técnicos para realizar ditas prácticas, como dificultades para comprender algún concepto chave delas. Esta atención estará dispoñible ao longo de todo o curso, aínda que se recomenda dirixir calquera dúbida dunha práctica ao longo da duración desta ou poucos días despois da súa finalización.
____________________________________________________________________________

O alumnado con dispensa académica poden pedir, mediante atención personalizada, unha explicación dunha práctica nas mesmas condicións que nas sesións de prácticas ordinarias.

Avaliación
Metodoloxías Competencias Descrición Cualificación
Prácticas de laboratorio A5 A6 B2 B5 B7 B10 * Todas as prácticas serán suxeitas a avaliación por parte do profesor. A avaliación pode ser individual mediante un cuestionario, ou grupal mediante unha entrega. Os grupos serán previamente formados e manteranse durante todo o curso.

* A avaliación das prácticas realizaranse en datas previamente anunciadas, ata as cales se espera que o alumnado finalice a práctica no seu tempo de traballo autónomo asociado.
________________________________________________________________________
50
Proba obxectiva A4 B2 B5 B7 B10 C3 * Exame escrito realizado ao final do cuadrimestre de xeito individual.

* Avaliaranse principalmente conceptos teóricos explicados nas sesións maxistrais.

* En menor medida tamén se incluirán preguntas sobre conceptos chave das sesións prácticas.
50
 
Observacións avaliación
  • Para aprobar a materia será necesario obter:
    • un mínimo do 40% da nota máxima da proba obxectiva (2 puntos de 5).
    • un mínimo do 40% da nota máxima da parte práctica (2 puntos de 5).
  • A nota de prácticas NON É RECUPERABLE para a segunda oportunidade.
  • Os alumnos con matrícula a tempo parcial poderán asistir (previo aviso) a un grupo de prácticas distinto ao que teñan asignado.
  • Os alumnos con matrícula a tempo parcial ou que dispoñan de dispensa académica poderán realizar a súa entrega máis tarde, ou no caso de que se avalíe unha práctica mediante cuestionario, poderán preacordar co profesor unha data distinta se é necesario.
  • A fin de cumprir coa lexislación actual en materia de igualdade, aplicaranse 2 medidas:
    • Os grupos de traballo formados buscarán ser paritarios
    • A avaliación dos cuestionarios de prácticas entregados inidvidualmente, así como da proba obxectiva final, serán corrixidos cun método cego que garante a anonimicidade do alumno.

Fontes de información
Bibliografía básica ------------------------ (Tema 1). ------------------------.
------------------------ (Tema 2). ------------------------ .
------------------------ (Tema 3). ------------------------ .
------------------------ (Tema 4). ------------------------ .
Julio Ortega Lopera (2005). Arquitectura de computadores . Madrid : Thomson
David A. Patterson (2014). Computer organization and design: the hardware/software interface . Waltham, MA : Morgan Kaufmann
Sarah L. Harris (2021). Digital design and computer architecture . Amsterdam : Elsevier, Morgan Kaufmann
Francisco Almeida (2008). Introducción a la programación paralela. Madrid : Paraninfo Cengage Learning
Tomasz Drabas (2017). Learning PySpark . Packt Publishing
Jan Palach (2014). Parallel programming with Python . Packt Publishing
Alberto García García (2020). Programación de GPUs usando Compute Unified Device Architecture (CUDA). Paracuellos del Jarama : Ra-M
Giancarlo Zaccone (2015). Python parallel programming cookbook . Packt Publishing
Jesús Carretero Pérez (2021). Sistemas operativos: una visión aplicada. Madrid : McGraw-Hill

Bibliografía complementaria Peter S. Pacheco (2021). An introduction to parallel programming . Burlington, MA : Morgan Kaufmann
John L. Hennesy (2019). Computer architecture: a quantitative approach. Cambridge, Massachusetts : Morgan Kaufmann
Bertil Schmidt (2017). Parallel programming: concepts and practice . Cambridge, MA : Morgan Kaufmann
Jorge Luis Ortega-Arjona (2010). Patterns for parallel software design. Sussex, UK: Wiley series in software design patterns
John Cheng (2014). Professional CUDA C programming. Hoboken : John Wiley & Sons
William Stallings (2005). Sistemas operativos: aspectos internos y principios de diseño . Madrid : Pearson


Recomendacións
Materias que se recomenda ter cursado previamente
Programación I/614G03006
Programación II/614G03007
Introdución aos Computadores /614G03012

Materias que se recomenda cursar simultaneamente
Algoritmos/614G03008

Materias que continúan o temario

Observacións


(*)A Guía docente é o documento onde se visualiza a proposta académica da UDC. Este documento é público e non se pode modificar, salvo casos excepcionais baixo a revisión do órgano competente dacordo coa normativa vixente que establece o proceso de elaboración de guías