Ponte en Contacto
 Duración 28 horas

Temario del curso

Introducción

  • ¿Qué es CUDA?
  • CUDA vs OpenCL vs SYCL
  • Resumen de las funciones y arquitectura de CUDA
  • Configuración del entorno de desarrollo

Primeros pasos

  • Creación de un nuevo proyecto de CUDA usando Visual Studio Code
  • Exploración de la estructura del proyecto y los archivos
  • Compilación y ejecución del programa
  • Visualización de la salida usando printf y fprintf

API de CUDA

  • Comprensión del papel de la API de CUDA en el programa del equipo anfitrión (host)
  • Uso de la API de CUDA para consultar información y capacidades del dispositivo
  • Uso de la API de CUDA para asignar y liberar memoria del dispositivo
  • Uso de la API de CUDA para copiar datos entre el equipo anfitrión (host) y el dispositivo
  • Uso de la API de CUDA para iniciar kernels y sincronizar hilos
  • Uso de la API de CUDA para manejar errores y excepciones

CUDA C/C++

  • Comprensión del papel de CUDA C/C++ en el programa del dispositivo
  • Uso de CUDA C/C++ para escribir kernels que se ejecutan en la GPU y manipular datos
  • Uso de tipos de datos, calificaciones, operadores y expresiones de CUDA C/C++
  • Uso de funciones integradas de CUDA C/C++, como matemáticas, atómicas, warp, etc.
  • Uso de variables integradas de CUDA C/C++, como threadIdx, blockIdx, blockDim, etc.
  • Uso de bibliotecas de CUDA C/C++, como cuBLAS, cuFFT, cuRAND, etc.

Modelo de memoria de CUDA

  • Comprensión de la diferencia entre los modelos de memoria del equipo anfitrión (host) y del dispositivo
  • Uso de espacios de memoria de CUDA, como global, compartido, constante y local
  • Uso de objetos de memoria de CUDA, como punteros, matrices, texturas y superficies
  • Uso de modos de acceso a la memoria de CUDA, como solo lectura, solo escritura, lectura-escritura, etc.
  • Uso del modelo de consistencia de memoria de CUDA y mecanismos de sincronización

Modelo de ejecución de CUDA

  • Comprensión de la diferencia entre los modelos de ejecución del equipo anfitrión (host) y del dispositivo
  • Uso de hilos, bloques y cuadrículas de CUDA para definir el paralelismo
  • Uso de funciones de hilos de CUDA, como threadIdx, blockIdx, blockDim, etc.
  • Uso de funciones de bloques de CUDA, como __syncthreads, __threadfence_block, etc.
  • Uso de funciones de cuadrícula de CUDA, como gridDim, gridSync, grupos cooperativos, etc.

Depuración

  • Comprensión de los errores y fallos comunes en programas de CUDA
  • Uso del depurador de Visual Studio Code para inspeccionar variables, puntos de interrupción (breakpoints), pila de llamadas, etc.
  • Uso de CUDA-GDB para depurar programas de CUDA en Linux
  • Uso de CUDA-MEMCHECK para detectar errores de memoria y fugas de memoria
  • Uso de NVIDIA Nsight para depurar y analizar programas de CUDA en Windows

Optimización

  • Comprensión de los factores que afectan el rendimiento de los programas de CUDA
  • Uso de técnicas de agrupación de accesos (coalescing) de CUDA para mejorar el ancho de banda de memoria
  • Uso de técnicas de cacheo y pre-carga (prefetching) de CUDA para reducir la latencia de memoria
  • Uso de técnicas de memoria compartida y memoria local de CUDA para optimizar los accesos a la memoria y el ancho de banda
  • Uso de perfiles de rendimiento (profiling) y herramientas de perfilado de CUDA para medir y mejorar el tiempo de ejecución y la utilización de recursos

Requerimientos

  • Comprensión 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

Audiencia

  • Desarrolladores que desean aprender a utilizar CUDA para programar GPUs de NVIDIA y aprovechar su paralelismo
  • Desarrolladores que desean escribir código de alto rendimiento y escalable que pueda ejecutarse en diferentes dispositivos CUDA
  • Programadores que deseen explorar los aspectos de bajo nivel de la programación de GPU y optimizar el rendimiento de su código

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas