Contacta con nosotros

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

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas