¿Qué quieres aprender?

POSTGRADO PROGRAMACIÓN MULTIHILO

POSTGRADO PROGRAMACIÓN MULTIHILO

ESAT - Escuela Superior de Arte y Tecnología

Postgrado presencial

Valencia


650

Duración : 3 Meses

Programación multihilo y computación paralela en CPU y GPU

En la actualidad todas las aplicaciones tienen algo en común, y es que sus usuarios cada vez demandan más interacción y más capacidad de respuesta:

Una aplicación de ingeniería habitualmente necesita visualizar y procesar grandes volúmenes de datos con lo que requiere técnicas para poder ir cargando y descargando datos bajo demanda además de ir generando múltiples niveles de detalle.

Un videojuego debe responder de manera inmediata a la interacción del usuario y a su vez estar realizando complejos cálculos para la física que al final se van a presentar en pantalla, aunque también puede ocurrir que tengas un escenario tan inmenso que requieras la carga y descarga de elementos bajo demanda.

En el módulo de técnicas de programación multihilo y computación paralela en CPU y GPU se pretende dotar a los estudiantes de los conocimientos y las herramientas necesarias para ofrecer soluciones y diseñar aplicaciones aprovechando al máximo la capacidad de ejecución concurrente de los sistemas actuales.

El temario consta de dos partes, la primera se centrará en la programación de aplicación en CPU, donde se estudiará el diseño e implementación de estructuras de datos y algoritmos concurrentes haciendo uso de la librería estándar de C++11, dando ejemplos de soluciones reales integradas y en producción. La segunda parte se centrará en el desarrollo de aplicaciones de computación paralela en GPU (tarjeta gráficas) mediante el uso de CUDA y OpenCL y como poder intercambiar datos con OpenGL.

¿Quieres hablar con un asesor sobre este curso?

Sedes

Localización

Fecha inicio

Valencia

A quién va dirigido

El curso está orientado a Diplomados HND en Programación de Videojuegos, Software Engineering, Computing o Ingenieros e Ingenieros Técnicos en Informática y/o Telecomunicaciones que deseen especializarse en la programación multihilo y paralela usando las últimas técnicas y tecnologías disponibles. En el caso de los Ingenieros e Ingenieros Técnicos por planes de estudios españoles, se requiere adicionalmente que tengan una buena base práctica de programación.

Requisitos

El alumno debería ingresar al módulo con los siguientes conocimientos: Sentirse cómodo programando en C++, así como con algún entorno de programación o compilador (Visual Studio, gcc, clang). Conocimientos de programación orientada a objetos y de estructuras de datos.

Temario completo de este curso

PROGRAMA COMPLETO (30 HORAS)
INTRODUCCIÓN A LA PROGRAMACIÓN Y COMPUTACIÓN PARALELA
Introducción, Conceptos básicos, Técnicas de programación concurrente, Repaso de las tecnologías de computación paralela (TBB, MPI, CUDA, OpenCL, C++11 API).

PROGRAMACIÓN MULTIHILO EN C++11 / C++14

Introducción (repaso) a la programación segura en C++ (RAII idiom), introducción (repaso) de C++11/C++14 (shared_ptr, unique_ptr, lambda functions, move constructor and assignation operator) e introducción a la API de multithreading de C++11 (thread, mutex, async, lock_guard, atomic, etc…).

PROGRAMACIÓN DE ESTRUCTURAS DE DATOS CONCURRENTES EN C++11

Programación de algunas estructuras de datos básicas para aprovechar la concurrencia en CPU con C++: threadsafe_stack, threadsafe_queue, threadsafe_lookup_table, threadsafe_list.

DISEÑO DE CÓDIGO CONCURRENTE
Estrategia y analítica, técnicas para dividir los datos entre los hilos, factores que afectan al rendimiento del código concurrente y diseño adecuado de las estructuras de datos e implementación de código multithreading seguro (exception safety).

PROGRAMACIÓN DE ALGORITMOS CONCURRENTES EN C++11

Implementación concurrente de algunos algortimos comunes de C++ (for_each, find).

INTRODUCCIÓN A LA PROGRAMACIÓN EN GPU

Arquitectura de los modelos de Ejecución de CUDA y OpenCL.

INTRODUCCIÓN Y DESARROLLO DE APLICACIONES CON CUDA

Lenguaje CUDA, Compilador NVCC + GCC, API de Driver vs API de Runtime, Fat Binaries.

INTRODUCCIÓN Y DESARROLLO DE APPLICACIONES CON OPENCL

Consulta de dispositivos OpenCL, OpenCL Language, Ejecución de un programa OpenCL.

INTEROPERABILIDAD CUDA / OPENCL CON OPENGL

API de interoperabilidad con OpenGL de CUDA y OpenCL.
Ver más