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 CUDA C++ con nvcc y CMake.
  • Verificación del entorno de desarrollo GPU.

Algoritmos Paralelos con Thrust y CUB

  • Ordenación, reducción y transformación aceleradas por GPU.
  • Reestructuración de algoritmos STL para su ejecución en GPU.
  • Vectores de dispositivo de Thrust y políticas de ejecución.
  • Primitivas a nivel de dispositivo CUB para tuberías personalizadas.

Arquitectura y Gestión de la Memoria GPU

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

Ejecución Asíncrona con Streams de CUDA

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

Escritura de Kernels CUDA Personalizados

  • El modelo de programación SIMT y la ejecución del warp.
  • Configuración del lanzamiento del kernel y bucles de paso de rejilla (grid-stride loops).
  • Indexación de hilos y rejillas multidimensionales.
  • Gestión de errores y comprobaciones de la API de ejecución de CUDA.

Jerarquía de Hilos y Modelo de Ejecución

  • Rejillas, bloques y hilos en el código del dispositivo.
  • Primitivas a nivel de warp y operaciones de votación (ballot).
  • 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 los tipos de grupo.
  • Mosaicos (tiles) de bloques de hilos y tiled_partition.
  • Lanzamientos cooperativos a nivel de rejilla.
  • Patrones de sincronización multi-rejilla.

Técnicas de Optimización de Memoria Compartida

  • Bancos de memoria compartida y evitación de conflictos de banco.
  • Estrategias de mosaico (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 Avanzados de Paralelismo

  • Fusión de múltiples kernels para reducir la sobrecarga de lanzamiento.
  • Algoritmos de escaneo, reducción por clave y segmentados.
  • Operaciones atómicas y estructuras de datos sin bloqueo (lock-free).
  • Atómicos agregados a nivel de warp para mejorar el rendimiento.

Perfilado y Optimización con Nsight Systems

  • Análisis cronológico de la actividad de la CPU y la GPU.
  • Identificación de cuellos de botella en las transferencias de memoria.
  • Perfilado del rendimiento y ocupación de los kernels.
  • Optimización iterativa con Nsight Compute.

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

  • Lambdas, constexpr y auto en kernels.
  • Algoritmos paralelos de C++17 y políticas de ejecución.
  • Conceptos y rangos de 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 a partir de la ejecución del stream.
  • Actualización de gráficos y nodos de ejecución condicional.
  • Reducción de la latencia de lanzamiento para cargas de trabajo iterativas.

Patrones de Integración para Aplicaciones Existentes

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

Resumen y Mejores Prácticas

  • Celección entre Thrust, CUB y kernels personalizados.
  • Portabilidad del rendimiento entre arquitecturas GPU.
  • Estructuración del código y RAII para recursos CUDA.
  • Próximos pasos y rutas de aprendizaje avanzadas de CUDA.

Requerimientos

  • Habilidad básica en C++ que incluya 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 CUDA ni programación GPU.

Audiencia

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

Formación Corporativa a Medida

Soluciones de formación diseñadas exclusivamente para empresas.

  • Contenido personalizado: Adaptamos el temario y los ejercicios prácticos a los objetivos y necesidades reales del proyecto.
  • Calendario flexible: Fechas y horarios adaptados a la agenda de su equipo.
  • Modalidad: Online (en directo), In-company (en sus oficinas) o Híbrida.
Inversión

Precio por grupo privado (formación online) desde 2900 € + IVA*

Contáctenos para obtener un presupuesto exacto y conocer nuestras promociones actuales

Reseñas (3)

Próximos cursos

Categorías Relacionadas