Laboratorio de Paralelismo

Anuncio
FACULTAD DE INFORMÁTICA
DPTO. DE ARQUITECTURA Y TECNOLOGÍA DE COMPUTADORES, KAT-ATC
Laboratorio de Paralelismo
www.sc.ehu.es/arpar
Javier Muguerza
j.muguerza@ehu.es
Agustin Arruabarrena
agustin.arruabarrena@ehu.es
A lo largo de la asignatura Arquitecturas Paralelas hemos estudiado la estructura de los sistemas paralelos
—máquinas de memoria común y máquinas de memoria distribuida— así como los principales problemas
nuevos que hay que resolver para poder disponer de máquinas paralelas de alto rendimiento —coherencia
de los datos, sincronización de procesos, red de comunicación…—. Junto con ello, hemos estudiado
algunas de las técnicas más habituales para poder ejecutar en paralelo, de manera eficiente, programas
(bucles) de alto coste computacional: análisis de dependencias, optimizaciones, scheduling de bucles…
En esta asignatura (9 créditos: 4 t + 5 p) vamos a trabajar con las herramientas más extendidas para
programar aplicaciones en paralelo: OpenMP en el caso máquinas de memoria común y MPI para
máquinas de memoria distribuida, junto con UPC, una extensión de C para sistemas paralelos de memoria
común distribuida. Mediante el uso de diferentes programas ejemplo, iremos viendo las posibilidades de
ambos APIs, así como una metodología de programación en paralelo.
La evaluación de la asignatura se hará en base a la asistencia y participación en las sesiones de
clase/laboratorio junto con los trabajos prácticos obligatorios realizados durante el curso; la nota se puede
completar, de manera optativa, desarrollando, de manera individual, alguna aplicación paralela o
realizando un estudio sobre otros temas de interés, tales como organización y gestión de clusters, grid
computing, protocolos de comunicación de alto rendimiento, entrada/salida paralela, tolerancia a fallos,
herramientas de desarrollo, etc.
PROGRAMA de la ASIGNATURA
0. REVISIÓN DE CONCEPTOS (breve repaso)
1.1 Estructura de los sistemas paralelos: máquinas SMP, DSM y MPP; Clusters. Situación actual.
1.2 Infraestructura de comunicaciones. Paso de mensajes. Protocolos de comunicación de alto
rendimiento.
1.3 Coherencia de los datos. Sincronización de procesos. Modelo de consistencia de la memoria.
1.4 Modelos de paralelismo. Análisis de dependencias. Principales optimizaciones.
1.5 Rendimiento del sistema paralelo.
1.6 Ejercicios. Redacción de informes técnicos; presentación de resultados.
1.
PROGRAMACIÓN DE SISTEMAS DE MEMORIA COMPARTIDA (SMP): OpenMP.
2.1
2.2
2.3
2.4
2.5
2.6
Introducción.
Regiones paralelas. Gestión de threads; ámbito de las variables.
Reparto de tareas. Paralelización y planificación de bucles. Secciones paralelas.
Sincronización de los threads: secciones críticas, cerrojos, eventos y barreras.
Otras cuestiones: carreras y deadlocks. Análisis del rendimiento.
Ejercicios prácticos.
3.
PROGRAMACIÓN DE SISTEMAS DE MEMORIA DISTRIBUIDA: MPI.
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
Introducción.
Funciones MPI básicas: inicio y control de procesos; envío y recepción de mensajes.
Otros modos de comunicación punto a punto: síncrona, inmediata...
Funciones de comunicación colectiva. Cálculo en grupo. Sincronización.
Tipos de datos derivados: vector, indexed, struct…. Empaquetamiento de datos.
Comunicadores y topologías.
Entrada/salida paralela (introducción)
Otras cuestiones: rendimiento, debugging, profiling...
Ejercicios prácticos.
4.
TIPOS DE PROBLEMAS PARALELOS.
UNA METODOLOGÍA DE DESARROLLO DE PROGRAMAS PARALELOS.
5.
OTRAS ALTERNATIVAS: UPC, unified parallel C.
5.1
5.2
5.3
5.4
5.5
5.6
6.
Introducción.
Variables y punteros. Movimiento de datos. Memoria dinámica.
Reparto de tareas (work sharing).
Sincronización y consistencia.
Operaciones colectivas.
Conclusiones.
(OPTATIVO) TRABAJOS COMPLEMENTARIOS.
BIBLIOGRAFÍA
(para cuestiones específicas del tema 1, ver bibliografía de la asignatura Arquitecturas Paralelas)
1.
2.
R. Chandra et al.: Parallel programming in OpenMP. Morgan Kaufmann, 2001.
B. Chapman et al.: Using OpenMP. Portable shared memory parallel programming. The MIT Press,
2008.
3.
4.
5.
P.S. Pacheco: Parallel Programming with MPI. Morgan Kaufmann, 1997.
W. Groop et al: Using MPI. Portable Parallel Programming with the Message Passing Interface.
The MIT Press, 1999.
M. Snir et al: MPI. The complete reference (vol. 1 & 2). The MIT Press, 1998.
6.
T. El-Ghazawi et al.: UPC: Distributed Shared Memory programming. J. Wiley, 2005.
7.
8.
F. Almeida et al.: Introducción a la Programación Paralela. Paraninfo, 2008.
B. Wilkinson, M. Allen: Parallel Programming. Techniques and applications using networked
workstations and parallel computers. Pearson, 2005.
9. M.J. Quinn: Parallel Programming in C with MPI and OpenMP. McGraw-Hill, 2004.
10. A. Grama et al.: Introduction to Parallel Computing (2. ed.). Pearson, 2003.
11. I. Foster: Designing and Building Parallel Programs. Addison Wesley, 1995. (existe una versión on
line actualizada con mucha información complementaria en www-unix.mcs.anl.gov/dbpp/)
Otros temas complementarios:
1.
2.
3.
4.
T. Sterling: Beowulf Cluster Computing with Linux. The MIT Press, 2002.
J.D. Sloan: High Performance Linux Cluster with OSCAR, Rocks, OpenMosix & MPI. O´Reilly,
2005.
I. Foster et al: The Grid 2. Morgan Kaufmann, 2004.
J. May: Parallel I/O for High Performance Computing. Morgan Kaufmann, 2001.
Algunas direcciones útiles para la asignatura:
www.top500.org
Cantidad de información sobre los 500 computadores más rápidos del mundo. Se actualiza cada seis meses. A
partir de dicha página se puede acceder a multitud de otras páginas.
www.openmp.org
www.compunity.org.
Páginas principales de OpenMP, estándar de programación paralela para sistemas de memoria compartida..
www-unix.mcs.anl.gov/mpi
www.lam-mpi.org
Páginas de MPI, el estándar de programación paralela mediante paso de mensajes, y de sus dos implementaciones
libres más utilizadas, mpich y lam.
upc.lbl.gov
upc.gwu.edu
www.intrepid.com/upc.html
Páginas principales de UPC, extensión de C para programar sistemas paralelos de memoria común distribuida.
Otros sitios web interesantes:
www.ieeetcsc.org / www.beowulf.org
Páginas web sobre clusters y cluster computing
www.globus.org / www.gridcomputing.org / gridcafe.web.cern.ch/gridcafe
Páginas web de Grid Computing
www.infinibandta.org / www.myri.com
Infraestructura de comunicación, para clusters y sistemas SAN
Evaluación de la asignatura
La evaluación de la asignatura se va a hacer de acuerdo a los siguientes criterios:
- Obligatorio:
1. Asistencia y participación activa en las sesiones de clase y
laboratorio (> 70%).........................................................................................2 puntos
2. Ejercicios obligatorios (junto con un informe de resultados) .......................6,5 puntos
- Optativo:
3. Ejercicios optativos (junto con un informe de resultados) .............................2,5 puntos
4. Trabajos optativos sobre temas complementarios ........................................2,5 puntos
(en ambos casos, a elegir de las propuestas que haremos durante el
curso, o, mejor aún, a propuesta del alumno)
[ 5. Examen escrito/de laboratorio (alternativa a 3/4) .........................................2 puntos ]
Los ejercicios del punto 2 se evalúan en conjunto al grupo de trabajo (max. dos personas). Los ejercicios y
trabajos optativos, en cambio, son individuales (o, en su caso, en grupo, en función de la entidad del
trabajo escogido).
Se evaluarán las soluciones propuestas, las pruebas realizadas y los resultados obtenidos, así como
aspectos formales de los informes de resultados: redacción, estructuración y presentación.
Se pueden estudiar casos particulares de evaluación a petición del alumno/a al comienzo del curso.
Descargar