Programa del Curso

Introducción

  • ¿Qué es GPU la programación?
  • ¿Por qué usar GPU programación?
  • ¿Cuáles son los desafíos y las ventajas y desventajas de la programación GPU?
  • ¿Cuáles son los marcos y herramientas para GPU programar?
  • Elegir el marco 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 OpenCL que realiza la suma de vectores
  • Uso de la API OpenCL para consultar información del dispositivo, asignar y desasignar la memoria del dispositivo, copiar datos entre el host y el dispositivo, iniciar kernels y sincronizar subprocesos
  • Uso del lenguaje C OpenCL para escribir kernels que se ejecutan en el dispositivo y manipulan datos
  • Uso de OpenCL funciones, variables y bibliotecas integradas para realizar tareas y operaciones comunes
  • Uso de OpenCL espacios de memoria, como global, local, constante y privado, para optimizar las transferencias de datos y los accesos a la memoria
  • Uso del modelo de ejecución OpenCL para controlar los elementos de trabajo, los grupos de trabajo y los intervalos ND que definen el paralelismo
  • Depuración y prueba de programas OpenCL utilizando herramientas como CodeXL
  • Optimización de OpenCL programas mediante técnicas como la fusión, el almacenamiento en caché, la precarga y la generación de perfiles

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 CUDA básico que realiza la suma de vectores
  • Uso de la API de CUDA para consultar información del dispositivo, asignar y desasignar memoria del dispositivo, copiar datos entre el host y el dispositivo, iniciar kernels y sincronizar subprocesos
  • Uso del lenguaje CUDA C/C++ para escribir kernels que se ejecutan en el dispositivo y manipulan datos
  • Uso de funciones, variables y bibliotecas integradas de CUDA para realizar tareas y operaciones comunes
  • Uso de espacios de memoria 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 CUDA para controlar los subprocesos, bloques y cuadrículas que definen el paralelismo
  • Depuración y prueba de programas CUDA con herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight
  • Optimización de programas CUDA mediante técnicas como la fusión, el almacenamiento en caché, la captura previa y la generación de perfiles

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 ROCm básico que realiza la suma de vectores
  • Uso de la API ROCm para consultar información del dispositivo, asignar y desasignar la memoria del dispositivo, copiar datos entre el host y el dispositivo, iniciar kernels y sincronizar subprocesos
  • Uso del lenguaje ROCm C/C++ para escribir kernels que se ejecutan en el dispositivo y manipulan datos
  • Uso de funciones, variables y bibliotecas integradas de ROCm para realizar tareas y operaciones comunes
  • Uso de espacios de memoria 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 ROCm para controlar los subprocesos, bloques y cuadrículas que definen el paralelismo
  • Depuración y prueba de programas ROCm mediante herramientas como ROCm Debugger y ROCm Profiler
  • Optimización de programas ROCm mediante técnicas como la fusión, el almacenamiento en caché, la precarga y la creación de perfiles

CADERA

  • ¿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 la suma de vectores
  • Uso del lenguaje HIP para escribir kernels que se ejecutan en el dispositivo y manipulan datos
  • Uso de funciones, variables y bibliotecas integradas de HIP para realizar tareas y operaciones comunes
  • Uso de espacios de memoria HIP, como globales, compartidos, constantes y locales, para optimizar las transferencias de datos y los accesos a la memoria
  • Uso del modelo de ejecución de HIP para controlar los subprocesos, los bloques y las cuadrículas que definen el paralelismo
  • Depuración y prueba de programas HIP mediante herramientas como ROCm Debugger y ROCm Profiler
  • Optimización de programas HIP mediante técnicas como la fusión, el almacenamiento en caché, la captura previa y la generación de perfiles

Comparación

  • Comparación de las características, el rendimiento y la compatibilidad de OpenCL, CUDA, ROCm y HIP
  • Evaluación GPU de programas mediante puntos de referencia y métricas
  • Aprender las mejores prácticas y consejos para GPU programar
  • Explorando las tendencias y desafíos actuales y futuros de la programación GPU

Resumen y siguiente paso

Requerimientos

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

Audiencia

  • Desarrolladores que deseen aprender los conceptos básicos de GPU programación y los principales marcos y herramientas para desarrollar GPU aplicaciones
  • Desarrolladores que deseen escribir código portátil y escalable que pueda ejecutarse en diferentes plataformas y dispositivos
  • Programadores que deseen explorar los beneficios y desafíos de GPU la programación y la optimización
 21 horas

Número de participantes



Precio por participante

Testimonios (1)

Cursos Relacionados

GPU Programming with CUDA

28 horas

GPU Programming - OpenCL vs CUDA vs ROCm

28 horas

AMD GPU Programming

28 horas

ROCm for Windows

21 horas

Categorías Relacionadas