Acronimo di Compute Unified Device Architecture, CUDA è una tecnologia sviluppata da NVidia che consente di utilizzare le sue GPU per scopi di elaborazione di carattere generale, che vanno quindi ben oltre il tradizionale rendering grafico. CUDA apre la porte per l'utilizzo delle GPU NVidia al fine di gestire operazioni di calcolo ad alte prestazioni.
La tecnologia è infatti spesso utilizzata in ambiti applicativi come la simulazione scientifica, l'analisi dei dati, l'elaborazione di immagini, la grafica 3D e l'intelligenza artificiale: si tratta di campi in cui il calcolo parallelo può portare a significativi miglioramenti delle prestazioni. Le GPU contengono centinaia o migliaia di core di elaborazione, consentendo di gestire simultaneamente molte operazioni in contemporanea.
Fino ad oggi, nonostante lo scetticismo di Pat Gelsinger, le schede NVidia di più elevato profilo hanno rivestito un ruolo di leader del settore. D'altra parte la combinazione della tecnologia CUDA con l'hardware NVidia si è mostrata estremamente efficace, tanto che molteplici programmi ne fanno ampio uso.
Con l'ingresso di GPU concorrenti disponibili a prezzi più competitivi, sempre più sviluppatori sono inclini a portare le loro applicazioni CUDA sulle piattaforme rivali di NVidia. I modi per farlo sono essenzialmente due: ricompilare il codice o usare un translation layer.
Cos'è un translation layer e perché NVidia non ne permette l'utilizzo con CUDA
Un translation layer o "strato di traduzione" è un componente software che si colloca tra due sistemi o componenti diversi, fungendo da intermediario. L'obiettivo è quello di abilitare le comunicazioni tra entità originariamente incompatibili e favorirne l'interoperabilità.
NVidia ha ufficialmente modificato le condizioni di licenza per l'utilizzo della tecnologia CUDA impedendone l'adozione su piattaforme e hardware diversi dai suoi. Realizzato da Andrzej Janik, ingegnoso sviluppatore che ha "militato" prima nelle fila di Intel per poi passare nel team di AMD, ZLUDA è di fatto un'alternativa open source a CUDA che agisce come un translation layer.
Il concetto è appunto quello di sfruttare la potenza di calcolo delle GPU di altri produttori, come AMD o Intel, per eseguire applicazioni CUDA.
Con l'intervento sulle clausole contenute nei termini di licenza della tecnologia CUDA, l'azienda guidata da Jensen Huang vieta specificamente l'uso di translation layer per eseguire applicazioni CUDA su hardware non-NVidia. Una mossa interpretabile come il tentativo di preservare l'egemonia di NVidia nel settore dell'accelerazione computazionale.
La società con sede principale a Santa Clara (California) non ce l'ha solo con ZLUDA ma anche, almeno così sembra, con diverse realtà cinesi – tra cui un'impresa direttamente finanziata dal governo di Pechino – che hanno platealmente ammesso di usare codice CUDA su GPU non-NVidia.
L'unica alternativa al translation layer ammessa da NVidia
Ricompilare i programmi CUDA esistenti rimane invece, ovviamente, del tutto lecito. Per semplificare queste attività, sia AMD che Intel forniscono strumenti per portare le applicazioni sviluppata in CUDA sulle loro piattaforme ROCm e OpenAPI.
Man mano che AMD, Intel, Tenstorrent e altre aziende sviluppano hardware più performante, sempre più sviluppatori di software saranno inclini a progettare per queste piattaforme e la leadership fino a ieri indiscussa e indiscutibile di NVidia potrebbe iniziare a vacillare.
Per questo NVidia, prova a porre in campo le sue contromisure e a difendere lo status quo. Inutile dire, però, che i tentativi di chiusura, l'erigere una barricata intorno a CUDA, potrebbero essere atteggiamenti malvisti dagli enti che si occupano di concorrenza.
L'immagine in apertura è tratta dal sito ufficiale NVidia.