Intervista: dietro le quinte con Adobe

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

Intervista: dietro le quinte con Adobe

Nessuno merita più rispetto nel mondo dell'editing fotografico di Adobe, quindi abbiamo ritenuto importante sentire il punto di vista dell'azienda su OpenCL. Russell Williams è principal scientist e architect del team Photoshop di Adobe. Il suo lavoro è gestire la direzione tecnica del programma e prendere decisioni su quali tecnologie usare, il focus che meritano e cosa deve fare il team per rendere il tutto realtà.

Tom's Hardware: dalla compatibilità dual-thread a OpenGL, Photoshop ha una lunga storia nell'adozione di nuove tecnologie per accelerare il lavoro. Non potete però integrare tutto. Quale processo decisionale adottate quando cercate una nuova soluzione per accelerare il vostro software?

Russell Williams: non abbiamo un vero e proprio processo decisionale, ma sono molto importanti elementi fissi come le risorse e il tempo disponibili, o la dimensione del team. Ogni volta pensiamo a ciò che dovrebbe esserci nella versione successiva, e bisogna sempre tenere in considerazione le prestazioni. Come ogni altra caratteristica, valutiamo qual è il rapporto tra impegno (costi) e benefici: per esempio, migliorare il tempo di avvio non è una scelta particolarmente affascinante, ma influenza tutti gli utenti e la percezione di velocità, e in qualche modo pesa anche sulla produttività.

TH: con la CS6, abbiamo visto i primi passi di OpenCL in Photoshop. Dal punto di vista dello sviluppo, quanto ha richiesto integrare quel supporto? Perché non avete inserito OpenCL nella 5.5?

RW: solitamente non sviluppiamo nuove caratteristiche o funzioni nelle versioni intermedie come la CS 5.5. Quindi dobbiamo tornare alla CS5 distribuita nella primavera 2010, ma quella versione era stata progettata nel tardo 2008, quando ne furono stabilite le caratteristiche. OpenCL non era abbastanza maturo e non abbiamo avuto driver cross-platform fino al tardo 2009, quando eravamo già alla fine dello sviluppo. Perciò la CS6 è la prima opportunità per integrarlo.

Clicca per ingrandire

TH: Avete diverse API tra cui scegliere per accelerare le funzioni. Perché puntare su OpenCL?

RW: Anzitutto è uno standard aperto e un'alternativa ad altre tecnologie come CUDA o DirectCompute. La cosa importante è che gli standard aperti funzionano su tutte le piattaforme. In altri casi invece la scheda grafica è un elemento determinante e limitante, in particolare su Windows, e bisogna scegliere una l'altra marca per avere la compatibilità con le API desiderate; i portatili poi non offrono solitamente quel tipo di flessibilità.

Non amiamo lasciare indietro nessuno e non è possibile scrivere ogni tecnologia per tutte le piattaforme. Se avessimo scritto una funzione in CUDA, avrebbe funzionato solo su schede Nvidia, e se l'avessimo fatto in DirectCompute avremmo coperto solo i PC Windows e non i Mac. Combinando entrambe avremmo comunque escluso una grande fetta di consumatori. Ecco una buona ragione per scegliere OpenCL.

L'altra ragione per cui abbiamo preferito OpenCL e non OpenGL è da suddividere in due punti: linguaggi come OpenCL sbloccano o permettono l'uso di alcune parti hardware tramite capacità di calcolo di basso livello non accessibili con OpenGL; secondariamente OpenGL e DirectX sono progettate per fare una cosa: creare scene 3D. Se si vuole usarle per altro, bisogna pensare a come far apparire quel carico una scena 3D. I programmatori che cercano di accelerare alcuni algoritmi sulla GPU, solitamente non hanno esperienza rendering grafico 3D. Non pensano ai loro problemi in quel modo, quindi usare OpenGL è un ostacolo. OpenCL promette di facilitare il compito.

TH: Ci sono molte nuove funzioni e ottimizzazioni nella CS6, ma solo una compatibile con OpenCL: Blur Gallery. Perché solo una? Siete solo all'inizio o ci sono altri motivi?

RW: bisogna iniziare da qualcosa. L'ecosistema OpenCL è appena arrivato e storicamente non abbiamo una grande esperienza con questa tecnologia. Con la CS7 vogliamo far molto di più. Inoltre, facciamo molta attenzione al rapporto tra costi e benefici quando cerchiamo le caratteristica da accelerare. Bisogna velocizzare le funzioni che realmente rallentano in modo evidente il flusso di lavoro e offrire un impatto quantificabile agli utenti, non velocizzare aspetti che non sono usati comunemente.

Non siamo solo noi al primo approccio con OpenCL, ma tutto il settore. Quando abbiamo iniziato a lavorare sulla CS6, le risorse erano ancora limitate.