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 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

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas