Temario
Presentació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.
Contenido
1. Introducción a la programación y computación paralela
2. Programación Multihilo
3. Programación de estructuras de datos Concurrentes en
4. Diseño de código concurrente
5. Programación de algoritmos concurrentes en
6. Introducción a la programación en GPU
7. Introducción y desarrollo de aplicaciónes con CUDA
8. Introducción y desarrollo de applicaciónes con OpenCL
9. Interoperabilidad CUDA/OpenCL con OpenGL