UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA DIRECCIÓN GENERAL DE ASUNTOS ACADÉMICOS PROGRAMA DE ASIGNATURA POR COMPETENCIAS I. DATOS DE IDENTIFICACIÓN 1. Unidad Académica: _____Facultad de Ingeniería______________________________________________________ 2. Programa (s) de estudio: (Técnico, Licenciatura) Ingeniero en Computación 4. Nombre de la Asignatura: Arquitectura de Computadoras II 6. HC: 5 HL__2__ HT_____ HPC_____ HCL_____ HE 7. Ciclo Escolar: 2002-1 9. Carácter de la Asignatura: 3. Vigencia del plan:_95-1_ 5. Clave: _2523_ CR_____ 8. Etapa de formación a la que pertenece: __Disciplinaria__ Obligatoria ___X_______ 10. Requisitos para cursar la asignatura: Optativa ____________ Se recomienda haber cursado Análisis de Sistemas Operativos, así como tener nociones de Linux y Lenguaje C. Formuló: M.C. Cecilia Curlango Rosas. M.C. Aglay González Pacheco Saldaña. M.C. José Antonio Cárdenas Haro. M.C. Jorge Eduardo Ibarra Esquer. Ing. Patricia Luz Aurora Rosas Méndez. Vo. Bo. _Ing. Miguel Angel Martínez Romero Cargo: _Sub-director Académico_______Fecha: Junio de 2002 II. PROPÓSITO GENERAL DEL CURSO Dar al alumno las herramientas básicas para realizar cómputo paralelo, ampliando de esta manera sus conocimientos generales así como las áreas en las que puede desempeñarse profesionalmente. III. COMPETENCIA (S) DEL CURSO Elaborar aplicaciones paralelas para la solución de problemas científicos y de ingeniería. IV. EVIDENCIA (S) DE DESEMPEÑO Elaboración de un proyecto que resuelva problemas aplicando las herramientas del cómputo paralelo. V. DESARROLLO POR UNIDADES COMPETENCIA Distinguirá las diferencias entre el cómputo paralelo y el cómputo secuencial a través de lecturas introductorias, investigación documental y discusiones de grupo para identificar la pertinencia de soluciones de cómputo paralelo. CONTENIDO 1. FUNDAMENTOS TEÓRICOS DEL CÓMPUTO PARALELO. 1.1. Antecedentes. 1.1.1. Historia del cómputo paralelo 1.1.2. Ventajas 1.1.3. Taxonomía 1.2. Paradigmas del cómputo paralelo 1.2.1. Paradigmas del software paralelo 1.2.2. Clasificación de paralelismo 1.2.2.1. Temporal 1.2.2.2. Espacial 1.2.2.3. Independiente 1.2.3. Niveles de paralelismo 1.2.4. Desempeño 1.2.5. Ley de Amdahl 1.3. Paralelismo en los programas 1.3.1. Estructuras de datos 1.3.2. Paralelismo de datos 1.3.3. Localidades de datos 1.3.4. Ciclos paralelos 1.3.5. Sentencias para control paralelo 1.3.6. Pipelining 1.4. Arquitecturas paralelas de computadoras 1.4.1. Tipos de organización de procesadores 1.4.1.1. Rejilla 1.4.1.2. Hiperárbol 1.4.1.3. Pirámide 1.4.1.4. Hipercubo 1.4.1.5. Conexión cubo en ciclos DURACIÓN 15 HORAS COMPETENCIA Analizar problemas computacionales y discernir entre los algoritmos de cómputo paralelo para obtener una solución apropiada CONTENIDO 2. ALGORITMOS PARALELOS Y COMPLEJIDAD COMPUTACIONAL. 2.1. Flujo de datos y paralelismo implícito 2.1.1. Von Neumann vs Paralelo 2.2. Modelos computacionales RAM y PRAM 2.2.1. Introducción 2.2.2. Modelos de PRAM 2.2.3. Tipos de PRAM CRCW 2.2.4. Algoritmos PRAM 2.2.4.1. Modelo del árbol binario 2.2.4.2. Reducción paralela 2.2.4.3. Suma de n valores 2.3. Organización de procesadores 2.3.1. Organización de procesadores representados por grafos 2.3.2. Diámetro 2.3.2.1. Ancho de bisección de la red 2.3.2.2. Número de aristas por nodo 2.4. Introducción a la complejidad de los algoritmos paralelos 2.4.1. Tiempos de corrimiento 2.4.2. La gran “O” DURACIÓN 20 HORAS COMPETENCIA Elaborar programas que implementen algoritmos paralelos para reducir el tiempo de ejecución de procesos de cómputo aplicando los modelos correctos. CONTENIDO 3. Diseño de programas paralelos 3.1. Modelos de cómputo paralelo 3.1.1. Modelos de hardware paralelo 3.1.1.1. Tipos de sistemas de memoria 3.1.1.2. Sistemas de memoria única 3.1.1.3. Sistemas de memoria múltiple 3.1.2. Modelos de ejecución paralela 3.1.2.1. Paralelismo a nivel procesos 3.1.2.2. Paralelismo a nivel hilos 3.1.2.3. Paralelismo a nivel declaraciones 3.1.3. Modelos de computación distribuida 3.1.3.1. Modelo MPI (Message-Passing-Interface) 3.1.3.2. Modelo PVM (Parallel Virtual Machine) 3.2. Control del paralelismo 3.2.1. Segmentos 3.2.2. Procesos 3.2.3. Semáforos 3.2.4. Lectores y escritores 3.2.5. Secciones críticas 3.2.6. Sincronización 3.2.7. Comunicación interprocesos 3.3. Tendencias del cómputo paralelo 3.3.1. Proyecto Grid DURACIÓN 29 HORAS COMPETENCIA Aplicar las herramientas de programación paralela para la elaboración de programas paralelos. NOTA: Esta unidad se verá de manera simultánea con las unidades anteriores, dedicándole una hora a la semana y como apoyo al trabajo en laboratorio. CONTENIDO 4. HERRAMIENTAS PARA PROGRAMACION PARALELA 4.1. Introducción a los clusters Linux 4.2. Ventajas y desventajas entre PVM, MPI y Cilk DURACIÓN 16 HORAS VI. ESTRUCTURA DE LAS PRACTICAS No. de Práctica 1 2 Competencia(s) Familiarizarse con el funcionamiento de programas en paralelo usando los comandos básicos de MPI, así como comprender la manera en que un programa se manda a ejecutar en varios procesadores. Familiarización con los comandos básico de envío y recepción de mensajes Descripción Material de Apoyo Duración Escribir el código proporcionado por el Computadora, (una por cada 2 hrs. instructor, compilarlo y verificar su alumno), con sistema funcionamiento. operativo Linux y librerías de MPI Hacer un programa donde se aplique la Computadora, (una por cada 4 hrs. estructura de un programa paralelo y se alumno), con sistema utilicen los comandos de MPI operativo Linux y librerías de MPI 3 Conocimiento de las técnicas o Hacer un programa donde se evalúe el Computadora, (una por cada 2 hrs. procedimientos para la evaluación de tiempo transcurrido entre dos puntos de un alumno), con sistema programas en paralelo. proceso en MPI. operativo Linux y librerías de MPI 4 Comprender las ventajas de paralelizar un Hacer un programa donde se resuelva un algoritmo básico como por ejemplo: algoritmo. 5 calcular el producto punto de dos vectores multiplicación de matrices usando producto punto regla del trapezoide (integral de una función desde un punto A a un punto B) Computadora, (una por cada 4 hrs. alumno), con sistema operativo Linux y librerías de MPI Comprensión del concepto de aceleración, Hacer dos programas para un mismo algoritmo Computadora, (una por cada 6 hrs. (por ejemplo un método de ordenación), el alumno), (speed up), y la forma de calcularlo. con sistema primer programa debe ser totalmente operativo Linux y librerías secuencial y el segundo programa debe utilizar de MPI instrucciones en paralelo. Medir la aceleración (speed up), eficiencia y costo de los dos programas. 6 Comprensión del concepto de orden del Hacer un programa donde se resuelva un Computadora, (una por cada 4 hrs. algoritmo con mayor dificultad que la práctica algoritmo y la forma en que este se mejora alumno), con sistema anterior como: al implementarlo paralelamente. operativo Linux y librerías No. de Práctica Competencia(s) Descripción 7 Material de Apoyo Duración multiplicación de matrices, utilizando el de MPI Algoritmo de Fox. Método bitónico de ordenación Tour de Euler Algoritmos de azar (Numérico, Montecarlo y L.V.) Comprensión de la configuración de la red Hacer un programa donde en cada ejecución se Computadora conectada en 4 hrs. para la ejecución de los programas en utilicen diferente número de procesadores. red, (una por cada alumno), Evaluar el tiempo de ejecución del programa con sistema operativo Linux múltiples procesadores al utilizar un número mayor de procesadores. y librerías de MPI. Realizar una gráfica de rendimiento. 8 Integración de los conceptos vistos durante Proponer un problema, hacer un programa Computadora conectada en 6 hrs. paralelizado y medir su rendimiento. Resolver red, (una por cada alumno), el semestre. el mismo problema en secuencial para con sistema operativo Linux comparar. y librerías de MPI. VII. METODOLOGÍA DE TRABAJO Se sugiere que los grupos de laboratorio sean de un máximo de 8 alumnos. La unidad IV se cubrirá a la par con las otras unidades durante el semestre. Las prácticas de laboratorio serán individuales. VIII. CRITERIOS DE EVALUACIÓN 3 Parciales Ordinario Tarea Laboratorio 60% 20% 10% 10% Aprobar laboratorio para aprobar la materia. La calificación de laboratorio deberá ser numérica. Se sugiere que el proyecto contenga la aplicación de todos los conceptos aprendidos, si lo hay. IX. BIBLIOGRAFÍA Básica Parallel Computer Architecture. A Hardware/Software Approach. Anoop Gupta, David E. Culler Jaswinder Pal Singh Morgan Kaufmann Publishers 1er Edición Agosto de 1998 ISBN 1558603433 Fundamentals of Sequential and Parallel Algorithms Ken A. Berman, Jerome Paul, Kenneth A. berman Brooks Cole 1er. Edición 1996 ISBN 0534946747 Parallel Programming with MPI Peter S. Pacheco Morgan Kaufmann Publishers 1er. Edición 1996 ISBN 1558603395 Introduction to Parallel Algorithms Joseph JaJa Addison-Wesley 1992 ISBN 0201548569 MPI: The Complete Reference (Vol. 1) Marc Snir, et. al. Cambridge, Mass. : The MIT Press, 2a. Edición c1998 ISBN 0262692155 Complementaria MPI: The Complete Reference (Vol. 2) Marc Snir, et. al. Cambridge, Mass. : The MIT Press, 2a. Edición c1998 ISBN 0262571234 Parallel Programming in C with MPI and OpenMP Michael J. Quinn Ed. McGraw Hill Science/Engineering/Math Junio, 2003 ISBN 0072822562