È stato pubblicato il toolkit ZLUDA che consente di eseguire applicazioni CUDA su GPU AMD

Il progetto ZLUDA ha preparato un'implementazione aperta della tecnologia CUDA per GPU AMD, che consente di eseguire applicazioni CUDA non modificate con prestazioni vicine alle prestazioni delle applicazioni eseguite senza livelli. Il toolkit pubblicato fornisce compatibilità binaria con le applicazioni CUDA esistenti compilate utilizzando il compilatore CUDA per GPU NVIDIA. L'implementazione funziona sullo stack ROCm e sul runtime HIP (Heterogeneous-computing Interface for Portability) sviluppato da AMD. Il codice del progetto è scritto in Rust ed è distribuito sotto le licenze MIT e Apache 2.0. Supporta il lavoro su Linux e Windows.

Il livello per l'organizzazione del lavoro CUDA sui sistemi con GPU AMD è stato sviluppato negli ultimi due anni, ma il progetto ha una storia più lunga ed è stato originariamente creato per garantire il lavoro di CUDA sulle GPU Intel. Il cambiamento nella politica di supporto della GPU si spiega con il fatto che inizialmente lo sviluppatore ZLUDA era un dipendente Intel, ma nel 2021 questa azienda ha ritenuto che fornire la possibilità di eseguire applicazioni CUDA su GPU Intel non fosse di alcun interesse commerciale e non ha accelerato lo sviluppo dell’iniziativa.

All'inizio del 2022, lo sviluppatore ha lasciato Intel ed è stato incaricato da AMD di sviluppare un livello per la compatibilità CUDA. Durante lo sviluppo, AMD ha chiesto di non pubblicizzare l'interesse di AMD per il progetto ZLUDA e di non impegnarsi nel repository pubblico ZLUDA. Due anni dopo, AMD ha deciso che l'esecuzione delle applicazioni CUDA sulle GPU AMD non era di interesse per gli affari, il che, secondo i termini del contratto, ha permesso allo sviluppatore di scoprire il suo lavoro. Dato che i produttori di GPU hanno smesso di finanziare il progetto, il suo destino dipende ora dall'interesse della comunità e dalla ricezione di proposte di cooperazione da parte di altre società. Senza supporto esterno, il progetto potrà svilupparsi solo in direzioni di interesse personale per l'autore, come DLSS (Deep Learning Super Sampling).

Nella sua forma attuale, il livello di qualità dell'implementazione è valutato come una versione alpha. Tuttavia, ZLUDA può già essere utilizzato per eseguire molte applicazioni CUDA, tra cui Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM e Arnold. Fornisce un supporto minimo per le primitive e le librerie cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL e NVML.

Il primo avvio delle applicazioni CUDA che eseguono ZLUDA avviene con notevoli ritardi dovuti al fatto che ZLUDA compila il codice GPU. Non vi è alcun ritardo nelle esecuzioni successive, poiché il codice compilato viene archiviato nella cache. Quando si esegue codice compilato, le prestazioni sono vicine a quelle native. Quando si esegue Geekbench su una GPU AMD Radeon 6800 XT, la versione ZLUDA della suite di benchmark CUDA ha funzionato notevolmente meglio della versione OpenCL.

È stato pubblicato il toolkit ZLUDA che consente di eseguire applicazioni CUDA su GPU AMD

Il supporto per l'API CUDA Driver ufficiale e la parte di reverse engineering dell'API CUDA non documentata è implementato in ZLUDA sostituendo le chiamate di funzione con funzioni simili fornite nel runtime HIP, che è simile in molti modi a CUDA. Ad esempio, la funzione cuDeviceGetAttribute() viene sostituita da hipDeviceGetAttribute(). La compatibilità con le librerie NVIDIA come NVML, cuBLAS e cuSPARSE è assicurata in modo simile: per tali librerie, ZLUDA fornisce librerie di traduzione con lo stesso nome e lo stesso set di funzioni, costruite come componenti aggiuntivi su librerie AMD simili.

Il codice dell'applicazione GPU compilato nella rappresentazione PTX (Parallel Thread Execution) viene prima tradotto da uno speciale compilatore nella rappresentazione intermedia IR LLVM, sulla base della quale viene generato il codice binario per le GPU AMD.

È stato pubblicato il toolkit ZLUDA che consente di eseguire applicazioni CUDA su GPU AMD


Fonte: opennet.ru

Aggiungi un commento