template-browser-not-supported

Grado en Ingeniería Informática en Tecnologías de la Información

Back Back

Programación Concurrente y Paralela

Código asignatura
GIITIN01-3-006
Curso
Tercero
Temporalidad
Primer Semestre
Materia
Programación
Carácter
Obligatoria
Créditos
6
Pertenece al itinerario Bilingüe
No
Actividades
  • Prácticas de Aula/Semina (7 Hours)
  • Tutorías Grupales (2 Hours)
  • Prácticas de Laboratorio (28 Hours)
  • Clases Expositivas (21 Hours)
Guía docente

La asignatura Programación Concurrente y Paralela (PCP), asignatura adscrita al Departamento de Informática que se imparte en el primer semestre del tercer curso, forma parte de la materia de Programación, del Módulo de Software de Aplicación, junto con otras seis asignaturas: Fundamentos de Informática, Introducción a la Programación, Metodología de la Programación, Estructuras de Datos, Algoritmia y Tecnologías y Paradigmas de Programación. Dentro de la Programación, PCP cubre los principios básicos en el diseño y el análisis de los programas concurrentes y paralelos (ECR14.1).

La Programación Concurrente y Paralela (PCP) ha sido reconocida como eje prioritario tanto en los distintos programas marco de la Comunidad Europea como en los programas/directrices del Estado Español. Sus aplicaciones son numerosas y pueden encontrarse prácticamente en cualquier campo de las ciencias, la ingeniería y la industria.

Esta asignatura proporciona al alumnado una visión general e introductoria, pero profunda y actualizada, de todos los factores que intervienen en la obtención de soluciones Concurrentes y Paralelas correctas y eficientes. La asignatura comienza revisando los conceptos y problemas básicos inherentes a la concurrencia para, a continuación, introducir la computación paralela y sus modelos de programación.

Es recomendable que el alumnado haya cursado las asignaturas referentes a la materia Programación (especialmente la asignatura Algoritmia), así como disponer de conocimientos de hardware de ordenadores (asignaturas Fundamentos de Computadores y Redes y Arquitectura de Computadores) y sistemas operativos (asignatura Sistemas Operativos). Parte de la bibliografía está en inglés, por lo que es recomendable que el alumnado sea capaz de leer y comprender textos escritos en dicha lengua.

Competencias generales

GTR1

Capacidad para resolver problemas dentro de su área de estudio.

GTR2

Capacidad de abstracción: capacidad para crear y utilizar modelos que reflejen situaciones reales.

GTR3

Capacidad de actuar autónomamente.

GTR4

Capacidad de planificación y organización personal.

GTR6

Capacidad de comunicación efectiva (en expresión y comprensión) oral y escrita, con especial énfasis en la redacción de documentación técnica.

GTR7

Poseer las habilidades de aprendizaje necesarias para emprender estudios posteriores o mejorar su formación con un cierto grado de autonomía

GTR8

Tener motivación por la calidad y la mejora continua y actuar con rigor en el desarrollo profesional.

Competencias específicas

ECR14.1

Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela y concurrente

Resultados de aprendizaje

PR75 – PR78

Conocer e Implementar el paradigma de programación paralela basado en memoria distribuida y de paso de mensaje, basados en memoria compartida y heterogéneos/ híbridos.

PR79

Seleccionar el paradigma de programación paralela adecuado un problema dado

PR80

Evaluar la ganancia de un solución paralela frente a la equivalente mono-procesador

PR81

Desarrollar una solución paralela que cumpla con una especificación dada

PR82 – PR83

Comprender el concepto de hilo de ejecución y conocer sus modelos de programación

PR84

Seleccionar el modelo de programación con hilos adecuado a una especificación de problema dada

PR85 – PR88

Conocer los mecanismos de sincronización entre hilos. Conocer y prevenir sus problemas. Aplicar los mecanismos de sincronización adecuados a un problema dado.

PR89

Desarrollar una solución eficiente y eficaz multi-hilo a una especificación de problema dado

PR90

Evaluar la ganancia de una solución multi-hilo frente a la versión equivalente mono-hilo

Introducción

Presentación y Estado del Arte.

Modelos de Rendimiento y Análisis de Algoritmos Paralelos

Tiempo de ejecución, eficiencia, speed-up, coste, escalabilidad, etc.

Diseño de Algoritmos Paralelos

Descomposición, asignación, balanceo, solapamiento, particionado, etc. Algoritmos relajados, pipeline, maestro-esclavo, granja de procesos y replicados, etc.

Entornos Concurrentes y Paralelos

Concurrencia: conceptos básicos, modelos y mecanismos de sincronización. Paralelismo: modelos de programación. Aceleradoras y soluciones híbrido-heterogéneas.

La asignatura requiere un total 150 horas de trabajo presencial y no presencial del alumnado, de tal forma que:

  • Actividades Presenciales. Consisten en la asistencia a clases expositivas, a las prácticas de laboratorio y a las tutorías grupales. En las clases expositivas se alternará la exposición de contenidos teóricos de la asignatura con la realización de ejercicios sobre los mismos. Las prácticas de laboratorio serán individuales al objeto de garantizar la adquisición de las habilidades prácticas básicas por parte del alumnado. Las tutorías grupales se dedicarán a la puesta en común de las dudas y dificultades que se hayan presentado durante el curso.
  • Actividades No Presenciales. Consisten en el estudio de la materia teórica y la realización de los ejercicios/trabajos propuestos.

Las actividades formativas y su distribución en horas son:

MODALIDADES

Horas

%

Totales

Presencial

Clases expositivas

19

12.66

60

Práctica de aula / seminarios / talleres

7

4.66

Prácticas de laboratorio / campo / aula de informática / aula de idiomas

28

18.66

Prácticas clínicas hospitalarias

Tutorías grupales

2

1.33

Prácticas externas

Sesiones de evaluación

4

2.66

No presencial

Trabajos en grupo

15

10.00

90

Trabajo individual

75

50.00

Total

150

El desglose del trabajo por temas es:

PRESENCIAL

NO

PRESENCIAL

Temas

Horas totales

Clase Expositiva

Prácticas de aula

Prácticas de aula de  informática

Prácticas clínicas

Tutorías grupales

Prácticas  Externas

Sesiones de Evaluación

Total

Trabajo grupo

Trabajo autónomo

Total

Tema 1

2

1

1

1

1

Tema 2

34

4

3

4

1

1

13

17

17

Tema 3

57

10

3

14

1

2

30

32

32

Tema 4

57

4

2

10

1

17

30

10

40

Total

150

19

8

28

2

4

60

30

60

90

Evaluación en convocatoria ordinaria

La evaluación consta de dos partes, teoría y práctica, con los siguientes pesos:

  • Teoría: 50%
  • Práctica: 50%

Para superar la convocatoria ordinaria la calificación final debe ser superior o igual a 5 (sobre 10).

La evaluación de la parte práctica se corresponde con el modelo de evaluación continua. El alumnado debe realizar los trabajos, individuales o en grupo, que se le encomienden durante el desarrollo del curso.

La evaluación de la parte teórica se realiza en base a la calificación obtenida en dos pruebas escritas, de peso en la nota proporcional a la cantidad de materia que abarquen.

Las actividades evaluables no realizadas contabilizarán en el cómputo de la nota correspondiente como cero. Si el peso total de las actividades no realizadas supone más del 50% de la nota total la calificación final será “no presentado”.

Evaluación en convocatoria extraordinaria

La evaluación constará de una prueba teórica y de otra práctica, con los siguientes porcentajes sobre la nota final:

  • Examen extraordinario de teoría: 50%
  • Examen extraordinario de prácticas: 50%

Para superar la convocatoria la calificación final debe ser superior o igual a 5 (sobre 10).

Evaluación Diferenciada

Se aplican los mismos criterios que en la evaluación en convocatorias extraordinarias.

Bibliografía Básica

  • Almeida F.; Giménez D.; Mantas J.M.; Vidal A.M. Introducción a la programación paralela. Paraninfo.
  • Chandra R.; Dagum L.; Kohr D.; Maydan D.; McDonald J.; Menon R. Parallel Programming in OpenMP. Morgan Kaufmann.
  • Grama A.; Gupta A.; Karypis G.; Kumar V. Introduction to Parallel Computing. Addison-Wesley.
  • Pachecho, P.S. Parallel programming with MPI. Morgan Kaufmann.
  • Quinn M.J. Parallel Programming in C with MPI and OpenMP. McGraw Hill.
  • Wilkinson B.; Allen Michael. Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers. Prentice-Hall.

Bibliografía Complementaria

  • Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley.
  • Bertsekas D.P.; Tsitsiklis J.N. Parallel and Distributed Computation. Prentice Hall.
  • Chapman B.; Jost .; Pas van der R., Kuck D.J. Using OpenMP: Portable Shared Memory Parallel Programming. The MIT Press.
  • Dongarra J.; Foster I.; Fox G.; Gropp W.; Kennedy K.; Torczon L.; White A. (Eds.). Sourcebook of Parallel Computing. Morgan Kaufmann Publishers.
  • El-Ghazawi T.; Carlson W.; Sterling T.; Yelick K. UPC: Distributed Shared Memory Programming. John Wiley Sons.
  • Foster I. Designing and Building Parallel Programs. Addison-Wesley.
  • Gropp W. Lusk E.; Skjellum A. Using MPI: Portable Parallel Programming with the Message-Passing Interface. . The MIT Press.
  • Kumar V.; Grama A.; Gupta A.; Karypis G. Introduction to Parallel Computing. Design and Analysis of Algorithms. The Benjamin Cumming Publishing Company.
  • Lastovetsky, Alexey L.: Parallel Computing on Heterogeneous Networks. Wiley, 2003
  • Lester B.P. The art of Parallel Programming. Prentice Hall.
  • Nickolls J.; Buck I.; Garland M.; Skadron K. Scalable parallel programming with CUDA. Queue.
  • Parhami, B. Introduction to Parallel Processing. Kluwer Academic Publishers.
  • Roosta S.H. Parallel Processing and Parallel Algorithms. Springer.
  • Sanders J.; Kandrot E. CUDA by Example: An Introduction to General-Purpose GPU Programming. Pearson.

Documentación complementaria

Además de esta guía docente, el equipo docente proporcionará material adicional a través del entorno de enseñanza virtual de la asignatura:

https://www.innova.uniovi.es/innova/campusvirtual/campusvirtual.php