Contenido de XSL

Sistemas Paralelos y Distribuidos

Centro
Facultad de Informática
Titulación
Grado en Inteligencia Artificial
Curso académico
2023/24
Curso
2
Nº Créditos
6
Idiomas
Castellano
Euskera

DocenciaAlternar navegación

Distribución de horas por tipo de enseñanza
Tipo de docenciaHoras de docencia presencialHoras de actividad no presencial del alumno/a
Magistral4060
P. Laboratorio2030

Guía docenteAlternar navegación

ObjetivosAlternar navegación

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.

TemarioAlternar navegación

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

MetodologíaAlternar navegación

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.

Sistemas de evaluaciónAlternar navegación

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.



Materiales de uso obligatorioAlternar navegación

Material de eGela (apuntes, documentación para los laboratorios...)

BibliografíaAlternar navegación

Bibliografía básica

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



Bibliografía de profundización

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.

GruposAlternar navegación

01 Teórico (Castellano - Mañana)Mostrar/ocultar subpáginas

Calendario
SemanasLunesMartesMiércolesJuevesViernes
1-15

09:00-10:30

10:30-12:00

Profesorado

01 P. Laboratorio-1 (Castellano - Mañana)Mostrar/ocultar subpáginas

Calendario
SemanasLunesMartesMiércolesJuevesViernes
1-15

12:00-13:30

Profesorado

46 Teórico (Euskera - Tarde)Mostrar/ocultar subpáginas

Calendario
SemanasLunesMartesMiércolesJuevesViernes
1-15

14:00-15:30

15:30-17:00

Profesorado

46 P. Laboratorio-1 (Euskera - Tarde)Mostrar/ocultar subpáginas

Calendario
SemanasLunesMartesMiércolesJuevesViernes
1-15

17:00-18:30

Profesorado