Ich untersuche Möglichkeiten, GPU zu verwenden, um Streaming-Daten zu verarbeiten. Ich hatte zwei Möglichkeiten, konnte mich aber nicht entscheiden, welchen Weg ich gehen sollte?
Meine Kriterien sind wie folgt:
Benutzerfreundlichkeit (gute API)
Gemeinschaft und Dokumentation
Leistung
Zukunft
Ich werde in C und C++ unter Linux programmieren.
Siehe auch: stackoverflow.com/questions/2384930
– PaulR
16. April 2010 um 6:31 Uhr
Kornel Kisielewicz
OpenCL
Schnittstelle aus Ihrem Produktionscode
zwischen verschiedenen Grafikhardware portierbar
eingeschränkter Betrieb, aber vorbereitete Verknüpfungen
KUDA
separate Sprache (CUDA C)
Nur nVidia-Hardware
fast vollständige Kontrolle über den Code (Codierung in einer C-ähnlichen Sprache)
viele Profiling- und Debugging-Tools
Fazit – OpenCL ist portabel, CUDA ist nur nVidia. Da CUDA jedoch eine unabhängige Sprache ist, ist es viel leistungsfähiger und verfügt über eine Reihe wirklich guter Tools.
Benutzerfreundlichkeit — OpenCL ist einfacher zu verwenden, aber sobald Sie die CUDA-Codierungsumgebung eingerichtet haben, ist es fast so, als würden Sie in C programmieren.
Gemeinschaft und Dokumentation — beide haben eine umfangreiche Dokumentation und Beispiele, aber ich denke, dass CUDA besser ist.
Leistung — CUDA ermöglicht eine bessere Kontrolle und kann daher besser auf eine höhere Leistung abgestimmt werden.
Zukunft – schwer zu sagen.
Tatsächlich gibt es noch einen weiteren Vorteil bei der Verwendung von OpenCL, es kann auch Aufgaben in der CPU parallelisieren.
– Systemfehler
15. April 2010 um 12:11 Uhr
@holydiver, in diesem Sinne könnte man sagen, dass weder Windows noch MacOS X eine glänzende Zukunft haben :>
– Kornel Kisielewicz
15. April 2010 um 12:46 Uhr
@Kornel absolut, ich sehe keine sehr glänzende Zukunft für MacOSX und Windows und ich hoffe, sie werden in der Hölle brennen: p
– Systemfehler
15. April 2010 um 12:56 Uhr
@holydiver: Nicht tragbare Closed-Source-Software wird niemals verschwinden.
– Johannes Dibling
15. April 2010 um 14:03 Uhr
Sie listen die Tatsache auf, dass CUDA eine eigene C-ähnliche Sprache hat, erwähnen jedoch nicht die OpenCL C-ähnliche Sprache, die zum Schreiben von OpenCL-Kerneln verwendet wird.
– Kromulent
4. Juli 2010 um 2:41 Uhr
Danvil
Meine persönlichen Erfahrungen waren:
API: OpenCL hat eine etwas komplexere API. Die meiste Zeit werden Sie jedoch mit dem Schreiben von Kernel-Code verbringen, und hier sind beide fast identisch.
Community: CUDA hat bis jetzt eine viel größere Community als OpenCL, aber das wird sich wahrscheinlich ausgleichen.
Dokumentation: Beide sind sehr gut dokumentiert.
Performance: Wir haben die Erfahrung gemacht, dass OpenCL-Treiber noch nicht vollständig optimiert sind.
Zukunft: Die Zukunft liegt in OpenCL, da es sich um einen offenen Standard handelt, der nicht auf einen Hersteller oder eine bestimmte Hardware beschränkt ist!
Diese Einschätzung stammt aus dem Jahr 2010, ist also wohl überholt.
OpenCL vollständig, es sei denn, Sie haben einen bestimmten Grund, CUDA zu verwenden. OpenCL läuft gut auf Multicores wie Intel i7 zusätzlich zur Ausführung auf GPUs. Durch die Verwendung von OpenCL können Sie es auf einer viel breiteren Palette von Hardware ausführen, von Droid-Handys bis zu den IBM Power7-Rechenknoten des größten Supercomputers der Welt. Blaues Wasserdie nächstes Jahr online gehen soll.
13108300cookie-checkOpenCL oder CUDA Wohin soll es gehen?yes
Siehe auch: stackoverflow.com/questions/2384930
– PaulR
16. April 2010 um 6:31 Uhr