OpenCL in Adobe Premiere Pro: Wie viel schneller ist eine GPU als eine CPU?

Hallo Giktayms! Nachdem ich kürzlich die wunderbare Welt der Beschleunigung der Datenverarbeitung mit Grafikkarten mit OpenCL entdeckt hatte, beschloss ich, ein kleines Einführungsmaterial für Anfänger zu schreiben, die mit dieser Technologie in der Praxis nicht vertraut sind. Das Internet wirft häufig die Frage auf, welche Art von Produktivitätsgewinn ich erzielen werde. Die Antworten sind jedoch entweder abstrakt oder übermäßig theoretisiert.
Dieser Beitrag soll zeigen, wie die Verwendung von OpenCL das Rendern von Videos in Videobearbeitungsprogrammen beschleunigen kann. Sie werden kein tiefes Eintauchen in Theorie und Mathematik finden - es gibt viele detaillierte theoretische Artikel über OpenCL über Giktims und Habré ohne mich. Es wird nur eine Beschreibung der Aufgabe und der Testergebnisse geben. Bitte behandeln Sie den Text genau wie eine einfache Einführung für Anfänger.



Warum wird es benötigt?


Moderne Grafikkarten sind echte Computermonster, deren volle Leistung normalerweise für Spiele aufgewendet wird. Nicht dumme Leute erkannten, dass, wenn Programmierern direkter Zugriff auf die Recheneinheiten von Videochips gewährt würde, all diese kolossale Leistung für andere Aufgaben und nicht nur für die 3D-Grafikverarbeitung genutzt werden könnte.

NVIDIA war das erste Unternehmen, dem diese Idee mit seiner CUDA-Parallel-Computing-Architektur (Compute Unified Device Architecture) erfolgreich umgesetzt wurde. Mithilfe der erweiterten Syntax der C-Sprache und eines speziellen Compilers konnten Entwickler einen Grafikchip für Rechenaufgaben verwenden. AMD wiederum stellte das Stream SDK vor - seine eigene Vision für CUDA.

Das Ergebnis war phänomenal - die mit der Verarbeitung von Mediendaten verbundenen Prozesse, die einen hohen Parallelisierungsgrad implizieren, wurden um ein Vielfaches schneller abgeschlossen als bei Berechnungen durch den Zentralprozessor. Der Vorteil der GPU war besonders ausgeprägt beim Rendern in 3D-Modellierungsprogrammen und bei der Videoverarbeitung.



Ein Jahr nach der Veröffentlichung von CUDA veröffentlichte das Konsortium der Khronos Group das OpenCL-Framework. Tatsächlich musste er den Code vereinheitlichen, um auf die Rechenleistung von Prozessoren auf verschiedenen Architekturen, einschließlich Videokernen, zugreifen zu können. Von diesem Moment an wurde die Unterstützung für das neue Framework aktiv in professionelle Software eingeführt.

Bisher unterstützt OpenCL Adobe-Programme, Medienkonverter, eine Reihe beliebter 3D-Renderings, CAD und Software für die mathematische Modellierung.



Besser CUDA oder OpenCL?


Eine sehr häufige und sehr interessante Frage ist mit Untertiteln versehen. Diese beiden Technologien sind anders als Brüder. Wie der langmütige PhysX ist CUDA eine geschlossene Technologie, die nur von NVIDIA-Chips und keineswegs von spezialisierter Software unterstützt wird. OpenCL ist extrovertiert, der Code steht jedem Enthusiasten offen, jede Software, die GPU-Computing per Definition unterstützt, funktioniert mit OpenCL.

NVIDIA-Programmierer schlürfen nicht - wenn Sie zwei sphärische Grafikkarten mit derselben Leistung im Vakuum aufnehmen, zeigt CUDA auf dem NVIDIA-Chip durchschnittlich 20% mehr Leistung als OpenCL auf dem AMD-Chip. Aber es gibt eine Nuance, wie sie sagen: Wenn die CUDA von NVIDIA schnell und gut funktioniert, ist OpenCL auf den Karten dieses Unternehmens der OpenCL-Verarbeitungsgeschwindigkeit von AMD etwas unterlegen. Vor ein paar Jahren war die Situation sehr bedauerlich, aber im Laufe der Zeit wurde die Lücke mit den Fahrern geschlossen. Trotzdem ist die spezifische Leistung von NVIDIA GeForce in OpenCL immer noch geringfügig niedriger als die von AMD Radeon. Daher sind diejenigen, die eine NVIDIA-Karte gekauft haben, um mit einer Anwendung zu arbeiten, die ausschließlich OpenCL unterstützt, in der schlechtesten Position - der Adapter wird teurer und seine Wirksamkeit ist möglicherweise geringer als die von Radeon. Ein solches Spiel ist die Kerze nicht wert.



Eisen


Ich habe die wunderbare Welt von OpenCL erst in diesem Sommer entdeckt, nachdem ich zwei Grafikkarten der AMD Radeon 300-Serie gleichzeitig gekauft hatte: SAPPHIRE NITRO R9 380 und SAPPHIRE Tri-X R9 390X . Einer von ihnen sollte abhängig von den Ergebnissen der Heimtests an das Geschäft zurückgegeben werden. Karten wurden für die Videobearbeitung zu Hause gekauft, die Wahl in Richtung Radeon war sehr bewusst: Einerseits ist CUDA schneller als OpenCL. Andererseits wird OpenCL, wie sich herausstellte, von wesentlich professionellerer Software als CUDA unterstützt, und die Leistung von NVIDIA-Karten in OpenCL lässt zu wünschen übrig.



Von dem vorgeschlagenen Sortiment an SAPPHIRE-Karten hat es mir besser gefallen als den anderen. Im Gegensatz zu Lüftern des Referenzdesigns verwendet SAPPHIRE klassische Lüfter im Kühlsystem, die viel leiser sind als Referenz-Radialwindkraftanlagen. Nach einer kurzen Bekanntschaft mit dem Grafikkarten-Staubsauger Radeon 4870x2 entwickelte ich eine starke Feindseligkeit gegenüber ihnen.
Zu Hause fühlte ich mich beim Auspacken von zwei riesigen Kisten wie ein moosiger Mastodon - die Grafikkarten sind ziemlich groß. SAPPHIRE R9 390X ist wirklich riesig, mit drei Lüftern und einem Kühlkörper, der die Größe der Leiterplatte überschreitet. Zuerst war ich sogar besorgt, ob diese Monster in mein Korps passen würden. Zum Glück stiegen wir ein, aber eine Festplatte musste aus dem Festplattenkäfig entfernt werden. Ein Kilowatt-Netzteil war auch nicht überflüssig - der R9 390X benötigt zwei vierpolige Stromanschlüsse, und nicht jedes Netzteil zieht einen solchen Strom.



Also meine Home-Konfiguration, an der die OpenCL-Vergleichstests durchgeführt wurden:
  • Prozessor: Intel Core i5-2500K, übertaktet auf 3,7 GHz
  • RAM: 12 GB DDR-1333
  • Hauptplatine: ASUS P8Z77-V PRO
  • Laufwerke: 120 GB A-DATA-System-SSD, 2 TB HDD WD Black WD20EARS-Inhalt
  • Stromversorgung: Corsair 1000 W.


Sanft


Wenn Adobe Premiere Pro CS4 im Büro eine große Belastung darstellt, können Sie zu Hause einen Arbeitsbereich nach Ihren Wünschen organisieren. Ich würde kaum jemals über den Kauf von Premiere Pro nachdenken, wenn Adobe das meiner Meinung nach wunderbare Creative Cloud-Abonnementsystem nicht eingeführt hätte. Jetzt für 600 Rubel pro Monat habe ich eine legale und ständig aktualisierte Premiere Pro CC. Und er unterstützt im Gegensatz zum Büro des alten Mannes das Rendern mit OpenCL und CUDA!
Wenn Ihre Grafikkarte mit OpenCL oder CUDA funktioniert, können Sie beim Erstellen eines Projekts in Premiere Pro ein Rendering auswählen. Für die Hardwarebeschleunigung gilt die Mercury Playback Engine GPU (OpenCL) oder (CUDA). In einem fertigen Projekt kann der Renderer über die Projekteinstellungen im Menü Datei geändert werden.



Wie bereits erwähnt, können Sie mit OpenCL Berechnungen zur Anwendung von Videoeffekten auf die Grafikkarte übertragen. Allerdings unterstützen nicht alle Effekte in Premiere Pro OpenCL. Dies können Sie anhand des Vorhandenseins oder Nichtvorhandenseins eines solchen Symbols in der Liste feststellen.



Tests


Als Testprojekt habe ich ein zweiminütiges Video ausgewählt, das aus vielen Segmenten von Full HD-Videos mit einer Bitrate von 72 Mbit / s und einer Bildrate von 24 Bildern pro Sekunde besteht. Vor allem diese Schande wurde der beschleunigte Effekt von Lumetri Color angewendet, mit dem ich eine Farbkorrektur durchgeführt habe. Die Ausgabe bestand darin, einen Film im Format h.264 mit einer Auflösung von 1920 × 1080 (dh ohne Änderungen) und einer Bitrate von 6 bis 7 Mbit / s und einer Zwei-Pass-Codierung zu erhalten.
Um den Betrieb der Grafikkarte zu bestätigen, habe ich GPU-Z-Parameter verwendet. Wenn man die Frequenz des Grafikkerns betrachtet, ist es leicht zu verstehen, wann das Video von der CPU gerendert wird und wann die GPU.





Im ersten Testlauf habe ich den Lumetri-Farbeffekt deaktiviert, sodass beim gesamten Rendern die Videobitrate geändert werden musste.

Lauf 1:
Projekt 2 Minuten, h.264, 6-7 Mbit / s, keine Effekte
Zentralprozessor3:09
SAPPHIRE Tri-X R9 390X2:33
SAPPHIRE NITRO R9 3802:38

Ohne Anwendung von Effekten ist der Unterschied in der Rendergeschwindigkeit zwischen dem Prozessor und der leistungsstarken modernen Grafikkarte sehr gering. Bei der Verarbeitung von Videos mit einer Gesamtdauer von etwa einer Stunde ist der Gewinn durch die Verwendung von OpenCL deutlicher, aber immer noch sehr gering. Trotzdem werden fast immer während des Bearbeitungsprozesses Farbkorrektureffekte auf das Video angewendet, sodass dieser Test als „synthetisch“ betrachtet werden sollte.

Lauf 2:
Projekt 2 Minuten, h.264, 6-7 Mbit / s, Lumetri-Farbeffekt
Zentralprozessor11:33
SAPPHIRE Tri-X R9 390X2:42
SAPPHIRE NITRO R9 3802:48

Die Ergebnisse sprechen für sich - wenn beide Grafikkarten das Video mühelos etwas langsamer als in Echtzeit gerendert haben, hat der Prozessor fast sechs Minuten für das Rendern jeder Minute aufgewendet. Und das mit nur einem Effekt! Wenn ich vor dem Test damit gerechnet habe, einen einstündigen Film mit Farbkorrektur für die gesamte Dauer zu verarbeiten, habe ich mich nach den Ergebnissen entschlossen, diese Idee aufzugeben. Bei meiner Arbeit wende ich eine Farbkorrektur auf kleine Segmente des Videos an, und ein oder zwei Stunden Rendering stören mich nicht sonderlich. Ich hatte keine Zeit, vier oder fünf Stunden für Testzwecke zu verlieren.
Durch Extrapolation der Ergebnisse können wir davon ausgehen, dass der Prozessor eine Farbkorrektur von 60 Minuten in 4,5 Stunden geschafft hätte, während Grafikkarten weniger als eine Stunde benötigen würden!

Ergebnisse


Aufgrund der Testergebnisse habe ich mir den SAPPHIRE NITRO R9 380 überlassen - die Karte kostet viel billiger als der coolste R9 390X, aber in Premiere Pro ist die Leistung der beiden Adapter nahezu identisch. Angesichts der Tatsache, dass der Adapter gekauft wurde, um die Arbeit zu erledigen, was bedeutet, dass es nicht schade ist, 17.000 Rubel Geld auszugeben. Darüber hinaus hat sich die Karte in GTA V als großartig erwiesen, aber dieses Thema ist für eine ganz andere Anmerkung.

Was die Erfahrung mit OpenCL angeht, kann man nur zugeben - ein Retter kam in die Welt der Videobearbeitung: Das Rendern wurde zum Vergnügen. Im Vergleich zu übertaktetem Intel Core i5 verarbeiten GPUs in Premiere Pro mühelos Videos mit überlagerten Effekten. Bei solchen Testergebnissen steht außer Frage, ob das Rendern mit der GPU verwendet werden soll. Die Frage ist nur, welche Grafikkarte daran angepasst werden soll. Etwas aus dem oberen Spielesegment wird genau richtig sein, zum Beispiel AMD Radeon R9 3xx. SAPPHIRE NITRO R9 380 hat meine Anforderungen voll erfüllt. Aber auch Adapter der Mittelklasse und sogar der Einstiegsklasse unterstützen OpenCL, was bedeutet, dass sie Ihre Arbeit mit professioneller Software erheblich beschleunigen.

Source: https://habr.com/ru/post/de383405/


All Articles