CUDA ist mit sicherheit nicht flexibler und einfacher zu programmieren wie OpenCL z.B. und dies ist unumstritten das konkurenzsystem zu CUDA. CUDA wird über kurz oder lang aussterben. Dies hat Nvidia selbst durch die Blume gesagt als sie ihre CUDA fähigen Produkte OpenCL zertifiziert haben.
Und im grunde ist mit OpenCL mindestens das gleiche möglich wie mit CUDA.
Desweiteren wird OpenCL ebenfalls in C geschrieben. Aber mit dem kleinen Unterschied das dieser Code nicht speziell für die GPU geschrieben werden muss sondern ebenso für die CPU verwendbar ist. (CUDA ist im übrigen inzwischen
auch auf der CPU ausführbar.)
OpenCL wird über ein paar simple Code abschnitte angewiesen wenn möglich auf einer OpenCL fähigen GPU zu rechnen. CUDA wird speziell dafür geschrieben.
Entwickler brauchen ihre bestehenden Programmme nicht neu zu schreiben, sondern müssen nur die Teilbereiche ihrer Anwendung nach OpenCL C portieren, die die rechenintensiven Operationen enthalten. Spezielle proprietäre Sprachen und unterschiedliche Befehlssätze (je nach Hardwarehersteller) entfallen
Quelle
Das alles hat natürlich jetzt nichts damit zu tun das die GTX560 ohne frage eine gute Karte ist die ihrem Preis beim derzeitigen Markt durchaus gerecht wird. Allerdings will ich mit dem Mythos CUDA ist sooooo cool und ungeschlagen, aufräumen. Fakt ist das CUDA sterben wird.
OpenCL ist flexibler, einfacher zu schreiben (bzw. der original Code braucht nur minimal verändert zu werden) und OpenCL findet in Zukunft eine weitaus größere akzeptanz als CUDA weil es eben ein offener STandard ist und nicht nur auf Nvidia beschränkt. Jede WurstKarte kann nachher mit OpenCL umgehen. D.h. die entwickler von Software werden nicht mehr hier etwas für die eine Karte und dort etwas für die andere Karte schreiben müssen. (So wie bei CUDA und ATI Stream)
Problem ist halt nur das OpenCL erst letztes Jahr langsam an Fahrt aufgenommen hat.
Ein allgemeiner Irrglaube bezüglich Adobe Premiere ist auch das die Mercury Playback Engine auch das encoding über CUDA laufen lässt. Das stimmt jedoch nicht. Premiere wendet folgendes auf die GPU an :
Here’s a list of things that Premiere Pro CS5 can process with CUDA:
some effects (complete list at the bottom of this post)
scaling (details here)
deinterlacing
blending modes
color space conversions
Und für das eigentliche Rendering. NICHT aber fürs
encoding z.B. in H264!!!!
Quelle
und folgendes nicht (gleiche Quelle):
It’s worth mentioning one set of things that Premiere Pro CS5 doesn’t process using CUDA: encoding and decoding.
Und besonders schön nochmal zu dem Beispiel von After Effekts :
OpenGL is a different technology that is implemented through GPUs. It is not exclusive of CUDA; it’s a different thing altogether, and a card that uses CUDA will also use OpenGL for some things. OpenGL is used to do such things as render 3D and accelerate drawing of items to the screen. After Effects uses it some. Premiere Pro, not so much.
UND
But After Effects doesn’t use CUDA (though a few third-party plug-ins do).
Ebenfalls aus dem Blog von Adobe.
Ich hoffe ich konnte damit nun ein für alle mal ein paar Mythen beseitigen!