Programa del Curso

Introducción

  • ¿Qué es el GPU programming?
  • ¿Por qué usar el GPU programming?
  • ¿Cuáles son los desafíos y trade-offs del GPU programming?
  • ¿Qué marcos hay para el GPU programming?
  • Elegir el marco adecuado para tu aplicación

OpenCL

  • ¿Qué es OpenCL?
  • Ventajas y desventajas de OpenCL
  • Configuración del entorno de desarrollo para OpenCL
  • Crear un programa básico de OpenCL que realiza la suma vectorial
  • Usar 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 núcleos y sincronizar hilos
  • Usar lenguaje C/OpenCL para escribir núcleos que se ejecutan en el dispositivo y manipulan datos
  • Usar funciones, variables y bibliotecas integradas de OpenCL para realizar tareas comunes y operaciones
  • Usar los espacios de memoria de OpenCL, como global, local, constante y privado, para optimizar las transferencias de datos y accesos a la memoria
  • Usar el modelo de ejecución de OpenCL para controlar los work-items, work-groups y ND-ranges que definen la paralelización
  • Depurar y probar programas de OpenCL usando herramientas como CodeXL
  • Optimizar programas de OpenCL utilizando técnicas como coalescencia, caché, prefetching y perfilado

CUDA

  • ¿Qué es CUDA?
  • Ventajas y desventajas de CUDA
  • Configuración del entorno de desarrollo para CUDA
  • Crear un programa básico de CUDA que realiza la suma vectorial
  • Usar 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 núcleos y sincronizar hilos
  • Usar lenguaje C/C++ para escribir núcleos que se ejecutan en el dispositivo y manipulan datos
  • Usar funciones, variables y bibliotecas integradas de CUDA para realizar tareas comunes y operaciones
  • Usar los espacios de memoria de CUDA, como global, compartido, constante y local, para optimizar las transferencias de datos y accesos a la memoria
  • Usar el modelo de ejecución de CUDA para controlar hilos, bloques y cuadrículas que definen la paralelización
  • Depurar y probar programas de CUDA usando herramientas como CUDA-GDB, CUDA-MEMCHECK y NVIDIA Nsight
  • Optimizar programas de CUDA utilizando técnicas como coalescencia, caché, prefetching y perfilado

ROCm

  • ¿Qué es ROCm?
  • Ventajas y desventajas de ROCm
  • Configuración del entorno de desarrollo para ROCm
  • Crear un programa básico de ROCm que realiza la suma vectorial
  • Usar 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 núcleos y sincronizar hilos
  • Usar lenguaje C/C++ para escribir núcleos que se ejecutan en el dispositivo y manipulan datos
  • Usar funciones, variables y bibliotecas integradas de ROCm para realizar tareas comunes y operaciones
  • Usar los espacios de memoria de ROCm, como global, local, constante y privado, para optimizar las transferencias de datos y accesos a la memoria
  • Usar el modelo de ejecución de ROCm para controlar hilos, bloques y cuadrículas que definen la paralelización
  • Depurar y probar programas de ROCm usando herramientas como ROCm Debugger y ROCm Profiler
  • Optimizar programas de ROCm utilizando técnicas como coalescencia, caché, prefetching y perfilado

Comparación

  • Comparar las características, rendimiento y compatibilidad entre OpenCL, CUDA y ROCm
  • Evaluar programas de GPU usando benchmarks y métricas
  • Aprender sobre buenas prácticas y consejos para el programming de GPU
  • Explorar las tendencias y desafíos actuales y futuros del programming de GPU

Resumen y siguientes pasos

Requerimientos

  • Un entendimiento 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 a usar diferentes frameworks para GPU programación y comparar sus características, rendimiento y compatibilidad
  • Desarrolladores que desean escribir código portable y escalable que pueda ejecutarse en diferentes plataformas y dispositivos
  • Programadores que desean explorar las compensaciones y los desafíos de la programación GPU y su optimización
 28 Horas

Próximos cursos

Categorías Relacionadas