Contacta con nosotros

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

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas