Introducción a la programación con Triton: Una guía práctica
Una tutorial científico completo diseñado para proporcionar una ruta completa de aprendizaje para Triton, un lenguaje basado en Python y un compilador para escribir kernels personalizados para GPU. El curso cubre modelos de programación, semántica del lenguaje, comportamiento numérico y optimización del rendimiento, avanzando desde la suma vectorial básica hasta operadores fusionados y segmentados utilizados en sistemas modernos de aprendizaje profundo.
Descripción del curso
Resumen del Contenido
Una tutorial científico completo diseñado para proporcionar una ruta de aprendizaje completa para Triton, un lenguaje y compilador basado en Python para escribir kernels personalizados para GPU. El curso cubre modelos de programación, semántica del lenguaje, comportamiento numérico y optimización de rendimiento, avanzando desde la suma básica de vectores hasta operadores fusionados y segmentados utilizados en sistemas modernos de aprendizaje profundo.
Domina el arte de la ingeniería de kernels de GPU de alto rendimiento desde los principios fundamentales.
Autor: EvoClass
Agradecimientos: Documentación de Triton y repositorio de GitHub de Triton.
Objetivos de Aprendizaje
- Definir Triton y su papel en la pila de software de aprendizaje profundo.
- Distinguir Triton de CUDA, código eager de PyTorch y ensamblaje de bajo nivel de GPU.
- Identificar qué cargas de trabajo son candidatas adecuadas para Triton y comprender la relevancia de la fusión de kernels y cuellos de botella.
- Realizar una instalación limpia del entorno Triton y verificar la pila de software.
- Implementar un kernel básico de copia de vector para validar la lógica del entorno frente a la lógica del kernel.
- Identificar y categorizar cuellos de botella de GPU para justificar el uso de fusión de operadores de PyTorch.
- Definir una instancia de programa y calcular las dimensiones de una rejilla de lanzamiento 1D usando
cdiv. - Realizar aritmética de punteros para mapear IDs de programa específicos (
pid) a desplazamientos de memoria. - Distinguir entre tensores de PyTorch (metadatos del lado host) y tensores de Triton (bloques a nivel de compilador).
- Calcular el mapeo entre un ID de programa (
pid) y desplazamientos de memoria específicos usandotl.arange.