DirectCompute e OpenCL: l'ingrediente non troppo segreto

Test - Schede video dedicate, processori e APU: scopriamo come si comporta l'hardware AMD con l'OpenCL.

Avatar di Tom's Hardware

a cura di Tom's Hardware

DirectCompute e OpenCL: l'ingrediente non troppo segreto

In passato abbiamo provato a valutare gli sforzi di AMD con l'iniziativa Stream e le implementazioni dell'infrastruttura CUDA di Nvidia. Siamo giunti alla conclusione che si tratta di confronti difficili da fare. Gli sforzi delle aziende finiscono per limitare il numero di componenti che potete mettere l'uno contro l'altro.

Da allora, AMD ha deciso di allontanarsi dall'approccio proprietario al GPGPU (general-purpose GPU) in favore di standard industriali aperti basati sulle API DirectCompute e OpenCL. Tramite questi, gli sviluppatori possono facilmente avvantaggiarsi delle logica programmabile delle GPU per effettuare operazioni altamente parallele più rapidamente e spesso in modo più efficiente rispetto alle CPU x86. Queste operazioni spesso rientrano all'interno dei carichi di lavoro grafici, ma gli sviluppatori stanno gradualmente espandendo il modus operandi delle GPU - e ora delle APU - ad altre aree.

Le APU potrebbero rivelarsi soluzioni maggiormente ottimizzate perché sono ideali sia per i calcoli di dati singoli (SISD) che multipli (SIMD) sullo stesso die. Nel mare di applicazioni che stressano un tipo di calcolo o l'altro, assistiamo al fiorire d'interfacce grafiche applicate a software che gestiscono dati strutturati, che rendono l'approccio ibrido la migliore soluzione. Nvidia, invece, spinge l'acceleratore su CUDA, ma senza ignorare OpenCL; i driver dell'azienda supportano la specifica 1.1.

Nel tardo 2006, ATI ha iniziato a radunare sviluppatori che volevano avventurarsi maggiormente nei concetti di operazioni altamente parallele, SIMD e vettori. L'azienda, fornendo gli strumenti ATI Stream SDK e il linguaggio Brook+, ha iniziato a creare strumenti che permettevano agli sviluppatori di software "di avvicinarsi al cuore" dei processori grafici. 

Era necessario però un approccio più ampio e condiviso al problema. E qui entrano in gioco l'API delle DirectX Windows chiamata DirectCompute e la controparte del Khronos Group, denominata OpenCL. In modo simile alla contrapposizione tra DirectX e OpenGL, le applicazioni Windows probabilmente usano DirectComputer, mentre l'agnostico OpenCL è per chi vuole supportare di tutto.

Grazie all'arrivo di API standard, gli sviluppatori hanno ottenuto gli strumenti per implementare l'accelerazione GPU/APU in modi che semplicemente non erano possibili quando AMD e Nvidia perseguivano i propri interessi. Per darvi un assaggio di cosa tratteremo in questa serie di articoli esploreremo l'accelerazione hardware nei seguenti compiti: 

  • Post-processing video
  • Giochi
  • Applicazioni personali di cloud computing
  • Videoconferenze
  • Editing video
  • Transcodifica multimediale
  • Software di produttività e sicurezza
  • Fotografica e riconoscimento facciale
  • Progettazione interfaccia utente avanzata

Se AMD e Nvidia possono ritenersi fonti affidabili, dovremmo aspettarci di vedere l'accelerazione GPU/APU in diverse applicazioni, con vantaggi prestazionali rilevanti. Le schede video più costose o le APU più complesse offriranno migliori prestazioni? Probabilmente. Migliaia di stream processor dovrebbero compiere più lavoro in meno tempo di alcune centinaia. Tuttavia persino le modeste APU di fascia media dovrebbero offrire benefici quantificabili.

Bisogna ravvisare che l'architettura AMD permette alla APU e a determinate GPU dedicate di lavorare in tandem, in maniera simile a CrossFire o SLI. Quindi inizialmente dovrebbe essere possibile spendere poco e poi, nel caso, aumentare le prestazioni in seguito. Non ci occuperemo di questo aspetto multi-GPU in questo articolo, ma potremmo decidere di farlo nel corso degli articoli della serie.