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 de GPU?
- ¿Por qué usar la programación de GPU?
- ¿Cuáles son los desafíos y compromisos de la programación de GPU?
- ¿Qué marcos existen para la programación de GPU?
- Elegir el marco adecuado para tu aplicación
OpenCL
- ¿Qué es OpenCL?
- ¿Cuáles son las ventajas y desventajas de OpenCL?
- Configuración del entorno de desarrollo para OpenCL
- Crear un programa básico de OpenCL que realice una suma vectorial
- Usar 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
- Usar el lenguaje C de OpenCL para escribir kernels que se ejecuten en el dispositivo y manipulen datos
- Usar las funciones, variables y bibliotecas integradas de OpenCL para realizar tareas y operaciones comunes
- Utilizar los espacios de memoria de OpenCL, como global, local, constante y privado, para optimizar las transferencias de datos y el acceso a la memoria
- Usar el modelo de ejecución de OpenCL para controlar los work-items, work-groups y ND-ranges que definen el paralelismo
- Depurar y probar programas de OpenCL usando herramientas como CodeXL
- Optimizar programas de OpenCL utilizando técnicas como la coalescencia, el caché, la preextracción y el perfilado
CUDA
- ¿Qué es CUDA?
- ¿Cuáles son las ventajas y desventajas de CUDA?
- Configuración del entorno de desarrollo para CUDA
- Crear un programa básico de CUDA que realice una suma vectorial
- Usar 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
- Usar el lenguaje C/C++ de CUDA para escribir kernels que se ejecuten en el dispositivo y manipulen datos
- Usar las funciones, variables y bibliotecas integradas de CUDA para realizar tareas y operaciones comunes
- Utilizar los espacios de memoria de CUDA, como global, shared, constante y local, para optimizar las transferencias de datos y el acceso a la memoria
- Usar el modelo de ejecución de CUDA para controlar los hilos, bloques y cuadrículas que definen el paralelismo
- Depurar y probar programas de CUDA usando herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight
- Optimizar programas de CUDA utilizando técnicas como la coalescencia, el caché, la preextracción y el perfilado
ROCm
- ¿Qué es ROCm?
- ¿Cuáles son las ventajas y desventajas de ROCm?
- Configuración del entorno de desarrollo para ROCm
- Crear un programa básico de ROCm que realice una suma vectorial
- Usar 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
- Usar el lenguaje C/C++ de ROCm para escribir kernels que se ejecuten en el dispositivo y manipulen datos
- Usar las funciones, variables y bibliotecas integradas de ROCm para realizar tareas y operaciones comunes
- Utilizar los espacios de memoria de ROCm, como global, local, constante y privado, para optimizar las transferencias de datos y el acceso a la memoria
- Usar el modelo de ejecución de ROCm para controlar los hilos, bloques y cuadrículas que definen el paralelismo
- Depurar y probar programas de ROCm usando herramientas como ROCm Debugger y ROCm Profiler
- Optimizar programas de ROCm utilizando técnicas como la coalescencia, el caché, la preextracción y el perfilado
Comparación
- Comparar las características, rendimiento y compatibilidad de OpenCL, CUDA y ROCm
- Evaluar programas de GPU usando benchmarks y métricas
- Aprender las mejores prácticas y consejos para la programación de GPU
- Explorar las tendencias actuales y futuras, así como los desafíos de la programación de GPU
Resumen y Próximos Pasos
Requerimientos
- Comprensión del lenguaje C/C++ y los conceptos de programación paralela
- 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
- Desarrolladores que deseen aprender a usar diferentes marcos para la programación de GPU y comparar sus características, rendimiento y compatibilidad
- Desarrolladores que deseen escribir código portable 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 de GPU
28 Horas