Postgrado presencial
Valencia
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.
Emagister S.L. (responsable) tratará tus datos personales con la finalidad de gestionar el envío de solicitudes de información y comunicaciones promocionales de formación con tu consentimiento. Ejerce tus derechos de acceso, supresión, rectificación, limitación, portabilidad y otros, según se indica en nuestra política de privacidad.
Sedes
Localización
Fecha inicio
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
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.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.