Parallel and Distributed Systems28270
- Centre
- Faculty of Informatics
- Degree
- Grado en Inteligencia Artficial
- Academic course
- 2024/25
- Academic year
- 2
- No. of credits
- 6
- Languages
- Spanish
- Basque
- Code
- 28270
TeachingToggle Navigation
Teaching guideToggle Navigation
Description and Contextualization of the SubjectToggle Navigation
PLEASE NOTE THAT THIS SUBJECT IS TAUGHT ONLY IN SPANISH/BASQUE
La asignatura “Sistemas Paralelos y Distribuidos”, en adelante SPD, es una de las materias básicas del segundo curso del Grado en Inteligencia Artificial. Partiendo del conocimiento visto en la asignatura “Introducción a la Arquitectura de Computadores”, el objetivo de esta asignatura es profundizar en aquéllas arquitecturas paralelas más utilizadas en las aplicaciones de la inteligencia artificial.
Básicamente, la asignatura se centrará en dos tipos de sistemas: los sistemas paralelos de memoria compartida (multiprocesadores) y los sistemas basados en GPUs. En ambos casos se estudiará la arquitectura de dichos sistemas y su programación paralela, utilizando los estándares OpenMP, en el caso de los sistemas multiprocesador, y CUDA en el caso de los sistemas basados en GPUs. El enfoque de la asignatura es fundamentalmente práctico, estudiando cómo se pueden afrontar problemas del ámbito de la inteligencia artificial, por ejemplo, relacionados con el big-data, el análisis de datos (data science) o las redes profundas (deep learning), de forma eficiente utilizando los sistemas de cómputo mencionados.
Dentro del Grado en Inteligencia Artificial, la asignatura dará soporte a todas aquellas asignaturas posteriores que se centran en diferentes líneas de la Inteligencia Artificial aportando técnicas de cómputo paralelo para hacer frente de forma eficiente a la resolución de los problemas planteados.
Desde el punto de vista profesional, la asignatura aporta las competencias básicas necesarias en el área del cómputo paralelo en la Inteligencia Artificial. Una persona experta en inteligencia artificial debe ser capaz de conocer cómo resolver de forma eficiente, programando en paralelo, aquellas aplicaciones con grandes necesidades de cómputo o tiempos de respuesta críticos.
Skills/Learning outcomes of the subjectToggle Navigation
Una vez superada la asignatura, el alumnado deberá ser capaz de:
1. Comprender la arquitectura de los sistemas paralelos basados en memoria compartida y los basados en GPUs.
2. Diseñar programas paralelos sencillos, principalmente en el área de la inteligencia artificial (IA), afrontando aspectos clave como la sincronización y el reparto de carga.
3. Programar de forma paralela a nivel de thread utilizando OpenMP.
4. Utilizar las placas gráficas (GPUs) para la ejecución paralela programando en CUDA.
5. Analizar el rendimiento obtenido en la programación paralela.
6. Conocer los principales modelos de programación paralela basados en machine learning y deep learning para aplicaciones específicas de la IA.
Theoretical and practical contentToggle Navigation
0. PROGRAMACIÓN EN C
1. SISTEMAS DE ALTO RENDIMIENTO
1.1. Introducción
1.2. Clasificación de los sistemas de cómputo. Principales arquitecturas
1.3. Velocidad de cálculo. Rendimiento
1.4. Ejercicios
2. SISTEMAS PARALELOS DE MEMORIA COMPARTIDA
2.1. Características principales. Sincronización y reparto de carga
2.2. Programación en multiprocesadores: OpenMP
2.3. Ejercicios y desarrollo de una aplicación paralela
3. ARQUITECTURA Y PROGRAMACION DE GPUs
3.1. Sistemas SIMD. Arquitectura de las GPUs.
3.2. Programación en GPUs: CUDA
3.3. Ejercicios y desarrollo de una aplicación paralela
4. OTROS MODELOS DE PROGRAMACIÓN PARALELA
4.1. TensorFlow
4.2. Google TPU
4.3. Otros ejemplos de programación paralela en inteligencia artificial
MethodologyToggle Navigation
En esta asignatura se combinan diversas metodologías de enseñanza. Por una parte, se impartirán clases de exposición de los contenidos conceptuales de la materia, con participación del alumnado en debates sobre los mismos. La resolución de cuestiones y problemas en el aula se realizará de forma participativa, proponiendo problemas y ejercicios que desarrollarán individualmente o en grupo.
Por otra parte, el contenido relacionado con los aspectos de programación de sistemas paralelos se trabajará mediante prácticas de laboratorio y un proyecto final que el alumnado deberá desarrollar de forma autónoma y colaborativa.
Finalmente, en el último tema, el alumnado deberá desarrollar de forma autónoma un trabajo grupal en el área de la programación paralela en inteligencia artificial (IA). Este trabajo consistirá en la búsqueda de información, el análisis y comprensión de la misma, y la redacción de un informe que deberán presentar en público, sobre algunos de los modelos de programación emergentes en la IA.
En todo momento se potenciará el trabajo autónomo, mediante el uso de recursos informáticos y bibliográficos que ayuden al alumnado a comprender los distintos aspectos de la materia y relacionar la asignatura con otras áreas afines. Así mismo, se fomentará la formulación de cuestiones y la discusión abierta, de forma que el alumnado adquiera destrezas relacionadas con la comunicación oral, la capacidad de síntesis y el trabajo en equipo.
Para facilitar y asegurar el aprendizaje del alumnado, se hará un seguimiento tanto de las prácticas de aula como de las de ordenador. Se proporcionará feed-back en base a criterios de evaluación previamente establecidos, de manera que los y las estudiantes tengan la oportunidad de tomar conciencia de su aprendizaje.
Assessment systemsToggle Navigation
- Continuous Assessment System
- Final Assessment System
- Tools and qualification percentages:
- Los sistemas de evaluación y sus porcentajes se especifican en los siguientes apartados (%): 100
Ordinary Call: Orientations and DisclaimerToggle Navigation
En convocatoria ordinaria la asignatura tiene dos métodos de evaluación:
a. Evaluación continua.
Es el modo de evaluación predeterminado, solamente válido para la convocatoria ordinaria. Exige la participación activa y continua por parte del alumnado: asistir a las clases y los laboratorios, entregar los ejercicios y trabajos (tanto grupales como individuales), realizar las pruebas de evaluación y demás actividades planteadas. En caso de no participar en cualquiera de estas actividades, se pasará a la evaluación global. Si, aún cumpliendo las condiciones, el estudiante desea pasar a la evaluación final, deberá enviar un mensaje al profesorado de la asignatura indicándolo.
La asignatura se evaluará en base a estos elementos:
- Pruebas escritas individuales: 5 puntos (50%)
- Trabajos y ejercicios: 2 puntos (20%)
- Práctica grupal: 3 puntos (30%)
Para aprobar la asignatura, además de que la nota final sea superior a 5, habrá que obtener un mínimo de 4 puntos (sobre 10) en cada uno de los apartados de evaluación.
El alumnado que, cumpliendo las condiciones para continuar en el sistema de evaluación continua, decidiese optar por la evaluación global, deberá informar al profesorado responsable de la asignatura mediante correo electronico, antes del último examen de la evaluación continua.
b. Evaluación final.
En caso de no optar por la evaluación continua, la evaluación será final. En este caso, la evaluación se realizará de la siguiente forma:
- Prueba escrita individual: 7 puntos (70%)
- Práctica individual: 3 puntos (30%)
Para aprobar la asignatura, además de que la nota final sea superior a 5, habrá que obtener un mínimo de 4 puntos (sobre 10) en cada uno de los apartados de evaluación.
Extraordinary Call: Orientations and DisclaimerToggle Navigation
En convocatoria extraordinaria la modalidad será evaluación global
La asignatura se evaluará en base a estos elementos:
- Prueba escrita individual: 7 puntos (70%)
- Práctica individual: 3 puntos (30%)
Para aprobar la asignatura, además de que la nota final sea superior a 5, habrá que obtener un mínimo de 4 puntos (sobre 10) en cada uno de los apartados de evaluación.
Compulsory materialsToggle Navigation
Material de eGela (apuntes, documentación para los laboratorios...)
BibliographyToggle Navigation
Basic bibliography
1. Hennessy J.L., Patterson D.A.: Computer Architecture: A Quantitative Approach. (6. ed.). Morgan Kaufmann, 2019.
2. Peter S. Pacheco .: An Introduction to Parallel Programming. Morgan Kaufmann, 2011.
3. Almeida F., Giménez D., Mantas J.M., Vidal A.M.: Introducción a la programación paralela. Paraninfo, 2008.
4. Barlas G.: Multicore and GPU programming. M. Kaufmann, 2015.
5. Alberto García García, Sergio Orts Escolano, José Celilia Canales, José García Rodriguez.: Programación de GPUs Usando Compute Unified Device Architecture (CUDA). Editorial Ra-Ma. 2020
In-depth bibliography
1. Chapman B., Jost G., van der Pas R.: Using OpenMP: portable shared memory parallel programming. The MIT Press, 2008.
2. Bertil Schmidt, Jorge González-Domínguez, Christian Hundt, Moritz Schlarb Parallel programming: concepts and practice. Ed. Morgan Kauffman. 2018.
3. David B. Kirk and Wen-mei W. Hwu.: Programming Massively Parallel Processors: A Hands-on Approach. 3rd Edition. 2017.
Web addresses
1. OpenMP: http://openmp.org
2. GPU y CUDA: http://www.nvidia.es/page/home.html
https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html
3. TENSORFLOW: https://www.tensorflow.org/
4. GOOGLE TPU: https://cloud.google.com/tpu
https://cloud.google.com/tpu/docs/tpus
GroupsToggle Navigation
16 Teórico (Spanish - Tarde)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
1-15 | 15:30-17:00 (1) | 14:00-15:30 (2) |
Teaching staff
16 Applied laboratory-based groups-1 (Spanish - Tarde)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
1-15 | 17:00-18:30 (1) |
Teaching staff
31 Teórico (Basque - Mañana)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
1-15 | 10:30-12:00 (1) | 09:00-10:30 (2) |
Teaching staff
31 Applied laboratory-based groups-1 (Basque - Mañana)Show/hide subpages
Weeks | Monday | Tuesday | Wednesday | Thursday | Friday |
---|---|---|---|---|---|
1-15 | 12:00-13:30 (1) |