CUDA è un acronimo che sta per “Compute Unified Device Architecture“. Si tratta di una piattaforma di calcolo parallelo sviluppata da NVidia per le sue unità di elaborazione grafica (GPU). Fornisce un modello di programmazione e un set di estensioni per il linguaggio di programmazione C, consentendo agli sviluppatori di scrivere codice che può essere eseguito su GPU NVidia al fine di svolgere compiti ad elevata intensità computazionale.
Grazie a CUDA, gli sviluppatori possono sfruttare la potenza di calcolo delle GPU moderne in modo tale da eseguire operazioni in modo efficiente. L’approccio che guarda spiccatamente alla parallelizzazione si rivela molto utile nel caso del machine learning, della simulazione scientifica, del rendering grafico e di altri carichi di lavoro impegnativi.
La soluzione proposta da NVidia poggia anche su un ambiente di sviluppo che include un compilatore, librerie ottimizzate per la GPU e strumenti utile per ottimizzare le prestazioni del codice. Per questi motivi, CUDA è diventato un vero e proprio punto di riferimento nell’industria e nella stessa comunità scientifica per il calcolo parallelo e accelerare una vasta gamma di applicazioni.
A dicembre 2023, il CEO di Intel Pat Gelsinger ha sparato a zero su NVidia sostenendo che CUDA non è sinonimo di intelligenza artificiale e ribadendo i progressi compiuti dalla sua azienda nel settore dell’IA.
AMD e Intel hanno provato a gettare un ponte verso NVidia CUDA con ZLUDA, che adesso diventa open source
ZLUDA è un progetto open source nato per consentire il supporto di CUDA sulle schede grafiche AMD Radeon. In realtà, l’idea fu partorita inizialmente in casa Intel: l’idea era quella di abilitare il supporto CUDA sulle grafiche dell’azienda di Santa Clara, ma il progetto è stato interrotto per motivi sconosciuti.
Successivamente, Andrzej Janik, lo sviluppatore di ZLUDA (che ha lavorato per Intel), è stato assunto da AMD nel 2022. Il suo compito era quello di adattare ZLUDA per l’utilizzo sulle GPU AMD con la piattaforma HIP/ROCm.
HIP (Heterogeneous-Compute Interface for Portability) è una piattaforma di programmazione che consente agli sviluppatori di scrivere codice portabile per l’elaborazione parallela su unità di elaborazione grafica (GPU) e altri acceleratori di calcolo.
ROCm (Radeon Open Compute) è una piattaforma software aperta di AMD progettata per supportare l’elaborazione eterogenea su diverse architetture di accelerazione, inclusi i processori grafici AMD e altre unità di elaborazione. ROCm fornisce il supporto per diverse API di programmazione, tra cui HIP, OpenCL e ROCm Language Extensions (RocL).
Gli obiettivi di ZLUDA, soluzione interoperabile con NVidia CUDA
L’obiettivo di ZLUDA è quello di fornire un’implementazione CUDA che possa essere utilizzata direttamente su ROCm senza la necessità di apportare modifiche al codice sorgente. Questo significa che molti software CUDA possono essere eseguiti su HIP/ROCm senza alcuna variazione.
Janik ha dedicato gli ultimi due anni a portare ZLUDA sulle GPU Radeon, ottenendo risultati positivi. Certo, permangono alcune limitazioni e non tutte le funzionalità originariamente implementate da NVidia sono utilizzabili sul versante AMD. Ma l’approccio funziona e, considerato che il sistema è frutto dell’impegno di un singolo sviluppatore, l’implementazione è sorprendentemente efficace.
Anche AMD ha scelto di non continuare, proprio quest’anno, a sovvenzionare il progetto ZLUDA ma le clausole contrattuali hanno permesso a Janik di pubblicarlo e distribuirlo come prodotto open source. Segnando di fatto un nuovo inizio per l’intera comunità.
Dual-licensed (Apache 2.0 e MIT), il codice sorgente di ZLUDA fa uso del linguaggio di programmazione Rust. Durante lo sviluppo, ZLUDA è stato principalmente testato su hardware RDNA2 (serie Radeon RX 6000), ma i test su hardware RDNA3 (Radeon RX 7000) hanno comunque fatto emergere risultati positivi, nonostante non fosse il target principale.
Il futuro di ZLUDA è incerto ma la comunità open source potrebbe ricoprire un ruolo essenziale
La decisione di AMD di interrompere il lavoro su ZLUDA, finanziato dall’azienda di Lisa Su, potrebbe essere comprensibile dal punto di vista aziendale, considerando il miglioramento generale del supporto software nativo per ROCm/HIP nel corso degli anni. Tuttavia, considerando l’ubiquità di NVIDIA CUDA, ci sono tanti software che potrebbero beneficiare dell’approccio di ZLUDA, offrendo agli utenti possessori di GPU Radeon il vantaggio di portare le applicazioni progettate per l’architettura NVidia direttamente su queste schede.
ZLUDA condivide alcune delle stesse problematiche di ROCm. Nonostante ciò, tuttavia, ZLUDA rappresenta una soluzione sorprendente per coloro che desiderano eseguire software CUDA su hardware AMD Radeon. L’apertura del codice sorgente offre ampie possibilità di crescita grazie al contributo della comunità.
L’auspicio di Janik e di tanti sviluppatori è che il progetto possa ricevere il sostegno necessario per continuare ad evolvere offrendo un’alternativa attraente per il supporto dei “binari” NVidia CUDA su GPU AMD.