CI 4841 Introducción al Paralelismo

Anuncio
CI 4841 Introducción al Paralelismo
Una porción considerable de las aplicaciones numéricas que son utilizadas en ciencia e
ingeniería requieren de mucho poder de cómputo para poder ser ejecutadas en un tiempo
razonable. En la actualidad, la mayoría de las computadoras ofrecen este poder de
cómputo a través de la interacción de varios -desde decenas hasta miles- procesadores.
Además, en los últimos años se ha producido una gran expansión en el uso de
arquitecturas paralelas con memoria distribuida debido a la aparición de los clusters de
procesadores personales. Este tipo de plataformas tienen una elevada relación de
prestación/costo y para poder aprovecharlas es necesario utilizar aplicaciones paralelas.
En esta asignatura se proporcionarán los principios básicos para la programación de este
tipo de aplicaciones.
El conocimiento de los fundamentos de la Programación Paralela dará al estudiante las
herramientas y los métodos necesarios para identificar, analizar y abordar aquellos
problemas cuya solución óptima es posible obtenerla explotando su paralelismo inherente
de forma implícita o explícita, aprovechando para ello el hardware o software más
apropiado.
El curso está organizado para familiarizar al estudiante con ideas, conceptos y
herramientas disponibles de la computación de alto rendimiento. Más importante,
mediante prácticas el participante podrá adquirir conocimientos y destrezas en técnicas
computacionales contemporáneas en el ámbito de la tecnología de cluster y la
computación en paralelo, que le permitirán abordar con eficacia problemas que requieren
del paralelismo para obtener resultados en tiempo razonable.
Objetivos:
Al finalizar el curso el estudiante será capaz de:
a) Conocer distintas técnicas o modelos de computación, en hardware y software,
para explotar paralelismo.
b) Identificar, analizar y describir el paralelismo inherente a ciertos problemas.
c) Diseñar y programar soluciones utilizando los modelos de cómputo y
programación paralela aprendidos.
Contenido:
1. Nociones fundamentales de paralelismo.
Introducción: Motivación, importancia y objetivos de la Programación Paralela.
Definiciones básicas: Algoritmo, Tarea y Proceso. Diferencias entre Computación
Secuencial, Concurrente, Paralela y Distribuida.
2. Arquitecturas Paralelas.
Revisión de las arquitecturas paralelas: SISD, SIMD, MISD y MIMD. Este tópico
hace énfasis en dos clases de máquinas MIMD: memoria compartida y memoria
distribuida, incluyendo los clusters de computadores
3. Aspectos de Rendimiento y Escalabilidad de los Sistemas Paralelos.
Métricas para la evaluación del rendimiento de los sistemas paralelos. Efecto de la
Granularidad. Fuentes de overhead.
4. Paradigmas de Programación Paralela.
Programación Paralela explícita e implícita. Espacio de Memoria compartida o
envío de mensajes. Descomposición por datos y por tareas.
5. Técnicas de programación paralela: Programación multi-hilos, OpenMP para
memoria compartida y Programación con envío de mensajes. Librería MPI para el
envío de mensajes.
Descargar