Contacta con nosotros

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 las compensaciones de la programación de GPU?
  • ¿Cuáles son los marcos de trabajo para la programación de GPU?
  • Selección del marco de trabajo adecuado 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 realice 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, ejecutar kernels y sincronizar hilos
  • Uso del lenguaje C de OpenCL para escribir kernels que se ejecuten en el dispositivo y manipulen datos
  • Uso de las funciones, variables y bibliotecas incorporadas de OpenCL para realizar tareas y operaciones comunes
  • Uso de los espacios de memoria de OpenCL, como global, local, constante y privado, para optimizar las transferencias de datos y los accesos a la memoria
  • Uso del modelo de ejecución de OpenCL para controlar los elementos de trabajo, grupos de trabajo y rangos ND que definen el paralelismo
  • Depuración y pruebas de programas de OpenCL utilizando herramientas como CodeXL
  • Optimización de programas de OpenCL utilizando técnicas como coalescencia, almacenamiento en caché, prefetching (búsqueda anticipada) 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 realice 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, ejecutar kernels y sincronizar hilos
  • Uso del lenguaje C/C++ de CUDA para escribir kernels que se ejecuten en el dispositivo y manipulen datos
  • Uso de las funciones, variables y bibliotecas incorporadas 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 la memoria
  • Uso del modelo de ejecución de CUDA para controlar los hilos, bloques y cuadrículas que definen el paralelismo
  • Depuración y pruebas de programas de CUDA utilizando herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight
  • Optimización de programas de CUDA utilizando técnicas como coalescencia, almacenamiento en caché, prefetching (búsqueda anticipada) 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 realice 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, ejecutar kernels y sincronizar hilos
  • Uso del lenguaje C/C++ de ROCm para escribir kernels que se ejecuten en el dispositivo y manipulen datos
  • Uso de las funciones, variables y bibliotecas incorporadas de ROCm para realizar tareas y operaciones comunes
  • Uso de los espacios de memoria de ROCm, como global, local, constante y privado, para optimizar las transferencias de datos y los accesos a la memoria
  • Uso del modelo de ejecución de ROCm para controlar los hilos, bloques y cuadrículas que definen el paralelismo
  • Depuración y pruebas de programas de ROCm utilizando herramientas como el depurador y el perfilador de ROCm
  • Optimización de programas de ROCm utilizando técnicas como coalescencia, almacenamiento en caché, prefetching (búsqueda anticipada) y perfilado

Comparación

  • Comparación de las características, rendimiento y compatibilidad de OpenCL, CUDA y ROCm
  • Evaluación de programas de GPU mediante pruebas comparativas y métricas
  • Aprendizaje de las mejores prácticas y consejos para la programación de GPU
  • Exploración de las tendencias actuales y futuras y los desafíos de la programación de GPU

Resumen y próximos pasos

Requerimientos

  • Comprensión del lenguaje C/C++ y de los conceptos de programación paralela
  • Conocimientos básicos de la arquitectura de computadoras y la jerarquía de memoria
  • Experiencia con herramientas de línea de comandos y editores de código

Audiencia objetivo

  • Desarrolladores que deseen aprender a utilizar diferentes marcos de trabajo para la programación de GPU y comparar sus características, rendimiento y compatibilidad
  • Desarrolladores que deseen escribir código portátil y escalable que pueda ejecutarse en diferentes plataformas y dispositivos
  • Programadores que quieran explorar las compensaciones y desafíos de la programación y optimización de GPU
 28 Horas

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas