Introduzione alla programmazione in Triton: un tutorial pratico
Un tutorial scientifico completo progettato per fornire un percorso di apprendimento completo per Triton, un linguaggio basato su Python e un compilatore per scrivere kernel GPU personalizzati. Il corso copre modelli di programmazione, semantica del linguaggio, comportamento numerico e ottimizzazione delle prestazioni, passando dalla semplice addizione vettoriale a operatori fusi e suddivisi utilizzati nei moderni sistemi di deep learning.
Panoramica del corso
Riepilogo del Contenuto
Un tutorial scientifico completo progettato per fornire un percorso di apprendimento completo su Triton, un linguaggio basato su Python e un compilatore per scrivere kernel GPU personalizzati. Il corso copre modelli di programmazione, semantica del linguaggio, comportamento numerico e ottimizzazione delle prestazioni, passando da operazioni di base come l'addizione vettoriale a operatori fusi e suddivisi utilizzati nei moderni sistemi di deep learning.
Padroneggia l'arte dell'ingegneria avanzata di kernel GPU partendo dai principi fondamentali.
Autore: EvoClass
Ringraziamenti: Documentazione di Triton e repository GitHub di Triton.
Obiettivi di Apprendimento
- Definire Triton e il suo ruolo nello stack software del deep learning.
- Distinguere Triton da CUDA, codice eager di PyTorch e assembly a basso livello per GPU.
- Identificare quali carichi di lavoro sono adatti a Triton e comprendere l'importanza della fusione di operatori e dei colli di bottiglia.
- Eseguire un'installazione pulita dell'ambiente Triton e verificare lo stack software.
- Implementare un kernel di copia vettoriale di base per convalidare la logica dell'ambiente rispetto alla logica del kernel.
- Identificare e categorizzare i colli di bottiglia GPU per giustificare l'uso della fusione di operatori in PyTorch.
- Definire un'istanza di programma e calcolare le dimensioni di una griglia di lancio 1D usando
cdiv. - Eseguire aritmetica dei puntatori per mappare ID di programma specifici (
pid) a offset di memoria. - Distinguere tra tensori PyTorch (metadati lato host) e tensori Triton (blocchi a livello di compilatore).
- Calcolare la mappatura tra un ID di programma (
pid) e offset di memoria specifici usandotl.arange.