Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Temario del curso
Computación en GPU y Arquitectura CUDA
- Diferencias arquitectónicas entre CPU y GPU
- Modelo de multiprocesadores de transmisión (streaming) de NVIDIA GPU
- Vista general del modelo de programación de CUDA
- Computación heterogénea y el paradigma host-dispositivo
Configuración del entorno de desarrollo de CUDA
- Instalación del CUDA Toolkit 13.x
- Compilador NVCC y flujo de trabajo de construcción
- Verificación del entorno mediante consultas de dispositivo
- Integración con IDE y herramientas de desarrollo
Escribir y lanzar Kernels CUDA
- Sintaxis y calificadoras de funciones de kernel
- Configuración del lanzamiento y ejecución
- Adición de vectores y patrones básicos paralelos a los datos
- Marcos para la verificación de errores de CUDA
Jerarquía de hilos de CUDA y modelo de ejecución
- Organización de grid, bloque e hilo
- Indexación de hilos y cálculo del ID global
- Ejecución de warp y modelo SIMT
- Ocupación y utilización de recursos
Arquitectura y gestión de memoria en GPU
- Tipos de memoria: global, compartida, constante y registros
- Asignación y liberación de memoria del dispositivo
- Transferencias host-a-dispositivo y dispositivo-a-host
- Memoria compartida para la colaboración intra-bloque
Memoria unificada y migración de datos
- Modelo de memoria unificada y asignaciones gestionadas
- Migración de páginas y paginación bajo demanda
- Precarga asíncrona con cudaMemPrefetchAsync
- Consejos de memoria (memory advice) para patrones de acceso
Perfilado a nivel de sistema con Nsight Systems
- Análisis de línea de tiempo de Nsight Systems
- Identificación de puntos de sincronización entre CPU y GPU
- Visualización de la ejecución de kernels y transferencias de memoria
- Interpretación de datos de rendimiento a nivel de sistema
Optimización de kernels con Nsight Compute
- Perfilado interactivo de kernels con Nsight Compute
- Análisis del ancho de banda y el rendimiento de memoria
- Utilización del cómputo y estadísticas de estado de warp
- Análisis guiado y reglas de optimización
Flujos concurrentes y operaciones asíncronas
- Flujos de CUDA y el flujo predeterminado
- Superposición de ejecución de kernels con transferencias de datos
- Sincronización de flujos y eventos de CUDA
- Patrones de diseño de pipelines multi-flujo
Gestión de errores y herramientas de depuración
- Códigos de error de la API de CUDA y estrategias de recuperación
- Compute-sanitizer para la verificación del acceso a memoria
- cuda-gdb para la depuración de kernels
- Aserciones y detección síncrona de errores
Flujo de trabajo de optimización basado en perfiles
- Metodología iterativa de perfilado
- Identificación y priorización de cuellos de botella
- Pruebas de regresión de rendimiento
- Documentación de las decisiones de optimización
Proyecto de aplicación acelerada de extremo a extremo
- Diseño de una solución completa acelerada por GPU
- Integración del perfilado durante todo el desarrollo
- Evaluación comparativa (benchmarking) e informe de rendimiento
- Consideraciones de implementación para producción
Requerimientos
- Competencia básica en programación C/C++, incluyendo tipos de variables, bucles, instrucciones condicionales, funciones y manipulación de arrays
- Familiaridad con la compilación y ejecución de programas desde la línea de comandos
- No se requiere experiencia previa en programación de GPU o CUDA
Audiencia objetivo
- Desarrolladores e ingenieros de software que buscan acelerar aplicaciones C/C++ con GPU
- Investigadores científicos y profesionales de HPC que transicionan de computación exclusivamente en CPU a computación heterogénea
- Líderes técnicos que evalúan la aceleración por GPU para cargas de trabajo de producción
8 Horas