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
- ¿Qué es ROCm?
- ¿Qué es HIP?
- ROCm vs. CUDA vs. OpenCL
- Vista general de las características y arquitectura de ROCm e HIP
- Configuración del entorno de desarrollo
Primeros pasos
- Creación de un nuevo proyecto ROCm utilizando Visual Studio Code
- Exploración de la estructura y archivos del proyecto
- Compilación y ejecución del programa
- Visualización de la salida mediante printf y fprintf
API de ROCm
- Entender el papel de la API de ROCm en el programa host
- Utilizar la API de ROCm para consultar información y capacidades del dispositivo
- Utilizar la API de ROCm para asignar y liberar memoria del dispositivo
- Utilizar la API de ROCm para copiar datos entre el host y el dispositivo
- Utilizar la API de ROCm para lanzar kernels y sincronizar hilos
- Utilizar la API de ROCm para manejar errores y excepciones
Lenguaje HIP
- Entender el papel del lenguaje HIP en el programa de dispositivo
- Utilizar el lenguaje HIP para escribir kernels que se ejecutan en la GPU y manipulan datos
- Utilizar tipos de datos, calificadores, operadores y expresiones de HIP
- Utilizar las funciones, variables y bibliotecas incorporadas de HIP para realizar tareas y operaciones comunes
Modelo de memoria de ROCm e HIP
- Entender la diferencia entre los modelos de memoria del host y del dispositivo
- Utilizar los espacios de memoria de ROCm e HIP, como global, compartido, constante y local
- Utilizar objetos de memoria de ROCm e HIP, como punteros, matrices, texturas y superficies
- Utilizar modos de acceso a la memoria de ROCm e HIP, como solo lectura, solo escritura, lectura-escritura, etc.
- Utilizar el modelo de consistencia de memoria de ROCm e HIP y los mecanismos de sincronización
Modelo de ejecución de ROCm e HIP
- Entender la diferencia entre los modelos de ejecución del host y del dispositivo
- Utilizar hilos, bloques y cuadrículas de ROCm e HIP para definir el paralelismo
- Utilizar funciones de hilo de ROCm e HIP, como hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
- Utilizar funciones de bloque de ROCm e HIP, como __syncthreads, __threadfence_block, etc.
- Utilizar funciones de cuadrícula de ROCm e HIP, como hipGridDim_x, hipGridSync, grupos cooperativos, etc.
Depuración
- Entender los errores y errores comunes en programas de ROCm e HIP
- Utilizar el depurador de Visual Studio Code para inspeccionar variables, puntos de interrupción, pila de llamadas, etc.
- Utilizar el Depurador de ROCm para depurar programas de ROCm e HIP en dispositivos AMD
- Utilizar el Analizador de ROCm para analizar programas de ROCm e HIP en dispositivos AMD
Optimización
- Entender los factores que afectan el rendimiento de los programas de ROCm e HIP
- Utilizar técnicas de combinación (coalescing) de ROCm e HIP para mejorar el ancho de banda de memoria
- Utilizar técnicas de almacenamiento en caché y prefetching de ROCm e HIP para reducir la latencia de memoria
- Utilizar técnicas de memoria compartida y local de ROCm e HIP para optimizar los accesos a la memoria y el ancho de banda
- Utilizar herramientas de perfilado de ROCm e HIP 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 conceptos de programación paralela.
- Conocimientos básicos de arquitectura de computadoras y jerarquía de memoria.
- Experiencia con herramientas de línea de comandos y editores de código.
Público objetivo
- Desarrolladores que desean aprender a utilizar ROCm e HIP para programar GPUs AMD y explotar su paralelismo.
- Desarrolladores que desean escribir código de alto rendimiento y escalable que pueda ejecutarse en diferentes dispositivos AMD.
- Programadores que desean explorar los aspectos de bajo nivel de la programación de GPU y optimizar el rendimiento de su código.
28 Horas