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

Número de participantes



Precio por participante

Testimonios (1)

Cursos Relacionados

Introduction to GPU Programming

21 horas

GPU Programming with CUDA

28 horas

GPU Programming - OpenCL vs CUDA vs ROCm

28 horas

ROCm for Windows

21 horas

Categorías Relacionadas