AMD GPUOpen: il rivale di NVIDIA GameWorks

GPUOpen è una piattaforma di sviluppo software speculare a GameWorks di NVIDIA, creata però su un modello di sviluppo open source, che renderà la vita più semplice agli sviluppatori nel prossimo futuro.

speciale AMD GPUOpen: il rivale di NVIDIA GameWorks
Articolo a cura di

AMD GPUOpen è la risposta dell'azienda di Sunnyvale a GameWorks di NVIDIA. Si tratta di una piattaforma totalmente open source che raccoglie strumenti, effetti grafici, librerie ed SDK che vengono forniti agli sviluppatori per ottimizzare i propri prodotti. GPUOpen è anche la testimonianza dell'impegno di AMD nello spremere al massimo le proprie schede grafiche, sia nei videogame che nelle applicazioni professionali. Sul fronte videoludico, l'ecosistema permette agli sviluppatori di creare delle scene più complesse ed appaganti da vedere, ma anche più ricche dal punto di vista puramente tecnico, così che l'utente possa immergersi nel proprio mondo preferito meglio di quanto faceva prima. Il tutto è merito dei potenti strumenti che proprio GPUOpen include, che facilitano il lavoro di parallelizzazione, di fondamentale importanza nelle moderne schede grafiche. La piattaforma permette di avere un maggiore controllo sulla GPU, senza che le aziende vadano incontro ad alcun esborso economico. Advanced Micro Devices è sempre stata una ferma sostenitrice dell'open source, basta vedere quanto accaduto con il FreeSync, incoraggiando la collaborazione e la condivisione di idee, che rendono GPUOpen sempre più potente e più vicino alle necessità della comunità videogiocatori e di sviluppatori.

GPUOpen per il gaming

La parte di GPUOpen che più interessa gli utenti è quella legata al gaming. Sia AMD che NVIDIA possiedono la loro suite di sviluppo software, che permette di avere accesso a determinate tecnologie. Gli effetti, i tool e le librerie possono essere prese e modificate da chi ne ha bisogno, sia per migliorarle e sia per essere adattate alle proprie necessità. L'azienda fornisce anche della documentazione e consigli per utilizzare al meglio gli strumenti messi a disposizione, così che i developer possano sfruttare l'architettura AMD e l'HSA (Heterogeneous System Architecture). La società ha sfruttato la MIT License per GPUOpen, e questo vuol dire che non ci sono più i limiti del passato: ogni sviluppatore può di fatto fare ciò che vuole con il codice.
La politica di AMD va in netta controtendenza con quella della rivale, che ha un ambiente proprietario e quindi chiuso. La linea seguita da NVIDIA spesso provoca qualche problema alle GPU non GTX, ma la maggior parte delle volte il suo SDK riesce a fornire qualità extra al prodotto finale. Secondo AMD gli sviluppatori preferiscono però un approccio open source, che permette loro di superare alcuni dei problemi tipici degli SDK, come il sempre difficoltoso porting di un titolo console all'ambito PC. In teoria, se si condividono le conoscenze si può fare un lavoro migliore.
Un'altra delle problematiche a cui i developer devono andare incontro è il limitato accesso alla scheda grafica, che NVIDIA ha risolto per esempio con NVAPI. GPUOpen può essere visto come la prosecuzione del lavoro cominciato con Mantle, che purtroppo non ha avuto il successo sperato dalla casa di Sunnyvale. Gli effetti che l'azienda metterà a disposizione includono TressFX 3.0, GeometryFX, AOFX e ShadowFX, o strumenti come CodeXL.

Boltzmann Initiative

AMD ha intenzione di offrire il supporto a qualsivoglia tipologia di calcolo scientifico, con lo stesso approccio utilizzato per l'ambito gaming, e cioè quello libero e gratuito. Alla fine dello scorso anno l'azienda presentò la Boltzmann Initiative, che raggruppava un compilatore heterogeneous computing ed un driver a 64 bit per Linux (entrambi indirizzati al settore dell'HPC, High Performance Computing), più un altro tool che consente di trasformare del codice CUDA nel più comune linguaggio C++.Per quanto concerne il nuovo compilatore, AMD è stata cosciente del fatto che programmare direttamente utilizzando OpenCL è un'impresa ardua e ha così ha creato Heterogeneous Compute Compiler, un compilatore che punta proprio su C++ e quindi sulla programmazione ad alto livello.
AMD ha poi affermato che in passato le ottimizzazioni del driver per l'ambito HPC non furono effettuate in modo funzionale, e che adesso le cose sono diverse. La società ha infatti riprogettato il driver stesso, rendendolo più adatto a scenari in cui la latenza è un fattore da tenere costantemente sotto controllo. Esso abilita anche l'HSA su schede professionali - della serie FirePro, per intenderci - per ottenere un vantaggio sulla concorrenza.
Infine, lo strumento che consente di convertire codice CUDA in C++ mira chiaramente a portare sviluppatori dell'ecosistema concorrente sotto l'ala di AMD, così che il codice possa essere sfruttato anche su GPU della famiglia Radeon. Lo strumento si chiama HIP (Heterogeneous-compute Interface for Portabilty) e non fa uso di alcun componente o libreria di NVIDIA per effettuare la traduzione.

L'impegno verso Linux

Il supporto che l'azienda di Sunnyvale ha garantito a Linux non è mai stato dei migliori, con i driver che alcune volte comportavano problematiche più o meno gravi; spesso gli utenti hanno lamentato performance nemmeno accettabili quando si trattava di gaming, soprattutto se raffrontate a quelle su Microsoft Windows. NVIDIA invece non ha mai avuto troppi intoppi, fornendo un supporto driver qualitativamente migliore. GPUOpen mette in mostra la voglia di cambiare aria anche sotto questo punto di vista e di tentare un approccio più serio, mettendo a disposizione degli utenti Linux uno strato software più solido e coerente. Il driver si chiama AMDGPU ed è una versione totalmente rinnovata rispetto al passato. La nuova variante verrà inclusa direttamente nel kernel di Linux, così che AMD possa assicurare la portabilità con le differenti distribuzioni del sistema operativo. Insomma, l'intento è quello di progettare un driver unificato, utilizzabile con tutte le versioni di Linux e con tutte le schede grafiche/APU AMD.
Il driver dedicato ai giocatori e agli utenti professionali sarà composto da una parte aperta ed un'altra chiusa, della quale farà ovviamente parte il codice relativo al core di Radeon Software. L'azienda vuole quindi rendere open source quanto più possibile, mantenendo closed solo lo spicchio che non deve essere modificato. Questa scelta può teoricamente elevare la qualità dei driver Linux nel futuro, rendendoli più facilmente integrabili ed aggiornabili.
Con SteamOS, il gaming su Linux potrebbe assumere una portata più ampia, quindi ha senso offrire dei driver che rendano l'esperienza con le GPU Radeon piacevole anche in questa circostanza. Non si tratta solo dei videogiocatori, poiché Linux è spesso utilizzato negli ambienti in cui il calcolo avviene su larga scala e in ambienti che sfruttano grossi cluster; non avere un driver adeguato per queste circostanze, soprattutto in ottica futura, indirizzerebbe le aziende interessate verso la concorrenza.
La società americana ha fatto sapere che lavorerà duramente per rendere il nuovo hardware pienamente ottimizzato per Linux, man mano che i componenti saranno rilasciati.

AMD Da quanto emerso sembra che AMD voglia costruire una sua identità con i propri ecosistemi, che non si fermano a GPUOpen, ma proseguono con ambienti quali per esempio LiquidVR. La scelta di puntare su progetti Open Source sembra corretta e permette di evitare gli errori del passato,che sul fronte GPU hanno fatto perdere parecchio terreno ad AMD. Il Radeon Technologies Group ha adesso stilato una chiara roadmap con obiettivi limpidi e trasparenti. Per quanto riguarda GPUOpen, AMD ha fatto sapere che è accessibile da un portale ad esso dedicato, e che tutto il codice è stato postato su GitHub. Da qui i developer potranno prenderlo ed eventualmente editarlo, con le modifiche che possono essere viste da tutti gli interessati. Si tratta della stessa via che più o meno impiega NVIDIA, e che è stata di successo nello stabilire un rapporto più veloce e pulito fra la società e gli stessi sviluppatori. Il voler ridurre al minimo le differenze fra il codice PC e quello console è un obiettivo ambizioso da parte di AMD. NVIDIA però non resterà a guardare e farà di tutto per tenere alto il nome di GameWorks. Advanced Micro Devices sta tirando fuori gli artigli, con il desiderio di rendere lo sviluppo cross-platform più rapido, di semplificare e migliorare gli strumenti per l’HPC e di avere per Linux un occhio di riguardo in più rispetto agli anni scorsi. GPUOpen ne è solo l’ennesima testimonianza: probabilmente tutto ciò non colmerà il gap con la concorrenza in qualche mese, ma senza alcun dubbio costituisce un ottimo punto d’inizio.