- Mitglied seit
- Jun 1, 2018
- Beiträge
- 10.273
- Bewertungspunkte
- 19.012
- Punkte
- 114
- Alter
- 59
- Standort
- Labor
Vom Ansatz her war OpenCL als Alternative sicher nicht schlecht. Aber machmal muss man auch zu drastischen Worten greifen, denn es ist kein wirklicher Ersatz. Man kann es als Alternative sehen, aber es ist nicht gleichwertig.
CUDA wurde vom NVIDIA entwickelt und nutzt die Grafikkarte wie eine echte Sub-CPU. So kann meine CPU dafür geeignete Aufgaben an die CUDA-fähige Karte weiterleiten. Die Ergebnisse werden anschließend direkt an die CPU zurückgegeben. Für Programmierer wie mich ist das relativ einfach zu integrieren. Die Hauptfunktionalität von CUDA liegen in der massiven Berechnung (Compute), Datengenerierung und Bildmanipulation. Nachteil: Es funktioniert nur bei „CUDA-fähigen“ Grafikkarten. Es gibt hier Ausnahmen wie Apple, aber das klappt mit der AMD Hardware nur dort.
OpenCL ist hingegen ein offener Standard. Vorteil: Jeder kann diese Funktionalität in seiner Hard- und Software nutzen (ohne für prioprietäre Technologien oder Lizenzen zu bezahlen). Gravierender Nachteil: Während CUDA die Grafikkarte wie einen echten Co-Prozessor verwendet, gibt OpenCL die gesamten Informationen erst einmal vollständig weiter und verwendet die Grafikkarte nur als eine Art universellen Peer-Prozessor. Für den Programmierer ist das oft die Hölle und mit deutlich mehr Aufwand verbunden. Die Performance liegt meist deutlich unter CUDA und es entsteht eigentlich auch viel zu viel Overhead.
Außerdem gibt es massenweise OpenCL Frickelkram, den mal erst mal als solchen erkennen muss. Viele Bibliotheken sind fragmentierter als die 1001 Linuxderivate, wo jeder mal randarf...
CUDA wurde vom NVIDIA entwickelt und nutzt die Grafikkarte wie eine echte Sub-CPU. So kann meine CPU dafür geeignete Aufgaben an die CUDA-fähige Karte weiterleiten. Die Ergebnisse werden anschließend direkt an die CPU zurückgegeben. Für Programmierer wie mich ist das relativ einfach zu integrieren. Die Hauptfunktionalität von CUDA liegen in der massiven Berechnung (Compute), Datengenerierung und Bildmanipulation. Nachteil: Es funktioniert nur bei „CUDA-fähigen“ Grafikkarten. Es gibt hier Ausnahmen wie Apple, aber das klappt mit der AMD Hardware nur dort.
OpenCL ist hingegen ein offener Standard. Vorteil: Jeder kann diese Funktionalität in seiner Hard- und Software nutzen (ohne für prioprietäre Technologien oder Lizenzen zu bezahlen). Gravierender Nachteil: Während CUDA die Grafikkarte wie einen echten Co-Prozessor verwendet, gibt OpenCL die gesamten Informationen erst einmal vollständig weiter und verwendet die Grafikkarte nur als eine Art universellen Peer-Prozessor. Für den Programmierer ist das oft die Hölle und mit deutlich mehr Aufwand verbunden. Die Performance liegt meist deutlich unter CUDA und es entsteht eigentlich auch viel zu viel Overhead.
Außerdem gibt es massenweise OpenCL Frickelkram, den mal erst mal als solchen erkennen muss. Viele Bibliotheken sind fragmentierter als die 1001 Linuxderivate, wo jeder mal randarf...