Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Temario del curso
Introducción
- ¿Qué es la programación con GPU?
- ¿Por qué utilizar la programación con GPU?
- ¿Cuáles son los desafíos y compromisos de la programación con GPU?
- ¿Qué marcos de trabajo existen para la programación con GPU?
- Elección del marco adecuado para su aplicación
OpenCL
- ¿Qué es OpenCL?
- ¿Cuáles son las ventajas e inconvenientes de OpenCL?
- Configuración del entorno de desarrollo para OpenCL
- Creación de un programa básico de OpenCL que realice una suma de vectores
- Uso de la API de OpenCL para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el host y el dispositivo, lanzar kernels y sincronizar hilos
- Uso del lenguaje C de OpenCL para escribir kernels que se ejecuten en el dispositivo y manipulen datos
- Uso de las funciones integradas, variables y bibliotecas de OpenCL para realizar tareas y operaciones comunes
- Uso de los espacios de memoria de OpenCL, como global, local, constante y privado, para optimizar las transferencias de datos y el acceso a la memoria
- Uso del modelo de ejecución de OpenCL para controlar los elementos de trabajo (work-items), grupos de trabajo (work-groups) y rangos ND que definen el paralelismo
- Depuración y prueba de programas OpenCL utilizando herramientas como CodeXL
- Optimización de programas OpenCL utilizando técnicas como la coalescencia, el almacenamiento en caché, la precarga de datos (prefetching) y el análisis de rendimiento (profiling)
CUDA
- ¿Qué es CUDA?
- ¿Cuáles son las ventajas e inconvenientes de CUDA?
- Configuración del entorno de desarrollo para CUDA
- Creación de un programa básico de CUDA que realice una suma de vectores
- Uso de la API de CUDA para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el host y el dispositivo, lanzar kernels y sincronizar hilos
- Uso del lenguaje C/C++ de CUDA para escribir kernels que se ejecuten en el dispositivo y manipulen datos
- Uso de las funciones integradas, variables y bibliotecas de CUDA para realizar tareas y operaciones comunes
- Uso de los espacios de memoria de CUDA, como global, compartido, constante y local, para optimizar las transferencias de datos y el acceso a la memoria
- Uso del modelo de ejecución de CUDA para controlar los hilos, bloques y rejillas que definen el paralelismo
- Depuración y prueba de programas CUDA utilizando herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight
- Optimización de programas CUDA utilizando técnicas como la coalescencia, el almacenamiento en caché, la precarga de datos (prefetching) y el análisis de rendimiento (profiling)
ROCm
- ¿Qué es ROCm?
- ¿Cuáles son las ventajas e inconvenientes de ROCm?
- Configuración del entorno de desarrollo para ROCm
- Creación de un programa básico de ROCm que realice una suma de vectores
- Uso de la API de ROCm para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el host y el dispositivo, lanzar kernels y sincronizar hilos
- Uso del lenguaje C/C++ de ROCm para escribir kernels que se ejecuten en el dispositivo y manipulen datos
- Uso de las funciones integradas, variables y bibliotecas de ROCm para realizar tareas y operaciones comunes
- Uso de los espacios de memoria de ROCm, como global, local, constante y privado, para optimizar las transferencias de datos y el acceso a la memoria
- Uso del modelo de ejecución de ROCm para controlar los hilos, bloques y rejillas que definen el paralelismo
- Depuración y prueba de programas ROCm utilizando herramientas como ROCm Debugger y ROCm Profiler
- Optimización de programas ROCm utilizando técnicas como la coalescencia, el almacenamiento en caché, la precarga de datos (prefetching) y el análisis de rendimiento (profiling)
Comparación
- Comparación de las características, rendimiento y compatibilidad de OpenCL, CUDA y ROCm
- Evaluación de programas GPU utilizando pruebas de referencia (benchmarks) e indicadores (metrics)
- Aprendizaje de las mejores prácticas y consejos para la programación con GPU
- Exploración de las tendencias actuales y futuras, así como los desafíos de la programación con GPU
Resumen y próximos pasos
Requerimientos
- Comprensión del lenguaje C/C++ y conceptos de programación en paralelo
- Conocimientos básicos de arquitectura de computadoras y jerarquía de memoria
- Experiencia con herramientas de línea de comandos y editores de código
Audiencia objetivo
- Desarrolladores que desean aprender a utilizar diferentes marcos de trabajo para la programación con GPU y comparar sus características, rendimiento y compatibilidad
- Desarrolladores que desean escribir código portátil y escalable que pueda ejecutarse en diferentes plataformas y dispositivos
- Programadores que deseen explorar los compromisos y desafíos de la programación y optimización con GPU
28 Horas