Contacta con nosotros

Temario del curso

Introducción a la Computación Acelerada con GPU

  • Computación heterogénea y arquitectura CPU-GPU
  • Espacios de ejecución y memoria de CUDA
  • Compilación de CUDA C++ con nvcc y CMake
  • Verificación del entorno de desarrollo GPU

Algoritmos Paralelos con Thrust y CUB

  • Ordenamiento, reducción y transformación acelerados por GPU
  • Refactorización de algoritmos STL para ejecución en GPU
  • Vectores de dispositivo Thrust y políticas de ejecución
  • Primitivas de dispositivo completo de CUB para tuberías personalizadas

Arquitectura y Gestión de Memoria GPU

  • Tipos de memoria global, constante y textura
  • Asignación explícita de memoria del dispositivo y transferencias
  • Memoria Unificada para facilitar el acceso a datos
  • Agrupación de memoria y optimización de patrones de acceso

Ejecución Asíncrona con Flujos CUDA

  • Creación y gestión de flujos CUDA
  • Solapar la ejecución del núcleo con transferencias de datos
  • Eventos CUDA para la gestión de dependencias
  • Prioridades de flujo y ajuste de concurrencia

Escribiendo Núcleos CUDA Personalizados

  • El modelo de programación SIMT y la ejecución de grupo (warp)
  • Configuración del lanzamiento del núcleo y bucles de paso de grilla (grid-stride)
  • Indexación de hilos y grillas multidimensionales
  • Manejo de errores y verificaciones de la API de tiempo de ejecución CUDA

Jerarquía de Hilos y Modelo de Ejecución

  • Grillas, bloques e hilos en el código del dispositivo
  • Primitivas a nivel de grupo (warp) y operaciones de votación
  • Sincronización a nivel de bloque y barreras
  • Análisis de ocupación y utilización de recursos

Grupos Cooperativos para Paralelismo Flexible

  • La API cooperative_groups y tipos de grupos
  • Baldosas (tiles) de bloque de hilos y tiled_partition
  • Lanzamientos cooperativos a nivel de grilla
  • Patrones de sincronización multi-grilla

Técnicas de Optimización de Memoria Compartida

  • Bancos de memoria compartida y evitar conflictos de banco
  • Estrategias de baldosas (tiling) para operaciones de matriz
  • Memoria compartida como caché gestionada por el usuario
  • cuda::shared_memory_mdspan para vistas multidimensionales

Fusión de Núcleos y Patrones Avanzados de Paralelismo

  • Fusionar múltiples núcleos para reducir la sobrecarga del lanzamiento
  • Escaneo, reducción por clave y algoritmos segmentados
  • Operaciones atómicas y estructuras de datos sin bloqueo
  • Atómicos agregados por grupo (warp) para aumentar el rendimiento

Perfilado y Optimización con Nsight Systems

  • Análisis de la línea de tiempo de la actividad de CPU y GPU
  • Identificación de cuellos de botella en la transferencia de memoria
  • Perfilado del rendimiento y ocupación del núcleo
  • Optimización iterativa con Nsight Compute

Características Modernas de C++ en Código CUDA del Dispositivo

  • Lambdas, constexpr y auto en núcleos
  • Algoritmos paralelos C++17 y políticas de ejecución
  • Conceptos C++20 y rangos en el dispositivo
  • Soporte de C++23 en nvcc y CCCL 3.x

Gráficos CUDA y Asincronía Avanzada

  • Definición y lanzamiento de gráficos CUDA
  • Captura de gráficos desde la ejecución de flujos
  • Actualización de gráficos y nodos de ejecución condicional
  • Reducción de la latencia del lanzamiento para cargas de trabajo iterativas

Patrones de Integración para Aplicaciones Existentes

  • Envolver código GPU detrás de interfaces C++
  • Gestión de sistemas multi-GPU y NUMA
  • Integración del sistema de compilación con CMake y CUDA
  • Depuración de código del dispositivo con cuda-gdb

Resumen y Mejores Prácticas

  • Elegir entre Thrust, CUB y núcleos personalizados
  • Portabilidad de rendimiento entre arquitecturas GPU
  • Organización del código y RAII para recursos CUDA
  • Siguientes pasos y rutas de aprendizaje avanzadas de CUDA

Requerimientos

  • Competencia básica en C++ incluyendo expresiones lambda, plantillas y la STL
  • Familiaridad con algoritmos estándar, contenedores e iteradores
  • Comodidad con bucles, condicionales y funciones
  • No se requiere conocimiento previo de programación CUDA o GPU

Público Objetivo

  • Desarrolladores de C++ que buscan acelerar aplicaciones intensivas en computación con GPUs
  • Ingenieros de software que pasan de programación solo para CPU a programación paralela heterogénea
  • Ingenieros de rendimiento y desarrolladores cuantitativos que trabajan con grandes conjuntos de datos
 8 Horas

Número de participantes


Precio por participante

Reseñas (3)

Próximos cursos

Categorías Relacionadas