Il consorzio Khronos Group ha rivelato le specifiche delle nuove librerie OpenCL 3.0 per avere i feedback da parte degli sviluppatori. La parola d’ordine sembrerà essere flessibilità e compatibilità per permettere una maggiore integrazione con altre API che sfruttano ampiamente le GPU e processori altamente parallelizzati
Le specifiche delle nuove OpenCL 3.0 sono state rese disponibili da poco agli sviluppatori. Queste librerie sono state pensate per sfruttare al meglio processori altamente parallelizzati come le GPU, in particolare per il GPGPU ovvero per sfruttare le schede grafiche per fare calcoli e accelerare operazioni particolarmente onerose. Khronos Group, un consorzio aperto di aziende che operano nel settore high tech tra cui Apple, AMD, NVIDIA, Intel e molte altre e il cui scopo è quello di sviluppare API standard, ha pubblicato le specifiche provvisorie di OpenCL 3.0. OpenCL 3.0 permetterà ai produttori di integrare nuove funzionalità di basso livello e aumenterà in modo significativo la flessibilità di implementazione permettendo agli sviluppatori di concentrarsi sulla funzionalità relativa ai loro mercati target. OpenCL 3.0 integra inoltre la funzionalità dei sottogruppi nella specifica di base, viene fornito con una nuova specifica di linguaggio OpenCL C 3.0, utilizza un nuovo formato di specifica unificato e introduce estensioni per copie di dati asincrone per poter sfruttare nuove classi di processori integrati. Le specifiche provvisorie di OpenCL 3.0 consentono alla comunità di sviluppatori di fornire feedback su GitHub prima che i test di conformità siano finalizzati.
Per soddisfare la crescente varietà di dispositivi OpenCL presenti sul mercato, OpenCL 3.0 rende facoltative tutte le funzionalità introdotte dopo la versione 1.2. Tutte le applicazioni OpenCL 1.2 continueranno a funzionare invariate su qualsiasi dispositivo OpenCL 3.0. Tutte le funzionalità di OpenCL 2.X sono definite coerentemente nella nuova specifica unificata e le attuali implementazioni di OpenCL 2.X che eseguono l’aggiornamento a OpenCL 3.0 possono continuare a essere distribuite con le loro funzionalità esistenti con piena compatibilità con le versioni precedenti. È possibile eseguire una query su tutte le funzionalità dell’API OpenCL 2.X e OpenCL C 3.0 aggiunge le macro necessarie per introdurre le funzionalità facoltative. Neil Trevett, vicepresidente presso NVIDIA, presidente del gruppo Khronos e presidente del gruppo di lavoro OpenCL, dice:
OpenCL è lo standard aperto più diffuso, multi-vendor, per la programmazione parallela eterogenea di basso livello, ampiamente utilizzato da applicazioni, librerie, motori e compilatori che devono raggiungere la più ampia gamma di processori diversi. OpenCL 2.X offre funzionalità significative, ma OpenCL 1.2 si è dimostrato la base di riferimento di tutti i fornitori e mercati. OpenCL 3.0 integra le opzioni strettamente organizzate nella specifica monolitica 2.2, aumentando la flessibilità di implementazione che consentirà a OpenCL di alzare il livello delle funzionalità pervasivamente disponibili nelle future specifiche di base.
Per lo sviluppo del kernel C ++, il gruppo di lavoro OpenCL è passato dal linguaggio del kernel C ++ originale OpenCL, definito in OpenCL 2.2, alla comunità “C ++ per OpenCL“, progetto open source supportato da Clang . C ++ per OpenCL fornisce compatibilità con OpenCL C, consente agli sviluppatori di utilizzare la maggior parte delle funzionalità di C ++ 17 nei kernel OpenCL ed è compatibile con qualsiasi implementazione OpenCL 2.X o OpenCL 3.0 che supporti SPIR-V. Le estensioni Extended Asynchronous Copy e Asynchronous Work Group Copy Fence rilasciate insieme a OpenCL 3.0 consentono transazioni DMA efficienti e ordinate come first class citizens in OpenCL, ideali per dispositivi basati su Memory Scratch Pad, che richiedono un controllo accurato sull’allocazione del buffer. Queste estensioni sono le prime importanti novità in OpenCL per migliorare il supporto per i processori integrati.
OpenCL 3.0: perché sono importanti più che mai?
Oltre alle specifiche che magari sono risultate un po’ inintelligibili a chi non si intende di librerie e API di questo genere, le OpenCL 3.0 rappresentano una ghiotta opportunità per l’industria tecnologica in molti settori avanzati come l’IA o la guida autonoma. Andrew Richards, fondatore e CEO di Codeplay Software, afferma:
Negli ultimi anni c’è stata un’impressionante adozione di OpenCL per guidare sistemi di elaborazione eterogenei all’interno di molti segmenti di mercato. Questo aggiornamento di OpenCL 3.0 offre importanti vantaggi in termini di flessibilità che consentiranno a molti settori in evoluzione, dall’intelligenza artificiale e HPC all’automotive, di concentrarsi sui loro requisiti specifici e abbracciare standard aperti. Codeplay è entusiasta di consentire ai fornitori di hardware di supportare OpenCL 3.0 e di sfruttare la flessibilità offerta dal suo ecosistema di prodotti software.
Mark Butler, vice presidente dell’ingegneria del software, Imagination Technologies, invece dice:
Concentrandosi sulla flessibilità di implementazione, vediamo OpenCL 3.0 come un eccellente passo avanti nel fornire funzionalità essenziali per gli sviluppatori, con la possibilità di aggiungere funzionalità nel tempo. Questo è davvero un passo avanti per l’ecosistema OpenCL, che consente agli sviluppatori di scrivere applicazioni portatili che dipendono da funzionalità ampiamente accettate. Attualmente le GPU di spedizione basate sull’architettura Rogue di PowerVR godranno di un significativo potenziamento delle funzionalità, tra cui SVM, spazio indirizzi generico e funzioni del gruppo di lavoro. Al rilascio finale delle specifiche, Imagination distribuirà un’implementazione conforme di OpenCL 3.0 con supporto che si estende su una vasta gamma di GPU PowerVR, inclusa la nostra ultima offerta con la Serie A IMG.
E anche Intel con Jeff McVeigh, vicepresidente di Intel Architecture, Graphics and Software, dichiara:
Intel supporta fortemente gli standard di architettura incrociata che sono guidati attraverso l’ecosistema di elaborazione come in OpenCL 3.0 e SYCL. I modelli di programmazione unificata basati su standard consentiranno l’efficienza e libereranno la creatività per i nostri sviluppatori con l’imminente rilascio della nostra nuova architettura GPU Xe.
E anche dal mondo dei dispositivi mobili qualcosa si muove, parla Balaji Calidas, direttore dell’ingegneria di Qualcomm:
OpenCL 3.0 è un importante passo avanti nel tentativo di sbloccare maggiori prestazioni e innovazione attraverso una gamma più ampia di piattaforme e applicazioni informatiche. Il modello di estensione flessibile aiuterà i nostri clienti e partner software a sfruttare appieno l’enorme potenziale disponibile nei nostri processori di applicazioni esistenti e futuri. Siamo lieti di aver avuto l’opportunità di contribuire a questa specifica e non vediamo l’ora di supportare il prodotto finale.
Insomma le nuove OpenCL 3.0 puntano ad essere integrate in tantissime piattaforme hardware eterogenee per far fronte alle sfide del futuro che sono sempre più avide di potenza computazionale. Dalla sezione software è tutto, continuate a seguirci!
Lascia un commento