Programa del Curso

Introducción

  • ¿Qué es CUDA?
  • CUDA vs OpenCL vs SYCL
  • Descripción general de las características y la arquitectura de CUDA
  • Configuración del entorno de desarrollo

Empezar

  • Creación de un nuevo proyecto CUDA con código Visual Studio
  • Exploración de la estructura y los archivos del proyecto
  • Compilación y ejecución del programa
  • Visualización de la salida mediante printf y fprintf

CUDA API

  • Comprender el rol de la API de CUDA en el programa host
  • Uso de la API de CUDA para consultar la información y las capacidades del dispositivo
  • Uso de la API de CUDA para asignar y desasignar la memoria del dispositivo
  • Uso de la API de CUDA para copiar datos entre el host y el dispositivo
  • Uso de la API de CUDA para iniciar kernels y sincronizar subprocesos
  • Uso de la API de CUDA para controlar errores y excepciones

CUDA C/C++

  • Comprender el papel de CUDA C/C++ en el programa del dispositivo
  • Uso de CUDA C/C++ para escribir kernels que se ejecutan en el GPU y manipular datos
  • Uso de tipos de datos, calificadores, operadores y expresiones de CUDA C/C++
  • Uso de funciones integradas de CUDA C/C++, como matemáticas, atómicas, deformaciones, etc.
  • Uso de variables integradas de CUDA C/C++, como threadIdx, blockIdx, blockDim, etc.
  • Uso de librerías CUDA C/C++, como cuBLAS, cuFFT, cuRAND, etc.

Modelo de memoria CUDA

  • Descripción de la diferencia entre los modelos de memoria de host y de dispositivo
  • Uso de espacios de memoria CUDA, como global, compartido, constante y local
  • Uso de objetos de memoria CUDA, como punteros, matrices, texturas y superficies
  • Uso de modos de acceso a memoria CUDA, como solo lectura, solo escritura, lectura-escritura, etc.
  • Uso del modelo de coherencia de memoria CUDA y mecanismos de sincronización

Modelo de ejecución de CUDA

  • Descripción de la diferencia entre los modelos de ejecución de host y dispositivo
  • Uso de subprocesos, bloques y cuadrículas CUDA para definir el paralelismo
  • Uso de funciones de subproceso CUDA, como threadIdx, blockIdx, blockDim, etc.
  • Uso de funciones de bloque CUDA, como __syncthreads, __threadfence_block, etc.
  • Uso de funciones de cuadrícula CUDA, como gridDim, gridSync, grupos cooperativos, etc.

Depuración

  • Comprender los errores y fallos comunes en los programas CUDA
  • Uso del depurador de código Visual Studio para inspeccionar variables, puntos de interrupción, pila de llamadas, etc.
  • Uso de CUDA-GDB para depurar programas CUDA en Linux
  • Uso de CUDA-MEMCHECK para detectar errores y fugas de memoria
  • Uso de NVIDIA Nsight para depurar y analizar programas CUDA en Windows

Optimización

  • Comprender los factores que afectan el rendimiento de los programas CUDA
  • Uso de técnicas de fusión CUDA para mejorar el rendimiento de la memoria
  • Uso de técnicas de almacenamiento en caché y precarga de CUDA para reducir la latencia de memoria
  • Uso de técnicas de memoria local y memoria compartida CUDA para optimizar los accesos a la memoria y el ancho de banda
  • Uso de herramientas de generación de perfiles y generación de perfiles CUDA para medir y mejorar el tiempo de ejecución y la utilización de recursos

Resumen y próximos pasos

Requerimientos

  • Comprensión del lenguaje C/C++ y de los conceptos de programación paralela
  • Conocimientos básicos de arquitectura de computadores y jerarquía de memoria
  • Experiencia con herramientas de línea de comandos y editores de código

Audiencia

  • Desarrolladores que deseen aprender a usar CUDA para programar NVIDIA GPU y explotar su paralelismo
  • Desarrolladores que deseen escribir código escalable y de alto rendimiento que se pueda ejecutar en diferentes dispositivos CUDA
  • Programadores que deseen explorar los aspectos de bajo nivel de la programación GPU y optimizar el rendimiento de su código
 28 horas

Número de participantes



Precio por participante

Testimonios (1)

Cursos Relacionados

AMD GPU Programming

28 horas

Introduction to GPU Programming

21 horas

GPU Programming - OpenCL vs CUDA vs ROCm

28 horas

ROCm for Windows

21 horas

Categorías Relacionadas