Contacta con nosotros

Temario del curso

Introducción

  • ¿Qué es la programación GPU?
  • ¿Por qué utilizar la programación GPU?
  • ¿Cuáles son los desafíos y compensaciones de la programación GPU?
  • ¿Cuáles son los marcos de trabajo y herramientas para la programación GPU?
  • Cómo 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?
  • Configuración del entorno de desarrollo para OpenCL
  • Creación de un programa básico en OpenCL que realice sumas de vectores
  • Uso de la API de OpenCL para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el anfitrión y el dispositivo, lanzar núcleos (kernels) y sincronizar hilos
  • Uso del lenguaje OpenCL C para escribir núcleos (kernels) que se ejecuten en el dispositivo y manipulen datos
  • Uso de funciones, variables y bibliotecas integradas de OpenCL para realizar tareas y operaciones comunes
  • Uso de los espacios de memoria de OpenCL, como global, local, constante y privada, para optimizar las transferencias de datos y los accesos a memoria
  • Uso del modelo de ejecución de OpenCL para controlar los work-items, work-groups y ND-ranges que definen el paralelismo
  • Depuración y prueba de programas OpenCL utilizando herramientas como CodeXL
  • Optimización de programas OpenCL mediante técnicas como coalescencia, caché, prefetching y perfiles de rendimiento

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 en CUDA que realice sumas de vectores
  • Uso de la API de CUDA para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el anfitrión y el dispositivo, lanzar núcleos (kernels) y sincronizar hilos
  • Uso del lenguaje CUDA C/C++ para escribir núcleos (kernels) que se ejecuten en el dispositivo y manipulen datos
  • Uso de funciones, variables y bibliotecas integradas 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 memoria
  • Uso del modelo de ejecución de CUDA para controlar los hilos, bloques y cuadrículas (grids) que definen el paralelismo
  • Depuración y prueba de programas CUDA utilizando herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight
  • Optimización de programas CUDA mediante técnicas como coalescencia, caché, prefetching y perfiles de rendimiento

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 en ROCm que realice sumas de vectores
  • Uso de la API de ROCm para consultar información del dispositivo, asignar y liberar memoria del dispositivo, copiar datos entre el anfitrión y el dispositivo, lanzar núcleos (kernels) y sincronizar hilos
  • Uso del lenguaje ROCm C/C++ para escribir núcleos (kernels) que se ejecuten en el dispositivo y manipulen datos
  • Uso de funciones, variables y bibliotecas integradas de ROCm para realizar tareas y operaciones comunes
  • Uso de los espacios de memoria de ROCm, como global, local, constante y privada, para optimizar las transferencias de datos y los accesos a memoria
  • Uso del modelo de ejecución de ROCm para controlar los hilos, bloques y cuadrículas (grids) que definen el paralelismo
  • Depuración y prueba de programas ROCm utilizando herramientas como ROCm Debugger y ROCm Profiler
  • Optimización de programas ROCm mediante técnicas como coalescencia, caché, prefetching y perfiles de rendimiento

HIP

  • ¿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 en HIP que realice sumas de vectores
  • Uso del lenguaje HIP para escribir núcleos (kernels) que se ejecuten en el dispositivo y manipulen datos
  • Uso de funciones, variables y bibliotecas integradas de HIP para realizar tareas y operaciones comunes
  • Uso de los espacios de memoria de HIP, como global, compartido, constante y local, para optimizar las transferencias de datos y los accesos a memoria
  • Uso del modelo de ejecución de HIP para controlar los hilos, bloques y cuadrículas (grids) que definen el paralelismo
  • Depuración y prueba de programas HIP utilizando herramientas como ROCm Debugger y ROCm Profiler
  • Optimización de programas HIP mediante técnicas como coalescencia, caché, prefetching y perfiles de rendimiento

Comparación

  • Comparación de las características, rendimiento y compatibilidad de OpenCL, CUDA, ROCm y HIP
  • Evaluación de programas GPU mediante puntos de referencia (benchmarks) y métricas
  • Aprendizaje de las mejores prácticas y consejos para la programación GPU
  • Exploración de las tendencias actuales y futuras, así como los desafíos de la programación GPU

Resumen y siguientes pasos

Requerimientos

  • Conocimiento del lenguaje C/C++ y de los 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

Audiencia

  • Desarrolladores que deseen aprender los fundamentos de la programación GPU y los principales marcos de trabajo y herramientas para desarrollar aplicaciones con GPU
  • Desarrolladores que deseen escribir código portable y escalable que pueda ejecutarse en diferentes plataformas y dispositivos
  • Programadores que deseen explorar los beneficios y desafíos de la programación GPU y su optimización
 21 Horas

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas