La programmazione GPU classica (il modello SIMT di CUDA) fa scrivere codice per un singolo thread: si calcola un indice globale, si controlla il bound e si tocca un elemento. Il modello a tile di NVIDIA ribalta la prospettiva: si scrive codice per un intero blocco che possiede una tile (per esempio 1024 elementi o una sotto-matrice 128×128), la si carica, si fanno i conti sull’intera tile e la si riscrive; è il compilatore a mappare la tile su thread e tensor core. Il tutorial di MarkTechPost mostra questo modello con TileGym, costruendo una serie di kernel e confrontandoli con PyTorch per correttezza e performance.
Il punto pratico per chi lavora su AI infrastructure e inference è duplice: capire come le operazioni matematiche di alto livello si mappano su pattern di esecuzione GPU efficienti, e avere un percorso di sperimentazione che funziona anche su hardware comune. Il workflow parte con un probe dell’ambiente CUDA: verifica se il backend reale cuTile è utilizzabile (richiede CUDA 13.1+ e una GPU Ampere/Ada/Blackwell) e, quando manca (per esempio su una T4 di Colab standard), ripiega su Triton, che insegna esattamente lo stesso modello di programmazione a tile. Se non c’è nemmeno una GPU utilizzabile, resta il fallback a PyTorch su CPU per la sola correttezza.
I kernel costruiti
Il tutorial implementa cinque kernel, mostrati sia in cuTile sia in Triton (primitive diverse, stessa idea: ct.load/ct.store e a @ b da un lato, tl.load/tl.store e tl.dot dall’altro):
- Vector add: carica tile, somma, riscrive, il caso base del modello.
- Fused GELU: moltiplicazione, bias e attivazione GELU fuse in un solo passaggio di memoria invece di tre.
- Row softmax: riduzioni su tile (prima il max, poi la somma) per una softmax numericamente stabile.
- Tiled matmul: accumulo lungo la dimensione K a blocchi, indirizzato ai tensor core.
- Flash attention: il capstone avanzato, che usa la online softmax per calcolare l’attention senza materializzare l’intera matrice.
In sintesi
- Il modello a tile fa ragionare per blocchi di dati anziché per singolo thread, lasciando al compilatore il mapping su thread e tensor core.
- La fusione riduce il traffico di memoria, le riduzioni su tile stabilizzano la softmax e la flash attention evita di materializzare la matrice di attention completa.
- cuTile e Triton sono due grafie dello stesso concetto: si sperimenta oggi con Triton su GPU comuni e lo stesso codice si traduce in kernel cuTile reali su sistemi CUDA 13.1+ recenti.
Fonte: A Coding Guide to NVIDIA’s Tile-Based GPU Programming: From cuTile and Triton Kernels to Flash Attention — https://www.marktechpost.com/2026/07/11/a-coding-guide-to-nvidias-tile-based-gpu-programming-from-cutile-and-triton-kernels-to-flash-attention/
Hai qualcosa da aggiungere? Unisciti alla discussione.