5.45.4.6 Programación GPU (4 horas) [Habilidades AG-C09]

Referencias Bibliográficas: [Kirk and mei W. Hwu, 2016,Corporation, 2024]

Temas

  1. Computación de Propósito General en GPU (GPGPU)
    1. Arquitectura de GPU: multiprocesadores de flujo (SMs), núcleos CUDA y modelo de ejecución por warp.
    2. Modelo de ejecución SIMT (Single Instruction, Multiple Threads) y sus diferencias respecto al SIMD de CPU.
    3. Interacción host-dispositivo: transferencia de datos entre memoria de CPU (host) y GPU (dispositivo) vía PCIe.
    4. Casos de uso: computación científica, aprendizaje automático, procesamiento de imágenes y simulación a gran escala.
  2. Modelo de Programación CUDA
    1. Jerarquía de ejecución CUDA: grids, bloques de hilos e hilos individuales; mapeo al hardware GPU.
    2. Definición y lanzamiento de kernels; parámetros de configuración (dimensiones de grid y bloque).
    3. Indexación de hilos: threadIdx, blockIdx, blockDim, gridDim; cálculo de índices globales en 1D, 2D y 3D.
    4. Divergencia de warp: implicaciones de las bifurcaciones dentro de un warp en el rendimiento.
    5. Primitiva de sincronización intra-bloque: __syncthreads.
  3. Jerarquía de Memoria CUDA
    1. Memoria global: grande, alta latencia, accesible por todos los hilos; patrones de acceso coalescente para el rendimiento.
    2. Memoria compartida: memoria en chip de baja latencia compartida dentro de un bloque de hilos; conflictos de banco.
    3. Registros y memoria local: almacenamiento privado por hilo.
    4. Memoria constante y de textura: cachés de solo lectura optimizadas para patrones de acceso específicos.
    5. Memoria unificada: modelo de programación simplificado con migración automática de datos entre host y dispositivo.

Aprendizaje esperado (Learning Outcomes)

  1. Escribir un kernel CUDA que realice una operación data-paralela (p. ej., suma de vectores, multiplicación de matrices) y configurar correctamente las dimensiones de grid y bloque [Escribir]
  2. Analizar el impacto de los patrones de acceso a memoria global (acceso coalescente vs. acceso entrelazado) y el uso de memoria compartida en el rendimiento de un kernel GPU [Analizar]
  3. Diseñar un algoritmo paralelo usando el modelo de programación CUDA, incluyendo la jerarquía de hilos, estrategia de asignación de memoria y transferencias de datos entre host y dispositivo [Diseñar]

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM