Frage

Ich bin Untersuchung von Möglichkeiten der Verwendung der GPU, um streaming-Daten.Ich hatte zwei Möglichkeiten, konnte aber nicht entscheiden, welche Weg zu gehen?

Meine Kriterien sind wie folgt:

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

Werde ich code in C und C++ unter linux.

War es hilfreich?

Lösung

OpenCL

  • das interfacing von Ihrem Produktionscode
  • portabel zwischen verschiedenen Grafik-hardware
  • begrenzte Operationen, aber vorgefertigten Verknüpfungen

CUDA

  • separate Sprache (CUDA C)
  • nVidia-hardware nur
  • fast vollständige Kontrolle über den code (die Programmierung in einer C-ähnlichen Sprache)
  • viel profiling-und debugging-tools

Bottom line -- OpenCL tragbar ist, ist nVidia CUDA nur.Aber als eine unabhängige Sprache, CUDA ist viel leistungsfähiger und hat ein paar wirklich gute tools.

  1. Benutzerfreundlichkeit -- OpenCL ist einfacher zu verwenden aus der box, aber sobald Sie das setup der CUDA-Code-Entwicklungsumgebung, es ist fast wie Codierung in C.
  2. Gemeinschaft und Dokumentation - beide haben umfangreiche Dokumentation und Beispiele, aber ich denke, CUDA besser.
  3. Leistung -- CUDA ermöglicht eine größere Kontrolle, damit besser sein kann fein abgestimmt für eine höhere Leistung.
  4. Zukunft -- schwer zu sagen, wirklich.

Andere Tipps

Meine persönlichen Erfahrungen waren:

  1. API:OpenCL hat etwas komplexer api.Aber die meiste Zeit Sie verbrachte mit dem schreiben von code mit kernel, und hier sind beide fast identisch.

  2. Gemeinschaft:CUDA hat eine viel größere community dann OpenCL bis jetzt, aber das wird wohl zu noch aus.

  3. Dokumentation:Beide sind sehr gut dokumentiert.

  4. Leistung:Wir machten die Erfahrung, dass OpenCL-Treiber sind noch nicht vollständig optimiert.

  5. Zukunft:Die Zukunft liegt mit OpenCL, wie es ist ein offener standard, nicht nur auf einen Hersteller oder bestimmte hardware!

Diese Einschätzung ist von 2010, also wahrscheinlich veraltet.

OpenCL alle die Weg, wenn Sie einen bestimmten Grund für die Verwendung von CUDA.OpenCL läuft auf multicores, wie Intel i7-neben der Ausführung auf GPUs.Durch die Verwendung von OpenCL können Sie ihn ausführen auf eine viel breitere Palette von hardware von Droid-Handys den IBM Power7 compute-Knoten, der weltweit größten supercomputer, Blue Waters,, das soll online zu kommen nächste Jahr.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top