Dietro le quinte con Adobe, continua

Test - Le API OpenCL possono rivelarsi uno strumento potente per rendere più veloce l'editing fotografico. Lo standard aperto sostenuto da AMD promette grandi passi avanti.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Dietro le quinte con Adobe, continua

TH: all'interno di Photoshop ci sono limiti su ciò che potete fare con queste API?

RW: possiamo osservare alcuni aspetti e sapere che non sono adatti a OCL e alla GPU in generale. In altri casi è solo dopo qualche sforzo di sviluppo che scopriamo come non sia possibile ottenere un miglioramento velocistico tale da giustificare l'impegno. È noto che la GPU è adeguata per certe operazioni e inadatta per altre. Credo che sia stata AMD a dirci che mentre una GPU può velocizzare diverse centinaia di volte cose per cui è adatta, nella gestione di altre operazioni per cui non è adatta potrebbe essere 10 volte più lenta.

Alcune persone pensano "se la GPU è davvero così rapida, perché non far funzionare tutto sulla GPU?". La GPU è adatta però solo a determinate operazioni, che vanno sempre sviluppate appositamente. Per esempio, abbiamo accelerato il filtro Liquify con OGL, non OCL, e questo ha fatto una differenza significativa. Con pennelli di grandi dimensioni, servono da 1 a 2 FPS per la completa fluidità, reattività e tracciabilità con la penna. Questo tipo di reattività si potrebbe ottenere solo su una GPU. Ci sono voluti un ingegnere e la maggior parte del ciclo di sviluppo della CS6 per sviluppare nuovamente il tutto.

TH: questo ci riporta al perché stavolta avete implementato il supporto OCL per una sola caratteristica. È perché non avete un numero infinito di sviluppatori e fate passare solo un anno tra versioni differenti?

RW: è corretto, e certamente abbiamo un numero ancora più limitato di sviluppatori che conoscono OCL.

TH: I produttori di hardware grafico hanno giocato un ruolo nella vostra adozione di OpenCL? Istruzioni, strumenti e così via?

RW: Ci hanno dato un grandissimo aiuto sia nell'imparare OpenCL sia nell'usare gli strumenti che ci hanno fornito. Tanto Nvidia quanto AMD ci hanno aiutato nel realizzare i prototipi degli algoritmi, poiché è nel loro interesse far sì che si usi maggiormente la GPU. Per noi il grande problema è capire da dove ottenere le migliori prestazioni, perché non possiamo contare sul fatto che in un sistema vi sia una particolare GPU. Tanti PC hanno la grafica integrata Intel, che ha una potenza limitata ed è compatibile con OpenGL ma non OpenCL. È quindi necessario uno sviluppo tradizionale basato su C, ed è l'unica cosa su cui possiamo fare affidamento. D'altra parte se c'è qualcosa di prestazionalmente critico, è nella GPU che troviamo la maggior parte della potenza di calcolo.

Clicca per ingrandire

Oltre a questo, AMD ci ha messo a disposizione costantemente il loro team d'ingegneri e il controllo qualità. Ci siamo sentiti settimanalmente, abbiamo avuto accesso all'hardware per i test e così via. Anche Nvidia e Intel ci hanno aiutato, ma AMD di più.

TH: Quindi quale azienda ha i migliori prodotti, AMD o Nvidia?

RW: Siete Tom's Hardware, sapete che dipende da che cosa si fa girare, in quale settimana si pone la domanda e quanti soldi avete in tasca. Questo è il motivo per cui è così importante per noi avere il supporto di entrambe le aziende - tre se si decide di lavorare con la grafica integrata Intel, che sta iniziando a diventare interessante.

TH: A un certo punto, sono inevitabili i colli di bottiglia prestazionali. Come cercate di evitarli? Vi fermate una volta ottenute prestazioni maggiori o spingete al massimo sino a toccare il limite?

RW: ci pensiamo, ma è molto difficile. È impossibile sapere prima del tempo quanto sarà il miglioramento; sappiamo però che dobbiamo spendere un sacco di tempo su problemi di banda. Photoshop è basato su pixel, quindi il numero di volte che i pixel vanno spostati da qui a lì è un problema enorme, e facciamo attenzione a ogni volta che questo accade nella pipeline di calcolo. Spesso questo è il fattore più limitante rispetto ai soli calcoli fatti sui pixel. In particolare, quando avete una scheda video dedicata, c'è un costoso passaggio nello spostamento di pixel avanti e indietro dalla scheda grafica.

TH: quindi è il bus solitamente il vostro collo di bottiglia?

RW: sì, il bus PCI. Mi aspetto che in futuro le APU ci richiederanno di ripensare quali funzioni si possono accelerare. In particolare quando le APU inizieranno a usare quella che alcune persone chiamano zero-copy. Con un'APU non bisogna passare attraverso il bus PCI per arrivare alla GPU.

Oggi bisogna ancora passare attraverso il driver. Stanno lavorando per eliminare questo passaggio e diventerà sempre più utile fare piccole operazioni sull'APU, perché l'overhead è ridotto.