Introducción a la programación paralela

From Supercomputación y Cálculo Científico UIS
Revision as of 16:09, 11 August 2018 by Cbarrios (talk | contribs)

Volver a Cursos

Introducción a la Programación Paralela - Código 28661

Carlos Jaime Barrios Hernandez, PhD. - (c b a r r i o s (@) u i s . e d u . c o )

Asistencia Técnica-Teóric:. Equipo SC3UIS y CAGE

NoThanksButWereBusy.png

PRESENTACION DEL CURSO

La ruptura tecnológica hace que la computación sea quizás el área del conocimiento más dinámico que existe y que no solo promueve tendencias sino también cambios sociales, desde que la información y su tratamiento no solo es una necesidad sino una exigencia. La computación paralela, si bien no es nada nuevo, como parte de esa "exigencia" permite la explotación de sistemas que desde hace más de treinta años están disponibles, pero que en algunos medios se ve aún como algo exótico, ignorando que gracias a esas posibilidades, desde poder escuchar música, hablar y tomar fotos de manera simultánea en un dispositivo móvil, pasando por pronosticar el clima o mercados, almacenar datos en la nube hasta la realidad de implementar soluciones y algoritmos de inteligencia artificial hoy, existe porque hay múltiples unidades de procesamiento que pueden ser programadas de manera paralela y concurrente.

El curso, que es introductorio, esta dirigido a estudiantes de ingeniería de sistemas y ciencias de la computación, cuyo principal objetivo es ofrecer fundamentos para la explotación de la concurrencia, la explotación de paradigmas de programación dirigidos al paralelismo, sin ignorar algunos conceptos arquitecturales necesarios para entender que soporta ese procesamiento en paralelo. A partir de este curso, los participantes manejaran la terminología necesaria igualmente y tendrán la base para a partir de allí seguir cursos avanzados y seminarios especializados.

Contenido

  1. Introducción a la Computación Paralela
    • Pensamiento Paralelo y Pervasibidad
    • Paralelismo
  2. Arquitecturas Paralelas y Sistemas Escalables
    • Modelos de Máquinas Paralelas
    • Paralelismo y Comunicación
    • Caracterización de Flynn
    • Multinucleos y Multiprocesamiento
    • Arquitecturas para el Procesamiento Masivamente Paralelo (Manycores)
    • Modelos de Memoria
    • Sistemas Distribuidos de Gran Escala
  3. Algoritmos Concurrentes y Paralelos
    • Caracterización de Paralelismo
    • Granularidad
    • Multihilos y Multiprocesos
    • Modelos de Computación (RAM, PRAM, Sorting Networks, BSP, LogP y otros)
    • Modelos de Algoritmos Concurrentes
      • Descomposición de Tareas
      • Descomposición de Datos
    • Algoritmos No Paralelos
    • Balanceo de Carga y Calendarización (Scheduling)
  4. Paradigmas y Modelos de Programación Paralela
    • Ambientes de Programación Paralela
    • Programación de Sistemas CPU-GPU (Sistemas GPGPU)
      • Fundamentos de Programación de GPUs y Múltiples GPU
  5. Optimización
  6. Debugging y Profling
  7. Evaluación de Desempeño
    • Latencia y Throughput
    • Speedup (Aceleración), Eficiencia y Escalabilidad
    • Ley de Amhdal
    • Ley de Gustaffon-Barsis
    • Complejidad Asimptótica (Aceleración y Eficiencia)
    • Modelo de Little
  8. Lineamientos para el Desarrollo de Aplicaciones Paralelas
    • Patrones para el Flujo de Control y de Ejecución
    • Patrones para la Administración de Datos
    • Espacios de Diseño y Desarrollo de Programas Paralelos
      • Búsqueda de Explotación de Concurrencia
      • Diseño de Estructura de Algoritmo
      • Selección de Estructuras de Soporte de Algoritmos Paralelos
      • Selección de Mecanismos de Implementación
  9. Direcciones y Tendencias en Programación Paralela
    • Explotación de Unidades Tensor y Aplicaciones Emergentes
    • Extracción de Paralelismo en Códigos Secuenciales
    • Explotación de Memoria
    • Paradigmas de Programación Emergentes

Las sesiones se realizan en el CENTIC.

Contenido

  1. Introducción a la Programación Paralela
  2. Introducción a las Arquitecturas y Sistemas Escalables
  3. Algoritmos Concurrentes y Paralelos
  4. Modelos de Programación Paralela (Introducción a la programación de Memoria Distribuida, Introducción a la programación de Memoria
  5. Compartida, Introducción al a programación de maquinas masivamente paralelas y sistemas híbridos)
  6. Lineamientos para el desarrollo de Aplicaciones Paralelas
  7. Evaluación de Desempeño
  8. Direcciones y Temas Candentes en Programación Paralela

ASPECTOS METODOLOGICOS

  1. Sesiones Teórico-Prácticas
  2. Lecturas y Discusiones de Artículos (La mayoría en Inglés)
  3. Observación y Análisis de Aplicaciones y Propuestas

MATERIAL DEL CURSO 2013 - 2014

EVALUACIONES


(30%) Examen de Conocimientos Único

Este examen de conocimientos es un analisis de caso, se realizará en el tiempo de la clase de manera individual. Incluye un punto de los trabajos presentados por sus compañeros.

(70%) Trabajo de Aplicación

El trabajo de aplicación, es un trabajo que se realizará durante todo el semestre y que implica dos entregas previas, un seguimiento del trabajo realizado y una entrega final, observando unos parametros de evaluación que son:

Criterios:

  • Calidad del Análisis y Diseño de la Solución
  • Eficiencia y Rendimiento de la Solución Propuesta
  • Calidad del Proyecto (Estructura, Documentación, Coherencia)
  • Evaluación de Rendimiento (Identificación de Limitaciones)
  • Organización y Presentación de los informes previos y de la presentación final.

Los pesos de cada una de las entregas son:

  • Informe Inicial (20/70)
  • Informe de Avance (20/70)
  • Informe y Presentación Final (30/70)

Los trabajos se realizarán de manera individual y las entregas y seguimiento se hará de la siguiente manera:

  1. Entrega de los temas
  2. Entrega del Primer Informe que implica el análisis y diseño de la solución
    • Ese informe deberá realizarse de manera escrita a manera de resumen extendido en un documento en pdf, de máximo 6 paginas en columna sencilla, tamaño de la letra 12ppt
    • Discusión y presentación en el tablero en una sesión privada
  3. Informe de Avance
    • Este informe de avance deberá exponerse unicamente, usando máximo 5 diapositivas y 10 minutos de presentación al profesor. Deberá estar planteado el algoritmo final de la solución, seudocodigo, tipo de lenguaje a utilizar, estrategia de implementación y aspectos tecnicos esperados
  4. Informe y Presentación Final
    • Se presentará en un documento escrito, tipo artículo, en español, de máximo 10 páginas en un documento pdf, tipo de fuente Arial y tamaño de letra 12ppt, en columna sencilla. El documento se enviará al correo que el profesor indique el dia
    • Se realizará una presentación de 10 minutos incluyendo un demo del prototipo o solución realizada, tanto el codigo fuente como las instrucciones de compilación y ejecución deberan enviarse al profesor previamente


BIBLIOGRAFÍA Y FUENTES DE INFORMACION