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
- Visión general de las características y arquitectura de ROCm e HIP
- Configuración del entorno de desarrollo
Primeros pasos
- Crear un nuevo proyecto ROCm usando Visual Studio Code
- Explorar la estructura y los archivos del proyecto
- Compilar y ejecutar el programa
- Mostrar la salida usando printf y fprintf
API de ROCm
- Comprender el papel de la API de ROCm en el programa del host
- Usar la API de ROCm para consultar información y capacidades del dispositivo
- Usar la API de ROCm para asignar y liberar memoria del dispositivo
- Usar la API de ROCm para copiar datos entre el host y el dispositivo
- Usar la API de ROCm para lanzar kernels y sincronizar hilos
- Usar la API de ROCm para manejar errores y excepciones
Lenguaje HIP
- Comprender el papel del lenguaje HIP en el programa del dispositivo
- Usar el lenguaje HIP para escribir kernels que se ejecuten en la GPU y manipulen datos
- Usar tipos de datos, calificadores, operadores y expresiones de HIP
- Aprovechar las funciones, variables y bibliotecas integradas de HIP para realizar tareas y operaciones comunes
Modelo de memoria de ROCm e HIP
- Comprender la diferencia entre los modelos de memoria del host y del dispositivo
- Usar los espacios de memoria de ROCm e HIP, como global, compartida, constante y local
- Usar objetos de memoria de ROCm e HIP, como punteros, arreglos, texturas y superficies
- Usar los modos de acceso a la memoria de ROCm e HIP, como solo lectura, solo escritura, lectura-escritura, etc.
- Usar el modelo de consistencia de memoria y los mecanismos de sincronización de ROCm e HIP
Modelo de ejecución de ROCm e HIP
- Comprender la diferencia entre los modelos de ejecución del host y del dispositivo
- Usar hilos, bloques y cuadrículas de ROCm e HIP para definir el paralelismo
- Usar funciones de hilo de ROCm e HIP, como hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
- Usar funciones de bloque de ROCm e HIP, como __syncthreads, __threadfence_block, etc.
- Usar funciones de cuadrícula de ROCm e HIP, como hipGridDim_x, hipGridSync, grupos cooperativos, etc.
Depuración
- Comprender los errores y bugs comunes en programas de ROCm e HIP
- Usar el depurador de Visual Studio Code para inspeccionar variables, puntos de interrupción, pila de llamadas, etc.
- Usar el Depurador de ROCm para depurar programas de ROCm e HIP en dispositivos de AMD
- Usar el Perfilador de ROCm para analizar programas de ROCm e HIP en dispositivos de AMD
Optimización
- Comprender los factores que afectan el rendimiento de programas de ROCm e HIP
- Usar técnicas de coalescencia de ROCm e HIP para mejorar el rendimiento de memoria
- Usar técnicas de almacenamiento en caché y prefetching de ROCm e HIP para reducir la latencia de memoria
- Usar técnicas de memoria compartida y memoria local de ROCm e HIP para optimizar los accesos a la memoria y el ancho de banda
- Usar herramientas de perfilado y análisis de ROCm e HIP para medir y mejorar el tiempo de ejecución y la utilización de recursos
Resumen y siguientes pasos
Requerimientos
- Conocimiento del lenguaje C/C++ y de los 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 e HIP para programar GPU de AMD y aprovechar su paralelismo
- Desarrolladores que deseen escribir código de alto rendimiento y escalable que pueda ejecutarse en diferentes dispositivos de AMD
- Programadores interesados en explorar los aspectos de bajo nivel de la programación de GPU y optimizar el rendimiento de su código
28 Horas