Solicitar información

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.
Inversión

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

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

Próximos cursos

Categorías Relacionadas