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 (2)

Cursos Relacionados

Administration of CUDA

35 horas

GPU Programming with CUDA and Python

14 horas

AMD GPU Programming

28 horas

Programación de GPU NVIDIA

14 horas

GPU Programming with CUDA

28 horas

GPU Programming with OpenACC

28 horas

GPU Programming with OpenCL

28 horas

GPU Programming - OpenCL vs CUDA vs ROCm

28 horas

Programación NVIDIA GPU - Extended

21 horas

ROCm for Windows

21 horas

Hardware-Accelerated Video Analytics

14 horas

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 horas

Adobe LiveCycle Designer

14 horas

Affinity Designer

14 horas

Ilustrador Adobe

14 horas

Categorías Relacionadas