NVIDIA ha rilasciato CUDA 13.3, una versione che introduce la programmazione GPU basata su tile direttamente in C++. L'aggiornamento mira a sfruttare meglio i Tensor Core riducendo al contempo la complessità della scrittura dei kernel.
Come funziona la programmazione basata su tile
La programmazione basata su tile suddivide un calcolo in piccoli blocchi di dimensione fissa chiamati tile. Questi tile corrispondono ai pattern interni di flusso dati della GPU, semplificando il mantenimento dell'hardware occupato. Nelle versioni precedenti di CUDA, gli sviluppatori dovevano gestire manualmente questa mappatura. Ora il compilatore se ne occupa, almeno per molti pattern comuni.
I Tensor Core sono hardware specializzati all'interno delle GPU NVIDIA che accelerano le operazioni di moltiplicazione-accumulo di matrici. Sono fondamentali per l'addestramento e l'inferenza dell'AI. Ma ottenere prestazioni di picco da essi richiedeva spesso una complessa ottimizzazione manuale. L'astrazione a tile di CUDA 13.3 tiling automaticamente le operazioni sulle matrici in modo che colpiscano più spesso i Tensor Core. Gli sviluppatori scrivono codice più semplice e ottengono comunque un buon throughput.
Lo sviluppo dei kernel diventa più semplice
Uno dei maggiori punti critici nella programmazione GPU è la gestione di thread, memoria condivisa e sincronizzazione. Il nuovo modello basato su tile astrae questi dettagli. Invece di scrivere un kernel che genera migliaia di thread e coordina il loro accesso alla memoria condivisa, un programmatore può esprimere il calcolo come operazioni su tile. Il compilatore CUDA mappa quindi questi tile sull'hardware sottostante. Ciò dovrebbe ridurre i bug e accelerare lo sviluppo, specialmente per i team nuovi al calcolo GPU.
Disponibilità
CUDA 13.3 è ora disponibile per il download dal sito sviluppatori di NVIDIA. Supporta tutte le attuali architetture GPU NVIDIA, incluse le linee Hopper e Blackwell. Gli sviluppatori possono iniziare subito a sperimentare con l'API basata su tile.
L'aggiornamento non depreca gli approcci precedenti, ma stabilisce un nuovo percorso predefinito per scrivere codice GPU efficiente. La rapidità con cui la comunità più ampia lo adotterà dipenderà da quanto bene il compilatore mapperà le operazioni sui tile all'hardware reale — e se le prestazioni eguaglieranno quelle dei kernel ottimizzati a mano nei carichi di lavoro critici.


