Temario del curso
Computación en GPU y arquitectura CUDA
- Diferencias entre la arquitectura de CPUs y GPUs
- Modelo de multiprocesadores de flujo en GPUs NVIDIA
- Introducción al modelo de programación CUDA
- Computación heterogénea y el paradigma host-device
Configuración del entorno de desarrollo CUDA
- Instalación del kit de herramientas CUDA 13.x
- Uso del compilador NVCC y flujo de construcción de proyectos
- Verificación del entorno mediante consultas al dispositivo
- Integración con IDEs y herramientas adicionales para el desarrollo
Escritura y lanzamiento de kernels CUDA
- Sintaxis y modificadores aplicables a las funciones kernel
- Configuración del lanzamiento y ejecución de los kernels
- Ejemplos prácticos como la suma vectorial y patrones básicos de paralelismo de datos
- Macros para comprobar errores durante la ejecución en CUDA
Jerarquía de hilos y modelo de ejecución en CUDA
- Organización lógica en grillas, bloques e hilos individuales
- Cálculo del índice de cada hilo mediante identificadores globales
- Ejecución por warps y modelo SIMT empleado en CUDA
- Factor de ocupación y optimización del uso de recursos GPU
Arquitectura y gestión de la memoria en GPUs
- Tipos de memoria: global, compartida, constante y registros
- Asignación y liberación de memoria en el dispositivo GPU
- Transferencias de datos entre la CPU y la GPU
- Utilización de la memoria compartida para facilitar la colaboración entre hilos dentro de un mismo bloque
Memoria unificada y migración automática de datos
- Modelo de memoria unificado y asignaciones gestionadas por el sistema
- Migración automática de páginas y mecanismos de paginación bajo demanda
- Prefetching asíncrono mediante la función cudaMemPrefetchAsync
- Sugerencias de optimización basadas en patrones de acceso a la memoria
Análisis del sistema con Nsight Systems
- Interpretación detallada de los cronogramas generados por Nsight Systems
- Detección de puntos de sincronización entre CPU y GPU
- Representación visual del funcionamiento de kernels y flujos de transferencia de datos
- Interpretación coherente de los indicadores de rendimiento a nivel global del sistema
Optimización de kernels mediante Nsight Compute
- Análisis interactivo detallado de kernels gracias a Nsight Compute
- Evaluación del rendimiento en términos de flujo de memoria y ancho de banda disponible
- Cálculo preciso de la utilización computacional y estadísticas sobre el estado de los warps
- Lineamientos claros para realizar mejoras efectivas en el código según resultados del análisis
Flujos concurrentes y operaciones asíncronas
- Conceptos básicos sobre los flujos CUDA y el flujo predeterminado por defecto
- Solapamiento eficiente de la ejecución de cálculos con transferencias simultáneas de datos a través del bus GPU-CPU
- Gestión adecuada de sincronizaciones mediante eventos definidos dentro de los flujos CUDA
- Diseño racional de pipelines informáticos que empleen múltiples flujos simultáneamente
Manejo de errores y herramientas de depuración<
- Interpretación adecuada de códigos de error provenientes de la API de CUDA junto con estrategias efectivas para su corrección
- Utilización del módulo Compute-sanitizer dirigido al control exhaustivo de accesos indebidos a zonas reservadas en memoria<
- Aplicación y uso práctico de cuda-gdb para depurar correctamente los kernels implementados durante la etapa de desarrollo
- Implementación estratégica de aserciones internas y mecanismos de detección rápida de errores sincronizados<
Metodología iterativa para la optimización basada en análisis exhaustivo<
- Aplicación progresiva y reiterativa de ciclos de analítica detallada al hilo de trabajo desarrollado<
- Identificación y ordenamiento según prioridades críticas respecto a los cuellos de botella detectados en cada evaluación <
- Diseño e implementación de pruebas precisas destinadas al seguimiento continuo de las modificaciones aplicadas a fin de detectar regresiones indeseadas<
- Documentación adecuada y sistematizada acerca de cada decisión adoptada como consecuencia de los análisis efectuados <
Desarrollo integral y ejecución práctica de un proyecto con aceleración GPU<
- Diseño completo e integrado para una solución realmente optimizada gracias al uso intensivo de capacidades avanzadas ofrecidas por la plataforma CUDA <
- Integración continuada de ciclos iterativos de análisis como parte fundamental durante el proceso completo de creación y pruebas <
- Ejecución obligatoria y detallada de evaluaciones comparativas para obtener mediciones relevantes del incremento logrado en rendimiento <
- Toma adecuada de consideraciones operativas respecto a la implementación definitiva de la aplicación desarrollada dentro de entornos productivos<
Requerimientos
- Conocimientos básicos de programación en C/C++: tipos de variables, bucles, estructuras condicionales, funciones y manipulación de arreglos.
- Dominio del proceso de compilación y ejecución de programas desde la línea de comandos.
- No se requiere experiencia previa en programación con GPUs ni en CUDA.
Público objetivo
- Desarrolladores e ingenieros de software que buscan acelerar aplicaciones C/C++ mediante el uso de GPUs.
- Investigadores científicos y profesionales del HPC que estén migrando desde entornos exclusivamente basados en CPU a arquitecturas computacionales heterogéneas.
- Líderes técnicos encargados de evaluar el uso de la aceleración por GPU en cargas de trabajo productivas.
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.
Precio por grupo privado (formación online) desde 2900 € + IVA*
Contáctenos para obtener un presupuesto exacto y conocer nuestras promociones actuales