OpenCL
La seconda, importante, novità tecnologica implementata in Mac OS X
10.6 "Snow Leopard" è il supporto allo standard OpenCL, che
consente di mettere a disposizione del sistema operativo e degli applicativi
la potenza computazionale delle moderne GPU per calcoli ed impieghi che esulano
dalla normale computazione grafica.
Di Open CL abbiamo avuto modo di parlare più volte sulle pagine di Hardware
Upgrade. Si tratta di uno standard aperto che comprende un linguaggio di programmazione,
le relative API, e tutti gli elementi runtime necessari a supporto della programmazione.
La base di partenza del linguaggio di programmazione dello standard OpenCL è
lo standard C99, nato nel 1999 da una revisione e da una serie di operazioni
di aggiornamento al fine di mantenere il linguaggio C di pari passo con l'evoluzione
hardware.

La qualità di immagine, il realismo grafico, le elevate risoluzioni
sono possibili grazie alla capacità delle moderne GPU di calcolare parecchi
milioni di pixel al secondo, ciascuno dei quali è, nei fatti, il risultato
di una serie di operazioni matematiche più o meno complesse. Pertanto,
da un punto di vista strettamente computazionale, le GPU sono in grado di effettuare
operazioni al livello di supercomputer. Non solo: le GPU attuali sono in grado
di processare più pixel simultaneamente poiché, a livello architetturale,
sono processori altamente parallelizzati. E' sulla base di queste considerazioni
che nasce l'idea di impiegare i processori grafici come processori general-purpose.
Ma come si è passati da una GPU esclusivamente dedicata al calcolo grafico
ad una GPU capace di affrontare anche operazioni generiche? Il merito, forse
inconsapevole, di questa evoluzione va all'introduzione dei graphic shader,
ovvero una serie di istruzioni basilari che permettessero di riprogrammare gli
elementi atti alla processazione dei pixel all'interno della GPU, più
comunemente denominati pipeline. I graphic shader sono infatti nati per ovviare
ad una limitazione delle precedenti generazioni di GPU, caratterizzate da pipeline
non programmabili e, pertanto, in grado di computare solo attingendo a questo
set fisso di istruzioni disponibili a livello hardware. Con il passare del tempo
i graphic shader si sono via via evoluti, passando dall'essere semplici programmi
scritti in linguaggio assembly, a programmi di più alto livello e di
maggior complessità. Proprio per gestire la sempre più crescente
complessità degli shader grafici, i progettisti di GPU hanno ritenuto
indispensabile modificare l'architettura delle GPU, permettendo alle pipeline
di supportare operazioni matematiche e logiche più generiche.

AMD e NVIDIA, consci delle potenzialità delle nuove architetture grafiche,
hanno iniziato a sviluppare una serie di linguaggi di programmazione proprietari
in grado di semplificare l'approccio alla programmazione GPGPU (General Purpose
GPU). Apple, di contro, ha intuito che uno standard aperto potesse meglio portare
sul mercato le funzionalità delle nuove schede video e collaborando con
Intel e le stesse AMD e NVIDIA ha sviluppato uno standard da proporre a Khronos
Group. Nel giro pochi mesi OpenCL è divenuto ufficialmente uno
standard aperto e, come tale, libero da canoni di concessione e multipiattaforma
destinato in modo particolare alla programmazione parallela delle GPU di ultima
e futura generazione.
Quali sono, in ultima analisi, le ricadute pratiche del supporto ad una tecnologia
GPGPU? Con la possibilità di eseguire un consistente volume di calcoli
in parallelo, lo sfruttamento delle tecniche di programmazione messe a disposizione
da OpenCL consente di incrementare significativamente la velocità e la
risposta di una vasta gamma di applicazioni, a partire dai giochi sino a software
di calcolo e analisi scientifica, passando per applicativi di stampo entertainment.
Tra i campi di applicazione si possono citare gli applicativi per il riconoscimento
del volto in realtime, soluzioni per la riduzione del rumore video, e la codifica/decodifica
accelerata di materiale multimediale.
E' molto interessante notare come Apple abbia deciso di propendere per uno
standard aperto quale Open CL per quanto riguarda la possibilità di fruire
delle potenzialità del GPGPU: i sistemi Mac sono infatti equipaggiati
con soluzioni grafiche di NVIDIA, che ha sviluppato il proprio standard di programmazione
CUDA. Ancora una volta è evidente come Apple, pur appoggiandosi ad altre
grandi realtà del settore, preferisca evitare di legarsi a doppio filo
a qualsiasi di queste, perseguendo la proverbiale politica delle "mani
libere". |
Spero sia evidende che 10.6 non è un service pack ma un sistema operativo tutto nuovo