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 frente a CUDA frente a OpenCL
- Visión general de las características y arquitectura de ROCm y HIP
- Configuración del entorno de desarrollo
Primeros pasos
- Creación de un nuevo proyecto de ROCm utilizando Visual Studio Code
- Exploración de la estructura del proyecto y los archivos
- Compilación y ejecución del programa
- Ausencia de salida mediante printf y fprintf (Nota: el original dice "Displaying", que se traduce como mostrar, pero en contexto técnico suele referirse a ver/salida. Se mantiene 'Mostrar la salida') -> Mostrar la salida utilizando printf y fprintf.
API de ROCm
- Comprensión del papel de la API de ROCm en el programa host.
- Uso de la API de ROCm para consultar información y capacidades del dispositivo.
- Uso de la API de ROCm para asignar y liberar memoria del dispositivo.
- Uso de la API de ROCm para copiar datos entre el host y el dispositivo.
- Uso de la API de ROCm para lanzar kernels y sincronizar hilos.
- Uso de la API de ROCm para manejar errores y excepciones.
Lenguaje HIP
- Comprensión del papel del lenguaje HIP en el programa del dispositivo.
- Uso del lenguaje HIP para escribir kernels que se ejecuten en la GPU y manipulen datos.
- Uso de los tipos de datos, calificadores, operadores y expresiones de HIP.
- Uso de las funciones integradas, variables y bibliotecas de HIP para realizar tareas y operaciones comunes.
Modelo de memoria de ROCm y HIP
- Comprensión de la diferencia entre los modelos de memoria del host y del dispositivo.
- Uso de los espacios de memoria de ROCm y HIP, como global, compartido, constante y local.
- Uso de los objetos de memoria de ROCm y HIP, como punteros, matrices, texturas y superficies.
- Uso de los modos de acceso a la memoria de ROCm y HIP, como solo lectura, solo escritura, lectura-escritura, etc.
- Uso del modelo de consistencia de memoria y mecanismos de sincronización de ROCm y HIP.
Modelo de ejecución de ROCm y HIP
- Comprensión de la diferencia entre los modelos de ejecución del host y del dispositivo.
- Uso de los hilos, bloques y cuadrículas de ROCm y HIP para definir el paralelismo.
- Uso de las funciones de hilo de ROCm y HIP, como hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
- Uso de las funciones de bloque de ROCm y HIP, como __syncthreads, __threadfence_block, etc.
- Uso de las funciones de cuadrícula de ROCm y HIP, como hipGridDim_x, hipGridSync, grupos cooperativos, etc.
Depuración
- Comprensión de los errores y errores comunes en los programas de ROCm y HIP.
- Uso del depurador de Visual Studio Code para inspeccionar variables, puntos de interrupción, pila de llamadas, etc.
- Uso del depurador de ROCm para depurar programas de ROCm y HIP en dispositivos AMD.
- Uso del perfilador de ROCm para analizar programas de ROCm y HIP en dispositivos AMD.
Optimización
- Comprensión de los factores que afectan el rendimiento de los programas de ROCm y HIP.
- Uso de técnicas de coalescencia de ROCm y HIP para mejorar el ancho de banda de memoria.
- Uso de técnicas de almacenamiento en caché y prebúsqueda de ROCm y HIP para reducir la latencia de memoria.
- Uso de técnicas de memoria compartida y memoria local de ROCm y HIP para optimizar los accesos a la memoria y el ancho de banda.
- Uso del perfilado y herramientas de perfilado de ROCm y 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 deseen aprender a usar ROCm y HIP para programar GPUs AMD y explotar su paralelismo.
- Desarrolladores que deseen escribir código de alto rendimiento y escalable que pueda ejecutarse en diferentes dispositivos AMD.
- Programadores que deseen explorar los aspectos de bajo nivel de la programación de GPU y optimizar el rendimiento de su código.
28 Horas