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 GPUs?
- ¿Por qué utilizar la programación de GPUs?
- ¿Cuáles son los desafíos y compensaciones de la programación de GPUs?
- ¿Cuáles son los marcos de trabajo y herramientas para la programación de GPUs?
- 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 de OpenCL que realiza 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 ejecutan en el dispositivo y manipulan datos.
- Uso de 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 transferencias de datos y accesos a la memoria.
- Uso del modelo de ejecución de OpenCL para controlar los work-items (elementos de trabajo), work-groups (grupos de trabajo) y ND-ranges que definen el paralelismo.
- Depuración y prueba de programas de OpenCL utilizando herramientas como CodeXL.
- Optimización de programas de OpenCL mediante técnicas como coalescencia, almacenamiento en caché, precarga y perfilado.
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 de CUDA que realiza 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 ejecutan en el dispositivo y manipulan datos.
- Uso de 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 transferencias de datos y accesos a la memoria.
- Uso del modelo de ejecución de CUDA para controlar los hilos, bloques y grillas que definen el paralelismo.
- Depuración y prueba de programas de CUDA utilizando herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight.
- Optimización de programas de CUDA mediante técnicas como coalescencia, almacenamiento en caché, precarga y perfilado.
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 de ROCm que realiza 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 ejecutan en el dispositivo y manipulan datos.
- Uso de 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 transferencias de datos y accesos a la memoria.
- Uso del modelo de ejecución de ROCm para controlar los hilos, bloques y grillas que definen el paralelismo.
- Depuración y prueba de programas de ROCm utilizando herramientas como ROCm Debugger y ROCm Profiler.
- Optimización de programas de ROCm mediante técnicas como coalescencia, almacenamiento en caché, precarga y perfilado.
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 de HIP que realiza una suma de vectores.
- Uso del lenguaje HIP para escribir kernels que se ejecutan en el dispositivo y manipulan datos.
- Uso de funciones integradas, variables y bibliotecas de HIP para realizar tareas y operaciones comunes.
- Uso de los espacios de memoria de HIP, como global, compartido, constante y local, para optimizar transferencias de datos y accesos a la memoria.
- Uso del modelo de ejecución de HIP para controlar los hilos, bloques y grillas que definen el paralelismo.
- Depuración y prueba de programas de HIP utilizando herramientas como ROCm Debugger y ROCm Profiler.
- Optimización de programas de HIP mediante técnicas como coalescencia, almacenamiento en caché, precarga y perfilado.
Comparación
- Comparación de las características, rendimiento y compatibilidad de OpenCL, CUDA, ROCm e HIP.
- Evaluación de programas de GPU utilizando puntos de referencia (benchmarks) y métricas.
- Aprendizaje de las mejores prácticas y consejos para la programación de GPUs.
- Exploración de las tendencias actuales y futuras, así como los desafíos de la programación de GPUs.
Resumen y Próximos Pasos
Requerimientos
- Comprensión del lenguaje C/C++ y conceptos de programación en paralelo.
- Conocimientos básicos de arquitectura informática y jerarquía de memoria.
- Experiencia con herramientas de línea de comandos y editores de código.
Audiencia Objetivo
- Desarrolladores que desean aprender los fundamentos de la programación de GPUs y los principales marcos de trabajo y herramientas para desarrollar aplicaciones de GPU.
- Desarrolladores que desean escribir código portátil y escalable que pueda ejecutarse en diferentes plataformas y dispositivos.
- Programadores que desean explorar las ventajas y desafíos de la programación de GPU y su optimización.
21 Horas