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é utilizar la programación de GPU?
- ¿Cuáles son los desafíos y compromisos de la programación de GPU?
- ¿Cuáles son los marcos de trabajo y herramientas para la programación de GPU?
- 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?
- Configurar el entorno de desarrollo para OpenCL.
- Crear un programa básico de OpenCL que realice una suma de vectores.
- Utilizar 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.
- Utilizar el lenguaje C de OpenCL para escribir kernels que se ejecutan en el dispositivo y manipulan datos.
- Utilizar funciones integradas, variables y bibliotecas de OpenCL para realizar tareas y operaciones comunes.
- Utilizar los espacios de memoria de OpenCL, como global, local, constante y privado, para optimizar transferencias de datos y accesos a la memoria.
- Utilizar el modelo de ejecución de OpenCL para controlar los elementos de trabajo, grupos de trabajo y rangos ND que definen el paralelismo.
- Depurar y probar programas de OpenCL utilizando herramientas como CodeXL.
- Optimizar programas de OpenCL utilizando técnicas como coalescencia, almacenamiento en caché, prefetching y perfilado.
CUDA
- ¿Qué es CUDA?
- ¿Cuáles son las ventajas y desventajas de CUDA?
- Configurar el entorno de desarrollo para CUDA.
- Crear un programa básico de CUDA que realice una suma de vectores.
- Utilizar 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.
- Utilizar el lenguaje C/C++ de CUDA para escribir kernels que se ejecutan en el dispositivo y manipulan datos.
- Utilizar funciones integradas, variables y bibliotecas de CUDA para realizar tareas y operaciones comunes.
- Utilizar los espacios de memoria de CUDA, como global, compartido, constante y local, para optimizar transferencias de datos y accesos a la memoria.
- Utilizar el modelo de ejecución de CUDA para controlar los hilos, bloques y grillas que definen el paralelismo.
- Depurar y probar programas de CUDA utilizando herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight.
- Optimizar programas de CUDA utilizando técnicas como coalescencia, almacenamiento en caché, prefetching y perfilado.
ROCm
- ¿Qué es ROCm?
- ¿Cuáles son las ventajas y desventajas de ROCm?
- Configurar el entorno de desarrollo para ROCm.
- Crear un programa básico de ROCm que realice una suma de vectores.
- Utilizar 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.
- Utilizar el lenguaje C/C++ de ROCm para escribir kernels que se ejecutan en el dispositivo y manipulan datos.
- Utilizar funciones integradas, variables y bibliotecas de ROCm para realizar tareas y operaciones comunes.
- Utilizar los espacios de memoria de ROCm, como global, local, constante y privado, para optimizar transferencias de datos y accesos a la memoria.
- Utilizar el modelo de ejecución de ROCm para controlar los hilos, bloques y grillas que definen el paralelismo.
- Depurar y probar programas de ROCm utilizando herramientas como ROCm Debugger y ROCm Profiler.
- Optimizar programas de ROCm utilizando técnicas como coalescencia, almacenamiento en caché, prefetching y perfilado.
HIP
- ¿Qué es HIP?
- ¿Cuáles son las ventajas y desventajas de HIP?
- Configurar el entorno de desarrollo para HIP.
- Crear un programa básico de HIP que realice una suma de vectores.
- Utilizar el lenguaje HIP para escribir kernels que se ejecutan en el dispositivo y manipulan datos.
- Utilizar funciones integradas, variables y bibliotecas de HIP para realizar tareas y operaciones comunes.
- Utilizar los espacios de memoria de HIP, como global, compartido, constante y local, para optimizar transferencias de datos y accesos a la memoria.
- Utilizar el modelo de ejecución de HIP para controlar los hilos, bloques y grillas que definen el paralelismo.
- Depurar y probar programas de HIP utilizando herramientas como ROCm Debugger y ROCm Profiler.
- Optimizar programas de HIP utilizando técnicas como coalescencia, almacenamiento en caché, prefetching y perfilado.
Comparación
- Comparar las características, rendimiento y compatibilidad de OpenCL, CUDA, ROCm e HIP.
- Evaluar programas de GPU utilizando benchmarks y métricas.
- Aprender las mejores prácticas y consejos para la programación de GPU.
- Explorar las tendencias actuales y futuras y los desafíos de la programación de GPU.
Resumen y próximos pasos
Requerimientos
- Conocimiento del lenguaje C/C++ y 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.
Público objetivo
- Desarrolladores que desean aprender los fundamentos de la programación de GPU y los principales marcos de trabajo y herramientas para desarrollar aplicaciones con GPU.
- Desarrolladores que desean escribir código portátil y escalable que pueda ejecutarse en diferentes plataformas y dispositivos.
- Programadores que quieren explorar las ventajas y desafíos de la programación y optimización con GPU.
21 Horas