Técnicas de programación multihilo y computación paralela en CPU y GPU


  • Información
  • Temario
  • Requerimientos
  • Más Información
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.

1. 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)

2. 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)
Introducción a la API de multithreading de C++11 (thread, mutex, async, lock_guard, atomic, etc…)

3. 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.

4. 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.
Implementación de código multithreading seguro (exception safety).

5. Programación de algoritmos concurrentes en C++11

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

6. Introducción a la programación en GPU

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

7. Introducción y desarrollo de aplicaciónes con CUDA

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

8. Introducción y desarrollo de applicaciónes con OpenCL

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

9. Interoperabilidad CUDA/OpenCL con OpenGL

API de interoperabilidad con OpenGL de CUDA y OpenCL

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.

Dirigido a:

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 multi-hilo 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.

DIRECCIÓN: JOSÉ LUIS HIDALGO

HORARIO:
Viernes en horario de 17:00 horas a 20:00 horas 30 horas.

MATRÍCULA ABIERTA. PLAZAS LIMITADAS   NUEVA EDICIÓN

INICIO CURSO: Pendiente de fechas
MÍNIMO: 5 alumnos.

Duración: 30 horas.

Para más información contactar con ESAT a través del telf. 96 315 56 37
o del formulario de contacto

PRECIO DEL CURSO*:

650 € *
*490 € Precio Ex-Alumnos de ESAT

POSIBILIDAD DE PAGO APLAZADO EN 3 MESES

Si deseas ampliar la información, solicita una entrevista en:

  • Rellenando el formulario que aparece a tu derecha.
  • A través de nuestro formulario de contacto.
  • Enviando un correo electrónico a: info@esat.es
  • Llamando al teléfono: 96 315 56 37

Solicita información

Nombre y Apellidos (obligatorio)

Su e-mail (obligatorio)

Teléfono

Provincia

Mensaje

Código de seguridad

captcha

 
Share on Facebook0Tweet about this on TwitterEmail this to someone

Related Studies