Computación paralela y distribuida

Anuncio
Computación paralela y distribuida
MSC-0302
Nombre de la asignatura:
Computación paralela y distribuida
Línea de trabajo:
Tecnologías web
Tiempo de dedicación del estudiante a las actividades de:
1.
DOC
TIS
TPS
Horas totales
Créditos
48
20
100
168
6
Historial de la asignatura.
Fecha revisión /
actualización
Participantes
Observaciones,
cambios o justificación
Febrero de 2011
Dr. Jesús Alberto Verduzco Ramírez
M.C. Juan García Virgen
Consejo de Posgrado del Departamento
de Sistemas y Computación
2.
Pre-requisitos y correquisitos.
Después de acreditar Seminario de Investigación I y estar cursando el tercer semestre.
3.
Objetivo de la asignatura.
Aprender los conceptos básicos de arquitectura de computadoras paralelas, tendrá la capacidad de
programar a nivel de hilos y de procesos en computadoras con arquitectura de múltiples núcleos,
aprenderá a programar en un ambiente de cómputo distribuido.
4.
Aportación al perfil del graduado.
Las necesidades excesivas de procesamiento, almacenamiento y precisión de numerosas
aplicaciones actuales, obligan a diseñar y desarrollar software eficiente y seguro para plataformas
multiprocesador. Por otra parte, el auge de los procesadores multinúcleo y de las tecnologías de
redes de ordenadores de alto desempeño
ha incrementado
la difusión del procesamiento
paralelo. Sin embargo, para utilizar los sistemas paralelos y/o distribuidos de forma eficiente es
necesaria la técnica de la programación paralela.
Esta 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 y los sistemas multinúcleo.
Los objetivos particulares son:

Dotar al alumno de un conocimiento general sobre programación paralela y
arquitecturas paralelas.

Conocer distintos modelos de programación y técnicas para el diseño evaluación e
implementación de algoritmos paralelos.

Dotar al alumno de cierta experiencia en la resolución paralela y distribuida de
problemas con objeto de mejorar las prestaciones.

Conocer los entornos de programación más difundidos para el desarrollo de sistemas
paralelos.
5.
Contenido temático.
Unidad
Temas
Subtemas
1.1 Fundamentos de sistemas
de
cómputo
paralelo y distribuido.
1.2 Clasificación lógica del paralelismo
1.3 Clasificación
1
Revisión de tecnologías de
programación paralela.
física
de
los
ordenadores
paralelos
1.4 Sistemas a memoria compartida
1.5 Sistemas a memoria distribuida
1.6 Sistemas multinucleo
1.7 Tecnologías de Cluster
1.8 Computación Grid
1.9 Computación en la nube
2.1. Modelos de paralelismo
2.2. Niveles de paralelismo.
2.3. Fases en la creación de programas paralelos
2.4. Paradigmas de la programación paralela
2
Diseño de programas paralelos
y distribuidos.
2.5. Algoritmos paralelos y distribuidos
2.6. Complejidad y eficiencia de algoritmos
paralelos
2.7. Herramientas para el monitoreo de ejecución
de algoritmos paralelos.
2.8. Equilibrio de carga de tareas
3.1. Conceptos generales y terminología
3
Tecnologías de aplicaciones
distribuidas.
3.2. Modelos de computación distribuida
3.3. Biblioteca para el desarrollo de aplicaciones
distribuidas.
Unidad
Temas
Subtemas
3.4. Sincronización de tareas
3.5. Distribución de la carga
3.6. Aplicaciones distribuidas
3.7. Mecanismos de tolerancia a fallas en
computación distribuida.
3.8. Migración de tareas entre nodos
4.1.
Introducción y motivación de OpenMP
4.2.
Conceptos generales y terminología
habitual
4
4.3.
Regiones paralelas y regiones seriales
4.4.
Variables compartidas y variables privadas
Interfaz de programación de
4.5.
Distribución de la carga computacional
aplicaciones OpenMP y de pase
4.6.
Desarrollo de programas con OpenMP
de mensajes MPI.
4.7.
Modelo de comunicación basado en paso
de mensajes
4.8.
Entorno MPI
4.9.
Principales directivas MPI
4.10. Desarrollo de programas con MPI
4.11. Pruebas de desempeño
6.
Metodología de desarrollo del curso.

Exposición de contenidos mediante presentación o explicación por parte del profesor.

Sesión supervisada donde los estudiantes trabajan en grupo y reciben asistencia y guía
cuando sea necesaria.

Situaciones en las que el alumno debe explorar y trabajar un problema práctico aplicando
conocimientos interdisciplinarios.

Exposición de ejercicios asignados a un grupo de estudiantes que necesita trabajo
cooperativo para su conclusión.

Actividades desarrolladas en espacios especiales con equipamiento especializado
(laboratorio, aulas informáticas).

Conjunto de pruebas escritas, orales, prácticas, proyectos, trabajos, etc. utilizados en la
evaluación del progreso del estudiante.

Preparación de actividades para exponer o entregar en las clases prácticas.

Estudio de contenidos relacionados con las clases teóricas: Incluye cualquier actividad de
estudio que no se haya computado en el apartado anterior (estudiar exámenes, trabajo en
biblioteca, lecturas complementarias, hacer problemas y ejercicios, etc.).
7.
Sugerencias de evaluación.

Examen escrito de respuesta abierta. Prueba cronometrada, efectuada bajo control, en la
que el alumno construye su respuesta. Se le puede conceder o no el derecho a consultar
material de apoyo.

Trabajo académico. Desarrollo de un proyecto que puede ir desde trabajos breves y
sencillos hasta trabajos amplios y complejos.

Estudios de caso: Supone el análisis y la resolución de una situación planteada que
presenta problemas de solución múltiple, a través de la reflexión y el diálogo para un
aprendizaje grupal, integrado y significativo.

Lectura y análisis de artículos científicos relacionados con la temática de la computación
móvil.
Porcentajes sugeridos:
8.
Prácticas
Proyectos
Tareas
Exámenes
Participación
20%
20%
10%
40%
10%
Bibliografía y software de apoyo.
Lecturas obligatorias:
Unidad 1
 Buyya, R. (1999).High Performance Cluster Computing:Architectures and Systems. Prentice
Hall.
 Kumar, V.;Grama, A.; Gupta, A.; Karypis G. (2003). Introduction to Parallel Computing.
Benjamin/Cummings Publishing Company.
 Glove, D. (2010). Multicore Application Programming. Addison Wesley.
Unidad 2
 Buyya, R. (1999). High Performance Cluster Computing: Programming and Applications.
Prentice Hall.
 Foster, I. (1995). Designing and Building Parallel Programs. Addison-Wesley Publishing
Company.
 Wadleigh, K.; Crawford, I. (2000).Software optimization for High Performance Computing.
Prentice Hall PTR.
 Power, H. (1999). Algorithms & Applications in Parallel Computing. WITPress
Unidad 3
 Quinn, M.J. (2003). Parallel Programming in C with MPI and OpenMP. McGraw-Hill.
 Kumar, V.;Grama, A.; Gupta, A.; Karypis G. (2003). Introduction to Parallel Computing.
Benjamin/Cummings Publishing Company.
Unidad 4
 Chapman, B.; Jost, G. (2007). Using OpenMP, Portable Shared Memory Parallel
Programming. Scientific and Engineering Computation Series.
 Akhter, S.; Robert, J. (2003). Multi-Core Programming Increasing Performance Through
Software Multithreading. Intel Press
Bibliografía Complementaria:
 Distributed and Paralled System, Zoltán Juhász
 F. Almeida; D. Gimenez, Mantas, J.
(2008). Introduccion a la Programacion Paralela.
Paraninfo Cengage Learning.
 Chandra, R.; Dagum, L.; Kohr, D.; Maydan, D. (2001). Parallel Programming in OpenMP.
Academic Press. USA.
 Kumar, V.;Grama, A.; Gupta, A.; Karypis G. (2003). Introduction to Parallel Computing.
Benjamin/Cummings Publishing Company.
 Wilkinson, B., Allen, M. (2005). Parallel Programming. Techniques and applications using
networked workstations and parallel computers. Vol II. Prentice-Hall.
 C. Xavier, S.S. Iyengar (1998). Introduction to Parallel Algorithm. John Wiley & sons, inc.
USA.
Páginas web:
 Página oficial de MPICH: http://www.mcs.anl.gov/research/projects/mpi/mpich1/index.htm
 Página oficial LAM-MPI: http://www.lam-mpi.org/
 http://www.top500.org
 http://www.mpi-forum.org/
 http://www.open-mpi.org/
 http://www.openmp.org/
 http://www.supercomputingonline.com/
 http://www.ncsa.illinois.edu/
Software de apoyo:
 Sistema operativo Linux
 Lenguaje de programación Ansi C, C++
 Librería de paso de mensajes MPI
 Librería de memoria compartida OpenMP
9.
Actividades propuestas.
Se sugiere que las prácticas propuestas sean realizadas por equipos de tres personas para
estar en concordancia con la finalidad de fomentar la discusión de ideas que plantea el curso y
fomentar el trabajo colaborativo. En este sentido, se proponen las siguientes prácticas por
unidad:
Unidad

Actividad
Proporcionar al estudiante el panorama general del
supercómputo y sus aplicaciones.

1.- Revisión de tecnologías de
programación paralela.
Ejecución
de
benchmarks
para
medir
el
desempeño de procesadores.

Desarrollo de aplicaciones multihilos para
los
procesadores multinúcleo.

Instalación
y
configuración
de
un
cluster
de
computadoras
2.- Diseño de programas
paralelos y distribuidos.

de
la
complejidad
de
algoritmos
paralelos y distribuidos

Determinación de la eficiencia.

Experimentación
3.- Tecnologías de aplicaciones
distribuidas.
Determinación
en
ambientes Grid con
Globus
Toolkit y gLite

Experimentación
con
el
planificador
distribuido
Condor.
4.- Interfaz de programación de
aplicaciones OpenMP y de pase

Desarrollo de aplicaciones numéricas y para la
manipulación de datos
de mensajes MPI.
10. Nombre y firma del catedrático responsable.
Descargar