Programa del Curso

Introducción

  • ¿Qué es ROCm?
  • ¿Qué es HIP?
  • ROCm vs CUDA vs OpenCL
  • Descripción general de las características y la arquitectura de ROCm y HIP
  • Configuración del entorno de desarrollo

Empezar

  • Creación de un nuevo proyecto ROCm mediante el código Visual Studio
  • Exploración de la estructura y los archivos del proyecto
  • Compilación y ejecución del programa
  • Visualización de la salida mediante printf y fprintf

ROCm API

  • Comprender el papel de la API ROCm en el programa host
  • Uso de la API ROCm para consultar la información y las capacidades del dispositivo
  • Uso de la API ROCm para asignar y desasignar la memoria del dispositivo
  • Uso de la API ROCm para copiar datos entre el host y el dispositivo
  • Uso de la API ROCm para iniciar kernels y sincronizar subprocesos
  • Uso de la API ROCm para controlar errores y excepciones

Lenguaje HIP

  • Comprender el papel del lenguaje HIP en el programa del dispositivo
  • Uso del lenguaje HIP para escribir kernels que se ejecutan en el GPU y manipular datos
  • Uso de tipos de datos, calificadores, operadores y expresiones de HIP
  • Uso de funciones, variables y bibliotecas integradas de HIP para realizar tareas y operaciones comunes

Modelo de memoria ROCm y HIP

  • Descripción de la diferencia entre los modelos de memoria de host y de dispositivo
  • Uso de espacios de memoria ROCm y HIP, como global, compartido, constante y local
  • Uso de objetos de memoria ROCm y HIP, como punteros, matrices, texturas y superficies
  • Uso de modos de acceso a memoria ROCm y HIP, como solo lectura, solo escritura, lectura-escritura, etc.
  • Uso del modelo de coherencia de memoria ROCm y HIP y mecanismos de sincronización

Modelo de ejecución de ROCm y HIP

  • Descripción de la diferencia entre los modelos de ejecución de host y dispositivo
  • Uso de subprocesos, bloques y cuadrículas ROCm y HIP para definir el paralelismo
  • Uso de funciones de rosca ROCm y HIP, como hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
  • Uso de funciones de bloque ROCm y HIP, como __syncthreads, __threadfence_block, etc.
  • Uso de funciones de cuadrícula ROCm y HIP, como hipGridDim_x, hipGridSync, grupos cooperativos, etc.

Depuración

  • Comprender los errores y fallos comunes en los programas ROCm y HIP
  • Uso del depurador de código Visual Studio para inspeccionar variables, puntos de interrupción, pila de llamadas, etc.
  • Uso del depurador ROCm para depurar programas ROCm y HIP en dispositivos AMD
  • Uso de ROCm Profiler para analizar programas ROCm y HIP en dispositivos AMD

Optimización

  • Comprender los factores que afectan el rendimiento de los programas ROCm y HIP
  • Uso de técnicas de fusión ROCm y HIP para mejorar el rendimiento de la memoria
  • Uso de técnicas de almacenamiento en caché y precarga de ROCm y HIP para reducir la latencia de memoria
  • Uso de técnicas de memoria local y memoria compartida ROCm y HIP para optimizar los accesos a la memoria y el ancho de banda
  • Uso de herramientas de generación de perfiles y generación de perfiles ROCm y HIP para medir y mejorar el tiempo de ejecución y la utilización de recursos

Resumen y siguiente paso

Requerimientos

  • Comprensión del lenguaje C/C++ y de los conceptos de programación paralela
  • Conocimientos básicos de arquitectura de computadores y jerarquía de memoria
  • Experiencia con herramientas de línea de comandos y editores de código

Audiencia

  • Desarrolladores que deseen aprender a usar ROCm y HIP para programar AMD GPU y explotar su paralelismo
  • Desarrolladores que deseen escribir código escalable y de alto rendimiento que pueda ejecutarse en diferentes dispositivos AMD
  • Programadores que deseen explorar los aspectos de bajo nivel de la programación GPU y optimizar el rendimiento de su código
 28 horas

Testimonios (1)

Categorías Relacionadas