OpenCL 2.0 e OpenGL 4.4 per spremere processori e GPU

Il Khronos Group lavora alacremente sulle nuove specifiche OpenCL 2.0 e OpenGL 4.4. Ecco alcune delle novità introdotte.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Il Khronos Group ha ratificato le specifiche provvisorie dell'OpenCL 2.0 e quelle definitive dell'OpenGL 4.4. Nel primo caso abbiamo a che fare con lo standard aperto e libero da royalty pensato per la semplificazione della programmazione parallela su più piattaforme, mentre nel secondo della libreria grafica che si scontra con le Direct3D di Microsoft. La pubblicazione in via provvisoria dell'OpenCL 2.0 dà agli sviluppatori e alle aziende la possibilità di esprimere un feedback prima del completamente della specifica. Il Khronos Group ha concesso sei mesi di tempo.

Tra le novità di questa versione troviamo la memoria virtuale condivisa grazie a cui i kernel host e del dispositivo accedono direttamente a strutture complesse con alberi e liste collegate. Questo permette di eliminare il trasferimento di dati tra l'host e i dispositivi, rendendo la programmazione più flessibile.

Un'altra innovazione si chiama "parallelismo dinamico" e permette ai kernel dei dispositivi di accodare kernel allo stesso dispositivo senza alcuna interazione host. Dietro a questa spiegazione tecnica si cela un beneficio evidente, che è quello di evitare la necessità di trasferire dati e controllo sull'esecuzione tra il dispositivo e l'host.

La funzione Generic Address Space consente di scrivere funzioni senza specificare il nome di un address space, inoltre troviamo un migliorato supporto alle immagini, incluse quelle sRGB. L'estensione "Android Installable Client Driver" dà la possibilità a implementazioni OpenCL di essere scoperte e caricate come shared object su sistemi Android. Altri dettagli si possono trovare sul sito del consorzio.

Per quanto concerne le specifiche OpenGL 4.4 (che saranno supportate dai prodotti di AMD e Nvidia) ci ritroviamo a che fare con dei passi avanti che però non pregiudicano la retrocompatibilità. La nuova funzionalità Buffer Placement Control migliora la flessibilità della memoria e l'efficienza, tramite un controllo esplicito sulla posizione dei buffer nella grafica e nella memoria di sistema, insieme al controllo del comportamento della cache. A tal proposito la CPU potrà mappare un buffer per un uso diretto da parte della GPU.

Le Efficient Asynchronous Queries fa sì che i buffer objects possano diventare il target diretto di una query per evitare che la CPU impieghi troppo a restituire il risultato e si verifichi uno stallo nella pipeline grafica. Le novità però sono molteplici, e per citarne l'ultima segnaliamo un porting semplificato delle applicazioni Direct3D. Maggiori dettagli sulle nuove librerie OpenGL 4.4 potete trovarli a questo indirizzo.