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 para GPU la programación?
  • Elegir el marco 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 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

Comparación

  • Comparación de las características, el rendimiento y la compatibilidad de OpenCL, CUDA y ROCm
  • 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 próximos pasos

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 a usar diferentes frameworks para GPU programar 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 deseen explorar las ventajas y desventajas y los desafíos de GPU la programación y la optimización
 28 horas

Número de participantes



Precio por participante

Testimonios (1)

Cursos Relacionados

GPU Programming with CUDA

28 horas

ROCm for Windows

21 horas

Introduction to GPU Programming

21 horas

Categorías Relacionadas