Software

OpenCL 3.0: Khronos Group pubblica le specifiche provvisorie

Il consorzio Khronos Group ha recentemente pubblicato le specifiche provvisorie di OpenCL 3.0. Le nuove API saranno necessarie per adeguare lo standard OpenCL e far sì che le nuove funzionalità richieste dagli sviluppatori possano essere implementate dall’industria e nello stesso tempo che le nuove potenzialità, offerte dai nuovi prodotti hardware, siano efficacemente sfruttate per garantire un’efficiente implementazione a tutto tondo.

Novità per le specifiche nel paradigma OpenCL sono l’integrazione di funzionalità secondarie nella definizione primaria di base, l’adozione di un nuovo linguaggio OpenCL C 3.0, l’utilizzo di un nuovo formato unificato e l’introduzione di un’estensione per copie di dati asincroni. Quest’ultima caratteristica è finalizzata allo scopo di favorire lo sviluppo e diffusione di nuovi dispositivi embedded.

Pubblicando le specifiche provvisorie, Khronos Group offre un’enorme opportunità alla comunità di sviluppatori, sia per poter fornire il loro preziosissimo contributo, per esempio sul portale GitHub, sia per trovarsi già pronti con il nuovo potenziale offerto dagli strumenti di OpenCL 3.0 prima che le specifiche vengano rilasciate definitivamente. C’è da sottolineare comunque che OpenCL 3.0 non andrà a cannibalizzare le versioni precedenti, anzi; sembra infatti che per garantire la compatibilità alla crescente varietà di dispositivi che sfruttano OpenCL, OpenCL 3.0 implementerà di base le funzionalità di OpenCL 1.2 rendendo opzionali le più recenti specifiche, nel senso che tutte le applicazioni OpenCL 1.2 funzioneranno senza alcun cambiamento radicale su dispositivi OpenCL 3.0. Le specifiche OpenCL 2.X saranno inserite nel nuovo formato unificato, permettendo agli attuali dispositivi OpenCL 2.X aggiornati a OpenCL 3.0 di continuare a usufruire delle loro funzionalità con piena retrocompatibilità. Bisognerà attendere le specifiche finali per sapere se basterà un firmware per l’aggiornamento alle nuove API.

Per lo sviluppo del kernel, OpenCL Working Group (la divisione di Khronos responsabile dell’intero progetto) ha deciso anche di cambiare il precedente linguaggio di programmazione C++, definito nelle OpenCL 2.2, virando sul linguaggio open-source “C++ for OpenCL”. Ovviamente “C++ for OpenCL” offre piena compatibilità sia con OpenCL C, permettendo agli sviluppatori di usufruire di molte funzionalità di C++17 nel kernel OpenCL, sia con ogni implementazione di OpenCL 2.X o OpenCL 3.0 che supporti il linguaggio SPIR-V.

Sempre in merito ai dispositivi embedded, sono state integrate delle particolari estensioni per favorirne lo sviluppo e la diffusione, le prime di un continuo e progressivo avanzamento di OpenCL in tal direzione: si tratta di Extended Asynchronous Copy e Asynchronous Work Group Copy Fence. Esse abilitano in OpenCL le efficienti ed ordinate transazioni DMA di prima classe dove è richiesto un maggior controllo accurato per l’allocazione del buffer, come i dispositivi basati su Scratch Pad Memory.

Queste le parole di Neil Trevett, presidente di Khronos Group e membro di OpenCL Working Group, nonché vicepresidente di Nvidia: “OpenCL è lo standard aperto e multi-commerciale più diffuso per la programmazione parallela eterogenea di basso livello, largamente usato da applicazioni, librerie, motori grafici e compilatori che devono usare le più diverse tipologie di processori. Open CL 2.X offre specifiche funzionalità, ma OpenCL 1.2 si è dimostrato la base necessaria per tutti i produttori in tutti i mercati. OpenCL 3.0 integra le funzionalità strettamente organizzate nella specifica monolitica 2.2, aumentandone la flessibilità d’implementazione consentendo a OpenCL di aumentare il numero delle diffuse funzionalità disponibili nelle future specifiche di base.”

Come ogni annuncio di questo tipo, OpenCL Working Group ha aggiornato anche la guida alle risorse OpenCL per aiutare specialisti informatici, sviluppatori e ricercatori di tutti i livelli di abilità a sfruttare efficacemente la potenza di OpenCL, contando sul riscontro positivo e sui suggerimenti dalla comunità attraverso GitHub.

Segnaliamo che i membri di OpenCL Working Group hanno partecipato alla sessione di Khronos alla conferenza digitale di IWOCL/SYCLcon, la principale risorsa digitale per gli specialisti di HPC che lavorano con OpenCL, SYCL, Vulkan e SPIR-V.

Tutta l’industria ha accolto molto positivamente l’iniziativa di Khronos Group. Questa l’opinione di Mark Butler, vicepresidente di Ingegneria Software e Software Grafico PowerVR di Imagination Technologies: “Questo è veramente un passo in avanti per l’ecosistema di OpenCL, che permette gli sviluppatori di poter creare applicazioni portatili compatibili con funzionalità largamente diffuse. Con le specifiche finali, Imagination distribuirà un’implementazione conforme a OpenCL 3.0 supportando una vasta gamma di GPU PowerVR, inclusa la nostra ultima offerta, la serie IMG-A.”

Molto positivo anche Jeff McVeigh, vicepresidente di Architettura, Grafica e Software di Intel: “ I modelli di programmazione unificati basati su standard aumenteranno l’efficienza e lasceranno libertà alla creatività dei nostri sviluppatori in vista dell’arrivo della nostra nuova architettura grafica Xe.”

E ancora, Balaji Calidas, direttore del reparto ingegneria di Qualcomm: “ Il modello di estensioni flessibili aiuterà i nostri clienti e i nostri software-partner a sfruttare appieno l’enorme potenziale disponibile sia nei nostri attuali processori che nelle future declinazioni. Siamo lieti di avere l’opportunità di contribuire a questa specifica e non vediamo l’ora di supportare il prodotto finale.”

Anche gli utenti finali quali piccoli sviluppatori, quindi, apprezzeranno l’unificazione proposta da Khronos Group, potendo contare su un linguaggio universale aperto, senza royalty, multipiattaforma, ideale per calcoli paralleli ed eterogenei. OpenCL infatti aumenta la velocità e la risposta di una vasta gamma di applicazioni in numerosi ambiti inclusi gli strumenti creativi professionali, software medici e scientifici, dispositivi per elaborazioni video e non da ultime la crescita e inferenza di reti neurali.

La memoria RAM è sempre importante: in offerta su Amazon il kit Corsair Vengeance RGB Pro 32GB (2×16GB) DDR4 3333MHz CL16 XMP