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
Introducción
- ¿En qué consiste CUDA?
- CUDA frente a OpenCL y SYCL: diferencias principales
- Descripción general de las funcionalidades y la arquitectura de CUDA
- Configuración del entorno de desarrollo inicial
Primeros pasos
- Creación de un proyecto nuevo con Visual Studio Code en el marco de CUDA.
- Análisis detallado de la estructura y los archivos del proyecto.
- Compilación e inicio de ejecución del programa.
- Muestra de resultados mediante las funciones printf y fprintf.
API de CUDA
- Comprensión del papel que desempeña la API de CUDA en los programas generados por el host.
- Consulta de datos del dispositivo y sus capacidades mediante dicha API.
- Asignación y liberación dinámica de memoria GPU con ayuda de la misma API.
- Transferencia bidireccional de información entre el host y la GPU usando funciones específicas.
- Lanzamiento de kernels y sincronización de hilos, todo gestionado por la API.
- Manejo y detección oportuna de errores mediante los mecanismos previstos en CUDA.
CUDA C/C++
- Definición del rol que juega el lenguaje CUDA C/C++ dentro del código ejecutado en la GPU.
- Redacción de kernels en este entorno para manipular y procesar datos de forma eficiente.
- Uso apropiado de tipos de datos, modificadores, operadores y expresiones permitidos por CUDA C/C++.
- Aplicación de funciones integradas como las matemáticas, atómicas o específicas para grupos warp.
- Incorporación correcta de variables predefinidas —threadIdx, blockIdx, blockDim— en el código fuente.
- Integración y aprovechamiento de librerías destacadas como cuBLAS, cuFFT o cuRAND para ampliar capacidades.
Modelo de Memoria de CUDA
- Diferenciación clara entre los modelos de memoria usados por el host y la GPU.
- Aplicación práctica de los distintos espacios de almacenamiento —global, compartida, constante y local— para reducir latencias y mejorar eficiencia.
- Gestión óptima de estructuras como punteros, arreglos, texturas o superficies mediante los objetos de memoria disponibles en CUDA.
- Selección precisa del modo de acceso (lectura únicamente, escritura exclusiva o combinado) para reducir congestiones.
- Mantenimiento coherente y control sincronizado entre hilos mediante el modelo de consistencia de memoria establecido por CUDA.
Modelo de Ejecución en CUDA
- Análisis comparativo entre los flujos de ejecución del host y la GPU.
- Diseño adecuado de paralelismo basándose en hilos, bloques y rejillas.
- Incorporación adecuada de funciones dedicadas al control de hilos —threadIdx, blockIdx, blockDim— dentro del código paralelo.
- Uso correcto de funciones de sincronización a nivel de bloques como __syncthreads o __threadfence_block.
- Gestionación integral de rejillas usando parámetros como gridDim, mecanismos de sincronización global y el uso estratégico de grupos cooperativos.
Depuración de Programas
- Identificación rápida y análisis profundo de errores típicos en código CUDA.
- Aplicación práctica del depurador integrado en Visual Studio Code para inspeccionar variables, puntos de interrupción y pila de llamadas.
- Depuración avanzada bajo entorno Linux mediante CUDA-GDB.
- Detección exhaustiva de fallos o fugas de memoria a través de la herramienta CUDA-MEMCHECK.
- Análisis cualitativo y visualización en Windows mediante NVIDIA Nsight para resolver incidencias complejas.
Optimización del Rendimiento
- Evaluación crítica de todas las variables que influyen sobre la celeridad operativa de los programas CUDA.
- Implementación rigurosa de estrategias como la coalescencia para aumentar el flujo eficaz de datos a través de la memoria GPU.
- Aplicación estratégica del cacheo y la precarga con objeto de minimizar latencias asociadas al acceso a memorias lentas.
- Utilización óptima tanto de la memoria compartida como de la memoria local, con el fin de reducir congestiones en anchura de banda y mejorar operatividad.
- Determinación cuantitativa del rendimiento mediante técnicas de perfilado y herramientas específicas que permiten ajustar adecuadamente el consumo de recursos.
Resumen y Próximos Pasos
Requerimientos
- Conocimiento del lenguaje C/C++ y conceptos básicos de programación paralela
- Noblezas iniciales sobre la arquitectura informática y la jerarquía de memoria
- Experiencia previa con herramientas de línea de comandos y editores de código
Público objetivo
- Desarrolladores interesados en aprender a usar CUDA para programar GPUs de NVIDIA y extraer todo el provecho del paralelismo.
- Programadores que deseen crear código escalable y de alto rendimiento, capaz de ejecutarse en múltiples dispositivos compatibles con CUDA.
- Ingenieros interesados en explorar los aspectos más profundos de la programación de GPUs y potenciar el desempeño de sus programas.
28 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.
Precio por grupo privado (formación online) desde 5800 € + IVA*
Contáctenos para obtener un presupuesto exacto y conocer nuestras promociones actuales