Was ist CUDA? Was ist mit OpenCL und OpenGL und warum sollten wir uns damit beschäftigen? Die Antworten auf diese Fragen sind schwer zu definieren, aber wir werden versuchen, eine klare Erklärung in einer einfach zu verstehenden Sprache zu finden.
Es kommt eine Zeit im Leben eines Videoeditors, in der er unweigerlich über die grundlegenden Fragen nachdenkt: „Ist das die ganze Geschwindigkeit, die realisierbar ist? Gibt es keine anderen Möglichkeiten mehr? Wie die Suche nach dem Sinn des Lebens oder einer großen vereinheitlichten Theorie bringt dich dieser einfache Gedanke in einen endlosen und unendlich tiefen Abgrund der Kontemplation und Forschung, bis du unweigerlich auf eine Frage stößt, auf die du einfach keine echte Antwort bekommst.
Wir können Ihnen mit keiner großen vereinheitlichten Theorie helfen, aber wir können sagen, dass die Informationswand, die Sie letztendlich auf Ihrer Suche nach der Geschwindigkeit der Videoverarbeitung treffen werden, letztendlich zurückzuführen sein wird: „Was ist CUDA? Was ist OpenCL und warum sollte ich mich damit beschäftigen?“
„Um CUDA und OpenGL verstehen zu können, müssen Sie sich auch intensiv mit OpenCL beschäftigen.“
Sie können im Internet-Wikis auf viele Definitionen zugreifen, themabezogenen Foren lesen und die Seiten besuchen, die diese Standards beibehalten, aber Sie werden immer noch verwirrt sein. In diesem Artikel möchten wir mit einer möglichst verständlichen Sprache Licht ins Dunkeln bringen, aber wie oben bereits angesprochen, können Sie CUDA und OpenGL nur verstehen, wenn Sie sich auch mit OpenCL auseinandersetzen.
Was ist CUDA?
CUDA wurde vom Grafikkartenhersteller Nvidia entwickelt und ermöglicht es Ihren Programmen, die Intelligenz Ihrer Grafikkarte als Sub-CPU zu nutzen. Ihre CPU leitet bestimmte Aufgaben an die CUDA-fähige Karte weiter. Die Grafikkarte ist darauf spezialisiert, Dinge wie Beleuchtung, Bewegung und Interaktion so schnell wie möglich zu verarbeiten und sogar über mehrere Spuren auf einmal zu senden – so als ob Sie vier Kassen im Supermarkt für einen Warenkorb hätten. Die Ergebnisse dieser Arbeit werden anschließend an die CPU zurückgegeben, die inzwischen zu größeren und besseren Ergebnissen gelangt ist.
Die Vorteile.
Für Programmierer ist es relativ einfach zu integrieren. Da es softwarebasiert ist, muss ein Großteil des Systems in den Programmcode programmiert werden, so dass seine Funktion variieren oder angepasst werden kann. Da die Hauptfunktionalität von CUDA in der Berechnung, Datengenerierung und Bildmanipulation liegt, können die Verarbeitungs-, Rendering– und Exportzeiten Ihrer Effekte erheblich verkürzt werden, insbesondere beim Up- oder Downscaling. Auch die Bildanalyse kann verbessert werden, ebenso wie Simulationen wie die Strömungsdynamik und prädiktive Prozesse wie Wettermuster. CUDA eignet sich auch hervorragend für Lichtquellen und Raytracing. All dies bedeutet, dass Funktionen wie Rendering-Effekte, Videokodierung und -konvertierung viel schneller ablaufen werden.
Der Nachteil.
Damit kann nicht jeder sofort CUDA nutzen. Dies funktioniert nur bei „CUDA-fähigen“ Grafikkarten. Da CUDA Eigentum von Nvidia ist, benötigen Sie eine Grafikkarte, die von diesem Unternehmen hergestellt wurde. Wenn Sie beispielsweise einen Mac Pro PC haben, ist dies einfach keine Option für Sie, da diese nur mit AMD-Grafikkarten geliefert werden. Es gibt hier Optionen von Drittanbietern, aber Apple liefert AMD nur in ihren Paketen. Sie werden auch feststellen, dass weniger Programme CUDA unterstützen als seine Alternative, also lassen Sie uns über diese andere Option sprechen.
Was ist OpenCL?
OpenCL ist ein relativ neues System und kann für unsere Diskussion als Alternative zu CUDA betrachtet werden. Es handelt sich jedoch um einen offenen Standard – das bedeutet, dass jeder seine Funktionalität in seiner Hard- und Software nutzen kann, ohne für prioprietäre Technologien oder Lizenzen zu bezahlen. Während CUDA die Grafikkarte für einen Co-Prozessor verwendet, gibt OpenCL die Informationen vollständig weiter und verwendet die Grafikkarte eher als separaten universellen Peer-Prozessor. Es ist eine kleine philosophische Unterscheidung, aber am Ende gibt es einen quantifizierbaren Unterschied. Für den Programmierer ist es etwas schwieriger zu programmieren. Als Benutzer sind Sie nicht an einen einzigen Anbieter gebunden und der Support ist so weit verbreitet, dass die meisten Programme nicht einmal seine Verwendung erwähnen.
Was ist OpenGL?
OpenGL ist wirklich der Anfang der Geschichte. Es geht nicht darum, die Grafikkarte als universellen Prozessor zu verwenden. Stattdessen geht es einfach darum, Pixel oder Eckpunkte auf dem Bildschirm zu zeichnen. Es ist das System, mit dem Ihre Grafikkarte 2D- und 3D-Displays für Ihren viel schneller erstellen kann als Ihre CPU. Wie CUDA und OpenCL Alternativen zueinander sind, ist OpenGL eine Alternative zu Systemen wie DirectX unter Windows. Einfach ausgedrückt, OpenGL zeichnet alles sehr schnell auf Ihren Bildschirm, OpenCL und CUDA verarbeiten die notwendigen Berechnungen, wenn Ihre Videos mit Ihren Effekten und anderen Medien interagieren. OpenGL kann Ihr Video in der Bearbeitungsoberfläche platzieren und es abspielen lassen, aber wenn Sie die Farbkorrektur darauf anwenden, führt CUDA oder OpenCL die Berechnungen durch, um jedes Pixel des Videos richtig zu verändern.
OpenGL kann auf Hardware-Ebene implementiert werden, d.h. Programmierer müssen den Code nicht in ihr Programm aufnehmen, sie müssen ihn nur aufrufen. Darüber hinaus haben Hardwarehersteller die Möglichkeit, die Kernfunktionalität mit Erweiterungen zu erweitern, was bedeutet, dass einige Hardware bei bestimmten Aufgaben besser sein könnte als andere. Dies ermöglicht eine sehr spezifische Anpassung.
Wo der Benutzer die Vorteile von OpenGL sehen wird, liegt in der operativen Leistungsfähigkeit der Software. Previews werden besonders schnell dargestellt. In vielen Programmen wird es auch für beschleunigte Schnittstellen und Überlagerungen verwendet wie z.B. Zeitachsen, Filmmaterial, Fenster, Gitter, Guides, Lineale und Begrenzungsrahmen.
Letztendlich ist OpenGL für den Anwender kein Thema, da sowohl OpenCL als auch CUDA das OpenGL-System nutzen können und wollen. Was Sie hier verstehen müssen, ist, dass Sie, wenn Sie eine Grafikkarte mit der neuesten OpenGL-Unterstützung haben, immer schneller arbeiten werden als auf einem Computer mit CPU und integrierter Grafik.
Auf den Punkt gebracht.
Was bedeutet das alles für Sie und Ihren Arbeitsplatz? Was ist besser – CUDA oder OpenCL? Wir gehen davon aus, dass Sie den ersten Schritt getan und Ihre Software überprüft haben und dass alles, was Sie verwenden, beide Optionen unterstützt. Wenn Sie eine Nvidia-Karte haben, dann verwenden Sie CUDA. Es wird meistens schneller als OpenCL betrachtet. Beachten Sie auch, dass Nvidia-Karten OpenCL unterstützen. Der allgemeine Konsens ist, dass sie nicht so gut darin sind wie AMD-Karten, aber sie kommen ihnen immer näher. Lohnt es sich, eine Nvidia-Karte nur für den CUDA-Support zu kaufen? Dies würde von zu vielen spezifischen Fallfaktoren abhängen, die wir hier nicht berücksichtigen könnten. Sie müssen Ihre Bedürfnisse konkretisieren und Ihre Recherchen durchführen. Nicht nur, welche Art von Arbeit Ihr Unternehmen leistet, sondern auch bis hin zur einzelnen Maschine sowie deren Arbeitsbelastung und Funktion. Vor dem Kauf sollten Sie auch eine intensive Testphase planen.
Adobe zum Beispiel erklärt auf der Firmenhomepage, dass bis auf wenige Ausnahmen alles, was CUDA für Premiere Pro leistet, auch von OpenGL erledigt werden kann. Es wird auch erklärt, dass es keines dieser beiden Verfahren zur Kodierung oder Dekodierung verwendet. Sie können jedoch für das Rendern von Previews und endgültigen Exporten verwendet werden. Die Mehrheit derjenigen, die die beiden verglichen haben, scheint sich dafür zu interessieren, dass CUDA mit Adobe-Produkten schneller ist. CUDA hat den Vorteil, dass es in sich geschlossen ist, was aufgrund einer besseren Optimierung zu einer schnelleren Leistung führen kann.
Persönliche Erfahrungen.
Wir möchten auch die Gelegenheit nutzen, um unsere persönlichen Erfahrungen in diesem Artikel zu kommunizieren. Beachten Sie jedoch, dass wir keine konkreten Tests durchgeführt haben. Wir sprechen ausschließlich für uns selber. Unsere Erfahrung ist es, dass CUDA, wenn verfügbar, hervorragend funktioniert und die Arbeitsgeschwindigkeit wirklich spürbar erhöhen kann. Jedoch müssen wir auch auf ein paar Abstürze oder Störungen beim Rendern, Transcodieren und Exportieren hinweisen. Auch bei einigen seltenen Gelegenheiten gingen uns die Optionen aus und wir schalteten CUDA aus, was schließlich zu einem erfolgreichen Ergebnis führte. Wir mussten noch nie Gegenteiliges tun. Wir müssen einschränkend hinzufügen, dass unsere Arbeitszeit mit CUDA auch stark beschränkt war. Wir haben diese Probleme bei der Nutzung mit mehr als einem Programm erlebt, so dass es eventuell an einer veralteten Version von CUDA liegen könnte. Ich fand es nur wichtig genug, um zu erwähnen, dass man auf solche Dinge achten sollte. Deshalb möchten wir hier keine Empfehlung für die eine oder andere Option aussprechen.
Wenn Sie in der Lage sind herauszufinden, ob Ihre Grafikkarte oder Ihr gesamtes System Ihren Workflow verlangsamt, dann stehen Ihren Chancen gut, dass ein Upgrade auf eine neue Karte eine enorme Verbesserung bringen kann, im Vergleich zu dessen, womit Sie derzeit arbeiten. Ein gutes Verständnis über diese Technologien hilft Ihnen zu verstehen, wo Sie ansetzen müssen, um Ihre Arbeitsplätze so effektiv wie möglich zu gestalten. Wenn Sie in eine Karte investieren, die die Verwendung des Grafikprozessors zur Ergänzung oder Entlastung der CPU unterstützt, wird Ihr Workflow erheblich beschleunigt.
Vielen Dank für Ihren Besuch.