PROGRAMA DEL CURSO (descargar aqui).
TEMA 0. CHARLA INTRODUCTORIA: (1 clase, 1/2 semana):
0.1. Presentación del Profesor. 0.2. Presentación de la asignatura: entrega de la nota informativa, nombre de la materia y su significado 0.3. Objetivos de la asignatura y su necesidad en la carrera. 0.4. Contenido de la asignatura. 0.5. Criterios de evaluacion 0.6. Bibliograa a usar. 0.7. Página web de la asignatura.
TEMA 1. INTRODUCCION AL RENDIMIENTO DE COMPUTADORES: (4 clases, 2 semanas):
Introducción. La demanda de velocidad computacional. Evolución de la supercomputación. Computadoras paralelas modernas. Definiciones básicas: Algoritmo, Tarea y Proceso. Diferencias entre computación secuencial, concurrente, paralela y distribuída. Clases de paralelismo: Sincrónico y asincrónico Implícito y explícito. Granularidad del paralelismo. Búsqueda de concurrencia. Agrupación de datos. Programación de computadoras paralelas. Potencial para el incremento de la velocidad computacional.
TEMA 2. ESTRATEGIAS PARA LA OPTIMIZACION DE CODIGO SECUENCIAL: (2 clases, 1 semana):
Introducción. Redes de interconexión. Arreglos de procesadores. Multiprocesadores. Multicomputadores. Sistemas con memoria compartida distribuida. Taxonoma de Flynn: SISD, SIMD, MISD y MIMD. Computación sobre clusters. Diferencias entre clusters y redes de estaciones de trabajo.
TEMA 3. FUNDAMENTOS DE PARALELISMO: (4 clases, 2 semanas):
Introducción. Técnicas de descomposición. Paralelismo de Datos y Paralelismo Funcional. Metodología de Diseño de Foster. Modelos de Algoritmos Paralelos. Operaciones de Comunicación Básicas.
TEMA 4. PROGRAMACION PARALELA USANDO MEMORIA COMPARTIDA: (4 clases, 2 semanas):
Motivación y Conceptos Básicos. Causas de disminución del desempeño. Estructura de los programas paralelos. Compromisos de desempeño. Medición del desempeño: tiempo de ejecución, aceleración, aceleración superlineal, eficiencia, aspectos de la aceleración, aceleración escalada vs. aceleración de tamaño fijo.
TEMA 5. PROGRAMACION PARALELA USANDO MEMORIA DISTRIBUIDA: (4 clases, 2 semanas):
Multiprocesadores de memoria compartida. Construcciones para la especificación de paralelismo. Compartición de datos. Lenguajes y construcciones para programación paralela. OpenMP. Aspectos de desempeño. Programas de ejemplo.
TEMA 6. SOLUCIONES COMUNES A PROBLEMAS USANDO COMPUTO DE ALTO RENDIMIENTO: (4 clases, 2 semanas):
Introducción. El modelo de paso de mensajes. La interfaz de paso de mensajes: MPI. Particionado de los datos. Operaciones de comunicación colectiva. Grupos y comunicadores. Aspectos de desempeño. Programas de ejemplo. Programación híbrida: MPI + OpenMP.