Non ho sentimenti forti su CUDA vs OpenCL; presumibilmente OpenCL è il futuro a lungo termine, a forza di essere uno standard aperto.
Ma le attuali schede NVIDIA vs ATI per GPGPU (non prestazioni grafiche, ma GPGPU), su cui ho una forte opinione. E per introdurlo, sottolineerò che nell'attuale elenco Top 500 di grandi cluster , NVIDIA porta i sistemi AMD 4 a 1 e su gpgpu.org , i risultati di ricerca (documenti, collegamenti a risorse online, ecc.) Per NVIDIA supera i risultati per AMD 6: 1.
Una parte enorme di questa differenza è la quantità di informazioni disponibili online. Dai un'occhiata a NVIDIA CUDA Zone rispetto a GPGPU Developer Central di AMD . La quantità di materiale disponibile per gli sviluppatori all'avvio non si avvicina nemmeno al confronto. Sul sito di NVIDIA troverai tonnellate di documenti - e contributi di codice - da persone che probabilmente lavorano su problemi come il tuo. Troverai tonnellate di lezioni online, da NVIDIA e altrove, e documenti molto utili come la guida alle migliori pratiche per sviluppatori, ecc. La disponibilità di strumenti di sviluppo gratuiti - il profiler, il cuda-gdb, ecc. - inclina in modo schiacciante il modo in cui NVIDIA.
(Editore: le informazioni in questo paragrafo non sono più accurate.) E una parte della differenza è anche l'hardware. Le schede AMD hanno specifiche migliori in termini di picchi di flop, ma per essere in grado di ottenere una frazione significativa di questo, non solo devi suddividere il tuo problema su molti processori di flusso completamente indipendenti, ma anche ogni elemento di lavoro deve essere vettorializzato. Dato che GPGPUing il codice è abbastanza difficile, quella complessità architettonica extra è sufficiente per creare o distruggere alcuni progetti.
E il risultato di tutto ciò è che la comunità degli utenti NVIDIA continua a crescere. Dei tre o quattro gruppi che conosco che pensano di costruire cluster GPU, nessuno di loro sta prendendo seriamente in considerazione le schede AMD. E questo significherà ancora più gruppi che scrivono documenti, contribuiscono con codice, ecc. Sul lato NVIDIA.
Non sono uno shill NVIDIA; Vorrei che non fosse così e che esistessero due (o più!) Piattaforme GPGPU ugualmente avvincenti. La concorrenza è buona. Forse AMD intensificherà il suo gioco molto presto ei prossimi prodotti fusion sembrano molto convincenti. Ma nel dare un consiglio a qualcuno su quali carte acquistare oggi e dove dedicare il proprio tempo a impegnarsi in questo momento, non posso in buona coscienza dire che entrambi gli ambienti di sviluppo sono ugualmente buoni.
Modificato per aggiungere : immagino che quanto sopra sia un po 'ellittico in termini di risposta alla domanda originale, quindi lascia che sia un po' più esplicito. Le prestazioni che si possono ottenere da un pezzo di hardware sono, in un mondo ideale con tempo infinito a disposizione, dipendenti solo dall'hardware sottostante e dalle capacità del linguaggio di programmazione; ma in realtà, la quantità di prestazioni che puoi ottenere in una quantità fissa di tempo investito dipende anche fortemente dagli strumenti di sviluppo, dalle basi di codice della comunità esistenti (ad esempio, librerie disponibili pubblicamente, ecc.). Tutte queste considerazioni puntano fortemente su NVIDIA.
(Editore: le informazioni in questo paragrafo non sono più accurate.) In termini di hardware, i requisiti per la vettorizzazione all'interno delle unità SIMD nelle schede AMD rendono anche il raggiungimento delle prestazioni della carta ancora più difficili rispetto all'hardware NVIDIA.