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.
Programa del Curso
Introducción
- ¿Qué es el GPU programming?
- ¿Por qué usar el GPU programming?
- ¿Cuáles son los desafíos y trade-offs del GPU programming?
- ¿Qué marcos hay para el GPU programming?
- Elegir el marco adecuado para tu aplicación
OpenCL
- ¿Qué es OpenCL?
- Ventajas y desventajas de OpenCL
- Configuración del entorno de desarrollo para OpenCL
- Crear un programa básico de OpenCL que realiza la 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 núcleos y sincronizar hilos
- Usar lenguaje C/OpenCL para escribir núcleos que se ejecutan en el dispositivo y manipulan datos
- Usar funciones, variables y bibliotecas integradas de OpenCL para realizar tareas comunes y operaciones
- Usar los espacios de memoria de OpenCL, como global, local, constante y privado, para optimizar las transferencias de datos y accesos a la memoria
- Usar el modelo de ejecución de OpenCL para controlar los work-items, work-groups y ND-ranges que definen la paralelización
- Depurar y probar programas de OpenCL usando herramientas como CodeXL
- Optimizar programas de OpenCL utilizando técnicas como coalescencia, caché, prefetching y perfilado
CUDA
- ¿Qué es CUDA?
- Ventajas y desventajas de CUDA
- Configuración del entorno de desarrollo para CUDA
- Crear un programa básico de CUDA que realiza la 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 núcleos y sincronizar hilos
- Usar lenguaje C/C++ para escribir núcleos que se ejecutan en el dispositivo y manipulan datos
- Usar funciones, variables y bibliotecas integradas de CUDA para realizar tareas comunes y operaciones
- Usar los espacios de memoria de CUDA, como global, compartido, constante y local, para optimizar las transferencias de datos y accesos a la memoria
- Usar el modelo de ejecución de CUDA para controlar hilos, bloques y cuadrículas que definen la paralelización
- Depurar y probar programas de CUDA usando herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight
- Optimizar programas de CUDA utilizando técnicas como coalescencia, caché, prefetching y perfilado
ROCm
- ¿Qué es ROCm?
- Ventajas y desventajas de ROCm
- Configuración del entorno de desarrollo para ROCm
- Crear un programa básico de ROCm que realiza la 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 núcleos y sincronizar hilos
- Usar lenguaje C/C++ para escribir núcleos que se ejecutan en el dispositivo y manipulan datos
- Usar funciones, variables y bibliotecas integradas de ROCm para realizar tareas comunes y operaciones
- Usar los espacios de memoria de ROCm, como global, local, constante y privado, para optimizar las transferencias de datos y accesos a la memoria
- Usar el modelo de ejecución de ROCm para controlar hilos, bloques y cuadrículas que definen la paralelización
- Depurar y probar programas de ROCm usando herramientas como ROCm Debugger y ROCm Profiler
- Optimizar programas de ROCm utilizando técnicas como coalescencia, caché, prefetching y perfilado
Comparación
- Comparar las características, rendimiento y compatibilidad entre OpenCL, CUDA y ROCm
- Evaluar programas de GPU usando benchmarks y métricas
- Aprender sobre buenas prácticas y consejos para el programming de GPU
- Explorar las tendencias y desafíos actuales y futuros del programming de GPU
Resumen y siguientes pasos
Requerimientos
- Un entendimiento 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 a usar diferentes frameworks para GPU programación y comparar sus características, rendimiento y compatibilidad
- Desarrolladores que desean escribir código portable y escalable que pueda ejecutarse en diferentes plataformas y dispositivos
- Programadores que desean explorar las compensaciones y los desafíos de la programación GPU y su optimización
28 Horas