Ho giocato con l'implementazione ATI OpenCL nella beta 2.0 Stream. L'OpenCL nella versione beta attuale utilizza solo la CPU per ora, la versione successiva supporterà i kernel GPU. Ho scaricato Stream perché ho una GPU ATI nella mia macchina da lavoro.Esecuzione di OpenCL su hardware da fornitori misti
Scrivo software che trarrebbe enorme vantaggio dai guadagni utilizzando la GPU. Tuttavia questo software funziona su macchine clienti, non ho il lusso (come molti ambienti di calcolo scientifico hanno) per scegliere l'hardware esatto da sviluppare e ottimizzare per quello. Quindi la mia domanda è, se distribuisco l'implementazione ATI OpenCL con la mia applicazione, significa che non sarà mai in grado di usarlo, ad es. Schede video NVidia? E se utilizzo NVidia OpenCL SDK, non funzionerà mai in modo ottimale con i chip AMD (considerando il collegamento ATI/AMD)?
In altre parole, chi è il responsabile della fornitura dell'implementazione di OpenCL? Gli utenti saranno in grado, ad es. installare un "driver" OpenCL per la scheda video NVidia, insieme a un "driver" che offre loro prestazioni ottimali sulla CPU AMD?
Per inciso, ci sono forum di supporto validi/attivi per OpenCL oltre alle bacheche di Khronos, o è il posto dove andare? Ho visto che ATI ha una scheda e presumibilmente NVidia ne ha una propria, dove si trova la comunità di utenti/sviluppatori di OpenCL? Si è già consolidato in un unico posto?
La differenza con OpenGL è che per OpenGL, il fornitore della GPU scrive i driver - periodo. OpenGL funziona solo sulla scheda video. Ma per OpenCL, idealmente, il fornitore di CPU scrive il driver per i kernel della CPU e il produttore della GPU scrive i driver per i kernel GPU, in quanto i kernel OpenCL possono essere eseguiti su thread CPU o thread GPU. È così che dovrebbe funzionare in futuro? – Roel
OpenGL supporta sempre un percorso software per quando l'hardware non supporta determinate operazioni. Pertanto, i produttori di sistemi operativi devono fornire un'implementazione software OpenGL (l'OpenGL di MS Windows è bloccato su OpenGL 1.1). Probabilmente succederà qualcosa di simile con OpenCL. In ogni caso, AMD/ATI pubblicherà probabilmente una versione di OpenCL che supporterà sia le loro CPU che le loro GPU. Allo stesso modo, Intel rilascerà probabilmente un OpenCL che supporta le normali CPU e le GPU Larrabee. Non ne so abbastanza sull'implementazione OpenCL di Apple per sapere cosa supporta. – Eric
Ok, quindi posso concludere che se un cliente ha una scheda video ATI e una CPU Intel, non avrà prestazioni ottimali? A seconda di quale driver OpenCL/implementazione hanno installato, eseguiranno kernel nella CPU o nella GPU? Voglio dire, so che probabilmente * eseguirà * sulla macchina, non è una mia preoccupazione; la mia preoccupazione è che eseguirà * fast * (quindi utilizzando tutto l'hardware sulla macchina, tutti i core della CPU e tutti i core della GPU). – Roel