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 GPU?
- ¿Por qué utilizar la programación GPU?
- ¿Cuáles son los desafíos y compensaciones de la programación GPU?
- ¿Cuáles son los marcos de trabajo y herramientas para la programación GPU?
- Cómo elegir el marco de trabajo y la herramienta adecuados para su aplicación
OpenCL
- ¿Qué es OpenCL?
- ¿Cuáles son las ventajas y desventajas de OpenCL?
- Configuración del entorno de desarrollo para OpenCL
- Creación de un programa básico en OpenCL que realice sumas de vectores
- Uso de la API de OpenCL para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el anfitrión y el dispositivo, lanzar núcleos (kernels) y sincronizar hilos
- Uso del lenguaje OpenCL C para escribir núcleos (kernels) que se ejecuten en el dispositivo y manipulen datos
- Uso de funciones, variables y bibliotecas integradas de OpenCL para realizar tareas y operaciones comunes
- Uso de los espacios de memoria de OpenCL, como global, local, constante y privada, para optimizar las transferencias de datos y los accesos a memoria
- Uso del modelo de ejecución de OpenCL para controlar los work-items, work-groups y ND-ranges que definen el paralelismo
- Depuración y prueba de programas OpenCL utilizando herramientas como CodeXL
- Optimización de programas OpenCL mediante técnicas como coalescencia, caché, prefetching y perfiles de rendimiento
CUDA
- ¿Qué es CUDA?
- ¿Cuáles son las ventajas y desventajas de CUDA?
- Configuración del entorno de desarrollo para CUDA
- Creación de un programa básico en CUDA que realice sumas de vectores
- Uso de la API de CUDA para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el anfitrión y el dispositivo, lanzar núcleos (kernels) y sincronizar hilos
- Uso del lenguaje CUDA C/C++ para escribir núcleos (kernels) que se ejecuten en el dispositivo y manipulen datos
- Uso de funciones, variables y bibliotecas integradas 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 los accesos a memoria
- Uso del modelo de ejecución de CUDA para controlar los hilos, bloques y cuadrículas (grids) 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 mediante técnicas como coalescencia, caché, prefetching y perfiles de rendimiento
ROCm
- ¿Qué es ROCm?
- ¿Cuáles son las ventajas y desventajas de ROCm?
- Configuración del entorno de desarrollo para ROCm
- Creación de un programa básico en ROCm que realice sumas de vectores
- Uso de la API de ROCm para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el anfitrión y el dispositivo, lanzar núcleos (kernels) y sincronizar hilos
- Uso del lenguaje ROCm C/C++ para escribir núcleos (kernels) que se ejecuten en el dispositivo y manipulen datos
- Uso de funciones, variables y bibliotecas integradas de ROCm para realizar tareas y operaciones comunes
- Uso de los espacios de memoria de ROCm, como global, local, constante y privada, para optimizar las transferencias de datos y los accesos a memoria
- Uso del modelo de ejecución de ROCm para controlar los hilos, bloques y cuadrículas (grids) que definen el paralelismo
- Depuración y prueba de programas ROCm utilizando herramientas como ROCm Debugger y ROCm Profiler
- Optimización de programas ROCm mediante técnicas como coalescencia, caché, prefetching y perfiles de rendimiento
HIP
- ¿Qué es HIP?
- ¿Cuáles son las ventajas y desventajas de HIP?
- Configuración del entorno de desarrollo para HIP
- Creación de un programa básico en HIP que realice sumas de vectores
- Uso del lenguaje HIP para escribir núcleos (kernels) que se ejecuten en el dispositivo y manipulen datos
- Uso de funciones, variables y bibliotecas integradas de HIP para realizar tareas y operaciones comunes
- Uso de los espacios de memoria de HIP, como global, compartido, constante y local, para optimizar las transferencias de datos y los accesos a memoria
- Uso del modelo de ejecución de HIP para controlar los hilos, bloques y cuadrículas (grids) que definen el paralelismo
- Depuración y prueba de programas HIP utilizando herramientas como ROCm Debugger y ROCm Profiler
- Optimización de programas HIP mediante técnicas como coalescencia, caché, prefetching y perfiles de rendimiento
Comparación
- Comparación de las características, rendimiento y compatibilidad de OpenCL, CUDA, ROCm y HIP
- Evaluación de programas GPU mediante puntos de referencia (benchmarks) y métricas
- Aprendizaje de las mejores prácticas y consejos para la programación GPU
- Exploración de las tendencias actuales y futuras, así como los desafíos de la programación GPU
Resumen y siguientes pasos
Requerimientos
- Conocimiento del lenguaje C/C++ y de 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 los fundamentos de la programación GPU y los principales marcos de trabajo y herramientas para desarrollar aplicaciones con GPU
- Desarrolladores que deseen escribir código portable y escalable que pueda ejecutarse en diferentes plataformas y dispositivos
- Programadores que deseen explorar los beneficios y desafíos de la programación GPU y su optimización
21 Horas