OpenCL oder CUDA Wohin soll es gehen?

Lesezeit: 2 Minuten

Benutzer-Avatar
Systemfehler

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:

  1. Benutzerfreundlichkeit (gute API)
  2. Gemeinschaft und Dokumentation
  3. Leistung
  4. Zukunft

Ich werde in C und C++ unter Linux programmieren.

  • Siehe auch: stackoverflow.com/questions/2384930

    – PaulR

    16. April 2010 um 6:31 Uhr

Benutzer-Avatar
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.

  1. 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.
  2. Gemeinschaft und Dokumentation — beide haben eine umfangreiche Dokumentation und Beispiele, aber ich denke, dass CUDA besser ist.
  3. Leistung — CUDA ermöglicht eine bessere Kontrolle und kann daher besser auf eine höhere Leistung abgestimmt werden.
  4. 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

Benutzer-Avatar
Danvil

Meine persönlichen Erfahrungen waren:

  1. 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.

  2. Community: CUDA hat bis jetzt eine viel größere Community als OpenCL, aber das wird sich wahrscheinlich ausgleichen.

  3. Dokumentation: Beide sind sehr gut dokumentiert.

  4. Performance: Wir haben die Erfahrung gemacht, dass OpenCL-Treiber noch nicht vollständig optimiert sind.

  5. 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.

1310830cookie-checkOpenCL oder CUDA Wohin soll es gehen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy