Contacta con nosotros

Temario del curso

Introducción a la Computación Acelerada por GPU

  • Computación heterogénea y arquitectura CPU-GPU
  • Espacios de ejecución y memoria de CUDA
  • Compilación de C++ de CUDA con nvcc y CMake
  • Verificación del entorno de desarrollo de 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 CUB de todo el dispositivo para pipelines personalizados

Arquitectura y Gestión de Memoria de GPU

  • Tipos de memoria global, constante y de textura
  • Alocación explícita de memoria de dispositivo y transferencias
  • Memoria unificada para simplificar el acceso a datos
  • Coalescencia de memoria y optimización de patrones de acceso

Ejecución Asíncrona con Streams de CUDA

  • Creación y gestión de streams de CUDA
  • Solapar la ejecución de kernels con transferencias de datos
  • Eventos de CUDA para la gestión de dependencias
  • Prioridades de stream y ajuste de concurrencia

Escribiendo Kernels Personalizados de CUDA

  • El modelo de programación SIMT y la ejecución de warps
  • Configuración de lanzamiento de kernels y bucles grid-stride
  • Indexación de hilos y grids multidimensionales
  • Manejo de errores y comprobaciones de la API en tiempo de ejecución de CUDA

Jerarquía de Hilos y Modelo de Ejecución

  • Grids, bloques e hilos en el código de dispositivo
  • Primitivas a nivel de 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 Parallelismo Flexible

  • La API cooperative_groups y tipos de grupo
  • Tiles de bloques de hilos y tiled_partition
  • Lanzamientos cooperativos a nivel de grid
  • Patrones de sincronización multi-grid

Técnicas de Optimización con Memoria Compartida

  • Bancos de memoria compartida y evitación de conflictos de banco
  • Estrategias de tiling para operaciones matriciales
  • Memoria compartida como caché gestionada por el usuario
  • cuda::shared_memory_mdspan para vistas multidimensionales

Fusión de Kernels y Patrones Paralelos Avanzados

  • Fusionar múltiples kernels para reducir la sobrecarga de lanzamiento
  • Scan, reduce-by-key y algoritmos segmentados
  • Operaciones atómicas y estructuras de datos sin bloqueo
  • Atómicos agregados por warp para mejorar 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 kernel
  • Optimización iterativa con Nsight Compute

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

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

CUDA Graphs y Asincronía Avanzada

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

Patrones de Integración para Aplicaciones Existentes

  • Envolver código GPU tras interfaces de 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 de dispositivo con cuda-gdb

Resumen y Mejores Prácticas

  • Elegir entre Thrust, CUB y kernels personalizados
  • Portabilidad del rendimiento a través de arquitecturas GPU
  • Organización del código y RAII para recursos CUDA
  • Próximos pasos y rutas de aprendizaje avanzadas de CUDA

Requerimientos

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

Audiencia

  • Desarrolladores de C++ que buscan acelerar aplicaciones intensivas en cómputo con GPUs
  • Ingenieros de software que transicionan de programación solo en 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