4º Ingeniería Superior en Informática
Depto. de Lenguajes y Sistemas Informáticos
Universidad de Granada
Objetivos
Las necesidades de cómputo de numerosas aplicaciones obligan a
desarrollar software eficiente y seguro para plataformas
multiprocesador. Además, el auge de los procesadores
multinúcleo y de las redes de ordenadores ha aumentado la
difusión del procesamiento paralelo que cada vez está
más al alcance del público en general. No obstante, para
utilizar los sistemas paralelos y/o distribuidos de forma
eficiente es necesaria la programación paralela. La
asignatura abarca fundamentalmente las nociones básicas en la
programación paralela y distribuida, centrándose en el
desarrollo de software para arquitecturas como los "clusters" de
ordenadores, los sistemas multinúcleo y los procesadores gráficos.
Los objetivos particulares son:
1. Dotar al alumno de un conocimiento general sobre
programación paralela y arquitecturas paralelas.
2. Conocer distintos modelos de programación y
técnicas
para el diseño evaluación e
implementación de
algoritmos paralelos.
3. Dotar al alumno de cierta experiencia en la resolución
paralela y distribuida de problemas con objeto de mejorar las
prestaciones.
4. Conocer los entornos de programación más
difundidos para el desarrollo de sistemas paralelos.
Programa de
teoría (con enlaces a documentación)
Tema 1: INTRODUCCIÓN A LA PROG. DISTRIBUIDA Y PARALELA (actualizada)
1.1: Motivación y aspectos de
la Programación Paralela
1.2: Modelos de Arquitecturas Paralelas
1.3: Modelos de Programación
Paralela.
1.4: Evaluación del
rendimiento de Programas Paralelos
Tema 2: METODOLOGÍA DE PROGRAMACIÓN PARALELA
2.1: Descomposición
2.2: Asignación
2.3: Estudio de casos
prácticos
Tema 3: NOTACIONES DE PROGRAMACIÓN PARALELA
3.1: La Interfaz de Paso de
Mensajes: MPI.
3.2: Programación paralela con hebras basada en directivas: OpenMP.
3.3. Introducción a la programación de hardware gráfico paralelo:CUDA
TRABAJOS PRESENTADOS
Programa de prácticas (con enlaces a documentación)
PRÁCTICA 1: INTRODUCCIÓN A LA INTERFAZ DE PASO DE MENSAJES MPI
- Pasos necesarios para usar mpich en las aulas de prácticas y en ordenadores corriendo Linux
- Tutorial de MPI interactivo.
- Versión comprimida del tutorial
PRÁCTICA 2: IMPLEMENTACIÓN PARALELA DE ALGORITMOS DE ANÁLISIS DE GRAFOS. Algoritmo de Floyd Descomposición 1D y 2D
- Código de partida para la práctica
PRÁCTICA 3 (VOLUNTARIA): IMPLEMENTACIÓN PARALELA DE ALGORITMOS DE MULTIPLICACIÓN DE MATRICES. Algoritmo de Cannon y de Fox con descomposición 2D
PRÁCTICA 4: IMPLEMENTACIÓN PARALELA DE UN ALGORITMO DE RAMIFICACIÓN-ACOTACIÓN. Resolución distribuida del
problema del Viajante de Comercio
- Código de partida para la práctica
PRÁCTICA5 (VOLUNTARIA):INTRODUCCIÓN A LA PROGRAMACIÓN EN OpenMP
- Códigos de partida para la práctica
- Compilador de Intel. Licencia no comercial
Normas de Evaluacion
Las partes teóricas y prácticas de la asignatura se
evalúan por separado y
tienen el mismo peso en la nota final de la asignatura (50 %). Para
aprobar la asignatura es necesario tener una nota media superior o
igual a 5 (sobre 10). Para hacer media entre teoría y
prácticas es necesario obtener al menos un 3 (sobre 10) en
cada parte. La calificación de la parte aprobada se guarda hasta
la convocatoria de diciembre del curso siguiente.
La teoría se evaluará mediante un examen final, aunque existe la posibilidad de superarla
mediante exámenes parciales eliminatorios (que se
realizarán para cada tema) o realizando un trabajo.
Se dará la posibilidad de realizar un trabajo
teórico-práctico, sobre algún tópico
relacionado con la asignatura que el profesor estime interesante, para
subir la nota final o superar temas del programa de
teoría. Los trabajos se asignan antes de diciembre.
También se valorará la participación activa del
alumno en clase a través de la realización de ejercicios
y presentación de trabajos sobre los contenidos de la
asignatura.
Para superar la parte de prácticas, el alumno deberá
entregar la documentación requerida en cada guión de
prácticas de las prácticas obligatorias (tanto en
convocatoria ordinaria como extraordinaria) y de las prácticas
optativas que desee.
Para que dicha documentación pueda ser evaluada, será
necesaria la asistencia a algunas de las sesiones de
prácticas dentro de los límites de entrega de cada
práctica (en convocatoria extraordinaria, el profesor y el
alumno acordarán un encuentro para realizar la defensa de las
prácticas no superadas). La nota de cada práctica
individual dependerá principalmente de la defensa que el alumno
haga de su trabajo.
Las prácticas se podrán realizar por grupos de dos
personas. La superación de las prácticas 1 es obligatoria
pero no contribuye a la nota de prácticas. Las prácticas
2 y 4 contribuirán con un 45%, y 55% respectivamente en la
nota final de prácticas.
Las prácticas 3 y 5 son voluntarias y permitirán al alumno subir su nota de prácticas (sobre 10) hasta 3 y 1.5 puntos respectivamente.
Fechas límite de entrega de cada práctica:
Obligatorias
- Práctica 1: 28 Octubre 2009
- Práctica 2: 2 Diciembre 2009
- Práctica 4: 27 Enero 2010
- Práctica 3: 16 Diciembre 2009
- Práctica 5: 27 Enero 2010
Temas de interés para Trabajos
- Grid Computing
- Entornos, lenguajes y herramientas para programar procesadores multinúcleo.
- Frameworks para programación paralela con procesadores gráficos (GPUs).
- Intel Threading Building Blocks.
- Los clusters de ordenadores como plataforma de procesamiento paralelo.
- Cuestiones de rendimiento en OpenMP.
- Herramientas de Análisis del rendimiento de programas paralelos (depuradores, trazadores, etc.).
- Programación paralela en sistemas heterogéneos. Open Computing Language.
- Algún tópico relacionado con la asignatura que proponga el alumno.
- Algoritmos paralelos para alguna área de interés (Procesamiento de imágenes, optimización, Simulación, Ordenación, minería de datos, datawarehouse, etc.).Grid Computing
Horarios
Horario de teoría: Martes de 12:00 a 14:00 en Aula 1.2.
Horarios de prácticas: Aula 3.7.
- Grupo 1: Miércoles de 16:00 a 18:00.
- Grupo 2: Miércoles de 18:00 a 20:00.
Calificaciones
Bibliografía
- Introduccion a la Programacion Paralela. F. Almeida, D. Gimenez, Jose Miguel Mantas, A.M. Vidal. Paraninfo Cengage Learning, 2008.
- Introduction to Parallel Computing. Kumar, V., Grama, A., Gupta, A., Karypis G. Benjamin/Cummings Publishing Company, 2003.
- Parallel Programming. Techniques and applications using networked workstations and parallel computers. Vol II. Wilkinson, B., Allen, M. Prentice-Hall. 2005.
- Multi-Core Programming
Increasing Performance through Software Multithreading
Shameem Akhter and Jason Roberts. Intel Press 2003 - Parallel Programming in C with MPI and OpenMP. Michael J. Quinn. McGraw-Hill, 2003.
- Designing and Building Parallel Programs. Foster, Ian. Addison-Wesley Publishing Company. 1995.
- Página Oficial de MPI:
- Página Oficial de OpenMP
- NVIDIA CUDA Programming Guide