domingo, 9 de diciembre de 2018

Curso sobre computacion paralela


En el Instituto de Cibernética, Matemática y Física (ICIMAF) del 27 de Nov al 14 de Dic se desarrollo el curso sobre Computacion paralela.

Nombre del curso: CURSO DE COMPUTACIÓN PARALELA

Dirigido a: Profesionales interesados en hacer uso de los recursos de la computación paralela

Requisitos: Experiencia desarrollando programas en C/C++. No es necesario tener conocimientos previos de computación paralela.

Carácter del curso: Teórico-práctico, con ejemplos corridos por los propios alumnos en el clúster de la Empresa de Tecnologías de Informática (ETI).

Lenguajes de programación utilizados en los ejercicios:
- C/C++
- Python Anaconda 3.6: Cython+OpenMP, MPI4Py, PyGPU
- Matlab (2016b): Parfor y PCT
- R: Rmpi, RParallel

Capacidad: 25 estudiantes

Lugar: ICIMAF, Calle 15 entre C y D, Vedado.

Fecha y duración: 3 semanas comenzando el 27 de Nov. Total 60 horas de clases.

Profesores: Dr Omar Ochoa (ICIMAF), M.C. Karel Barberena (ETI)

Costo de la matrícula: 250 CUP/semana. Curso completo – 650 CUP.

Inscripción: La inscripción se formaliza en el ICIMAF con el pago de la matricula, antes del 15 de Nov.

Contacto: Lic. Beatriz Moreno, especialista comercial, Tel. 78322688, email: betty@icimaf.cu

Programa detallado

Inicio (dos sesiones):
ARQUITECTURA PARALELA. Introducción a la computación de alto desempeño. Sistemas paralelos: Hardware y Software.
Modelos Estándares: Pradigmas. Paralelismo de Datos, Paralelismo de Tareas, Otros tipos.
Paradigmas orientados a la arquitectura: Memoria Compartida, Memoria Distribuida, Híbrido.

COMPUTACIÓN DE ALTO DESEMPEÑO. Introducción: Análisis de prestaciones en sistemas de computación paralela.
Clasificación de arquitecturas: Por la interconexión y el acceso a la memoria. Clasificación de Flynn.
Tipos de Paralelismo. Modelos de Programación. Actualidad y Futuro: Top 500. Métricas de rendimiento: Tiempo de ejecución y de aceleración (Speedup). Modelos de trabajo en Sistemas paralelos. Tiempo Fijo vs Carga de trabajo Fijo. Ley de Amdahl. Ley de Gustafson. Grado de paralelismo.
Condiciones para abordar un programa en paralelo.

Primera Semana: - Programación paralela en sistemas con memoria distribuida
Introducción a MPI. Paradigma de paso mensajes. Principios y características generales. Máquina Virtual Paralela. Introducción a MPI (Message Passing Interface). Conceptos y Funciones Básicas. Modelos de Programación con MPI. Paradigma Maestro/Esclavo.
Modos de comunicación: Punto a Punto; Colectivas. Topologías.
Tipos de datos derivados. Empaquetado de datos.
Topologías virtuales y comunicadores. Esquemas de balance de carga. Evaluación de prestaciones. Nuevas funcionalidades de MPI-2 y MPI-3. Funciones avanzadas.
Programación en sistemas computacionales de altas prestaciones en multicomputadores, multiprocesadores y en clústeres. Computación heterogénea.

Segunda Semana: - Programación paralela en sistemas con memoria compartida
Programación paralela basada en directivas. Ejecución con múltiples Threads. Variables de entorno.
Dependencia de datos e Interferencia. Variables privadas-compartidas. Reducción. Planificación y
transformación de bucles. Rendimiento en OpenMP, Mejor prácticas.
Paralelismo basado en Threads. Directivas para la construcción de paralelismo y de sincronización.
Biblioteca de rutinas OpenMP. Evaluación de prestaciones.

Intermedio (dos sesiones):
PROGRAMACIÓN DE SISTEMAS HÍBRIDOS CON MEMORIA DISTRIBUIDA Y COMPARTIDA. Clúster de computadoras: arquitectura distribuida con tecnología multicore. Las aplicaciones en clústeres se pueden programar para utilizar paso de mensajes entre todos los procesadores. Pero es posible obtener mejores prestaciones si se utiliza un modelo híbrido de comunicación con compartición de información por memoria compartida y con memoria distribuida, a través de la fusión de MPI con OpenMP. Ejemplos de programación MPI+OpenMP en sistemas híbridos.

Tercera Semana: - Programación paralela con procesadores gráficos
Sistemas con coprocesadores gráficos. Arquitectura y modelo de ejecución. Programación de propósito general con GPU (GPGPU). Entorno de programación CUDA y OpenCL. Modelo de programación. API de CUDA. Paralelismo SPMD en una arquitectura con multiples cores. Ejemplos de aplicación.
Diferentes arquitecturas:
4.1 Programación avanzada GPU en OpenMP 4.x
4.2 CUDA
Introducción a GPGPU: GPUs como sistemas de computación paralela. Arquitectura de las GPU actuales. Modelos y lenguajes de programación.
Introducción a CUDA : Arquitectura y Modelo dicimaf02--78904--jcarlos
e Programación. Paralelismo de datos. Estructura de un programa en CUDA. Declaración de funciones Kernels y Threads. API RunTime. Bloques y Threads.
Threads en CUDA: Organización y planificación de los threads, Sincronización y escalabilidad.
Memorias en CUDA: Jerarquía de Memoria. Tipos de memorias, Eficiencia de acceso a memoria.
Rendimiento: Ejecución, Granularidad, Medición de rendimiento.
4.3 Programación híbrida.

No hay comentarios.:

Publicar un comentario