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.
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
Testimonios (2)
Muy interactivo con varios ejemplos, con una buena progresión en complejidad entre el inicio y el final de la formación.
Jenny - Andheo
Curso - GPU Programming with CUDA and Python
Traducción Automática
Entrenadores, energía y humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Curso - NVIDIA GPU Programming - Extended
Traducción Automática