This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Schnelleres Rendern mit GPU-Unterstützung - Planung

Tags: None
(comma "," separated)
video-beginner
Registered Member
Posts
21
Karma
0
Das Kdenlive-Team hatte ja angekündigt, evtl. im Laufe dieses Jahres (2020) beim Rendern eine GPU-Unterstützung einzubauen. Aktuell ist es wohl noch nicht so weit.
Da ich zurzeit Probleme mit meinem DVI-Dual-Link-Anschluss habe (für meinen Moni erforderlich) habe, überlege ich, mir schon jetzt eine Grafikkarte zuzulegen.
Wenn ich hierfür aber Geld ausgebe, dann sollte es eine Grafikkarte sein, die voraussichtlich beim Rendern mit Kdenlive massive Geschwindigkeitsvorteile bieten wird. Über andere Foren erfuhr ich bereits, dass auch sehr einfache Grafikkarten diese Beschleunigung mit ich bringen würden, da die teuren Effekte (z.B. Shader-Einheiten) für PC-Spiele beim Rendern nicht benötigt würden.
Wenn das stimmt, möchte ich eine möglichst passiv gekühlte einfache Grafikkarte verwenden wie z.B. eine Radeon R5 230 mit 2GB DDR3-RAM. MSI und Sapphire bieten derartiges für 45 bis 80 Euro an. Zudem ist wohl die Leistungsaufnahme relativ gering, sodass meine Stromkosten nicht zu sehr steigen werden. Immerhin läuft mein PC rund 4 bis 6 Stunden täglich und die Videoarbeiten, für die ich die Karte benötige, habe ich ja nur ab und zu.

Aktuell rendert ein 1920 x 1080 50fps Video reduziert auf 1080p720 50fps von 30 Minuten Dauer etwa 2 bis 3 Stunden lang.
Mein PC: Manjaro Linux auf Intel i5-7400 3GHz 4 Kerne / 4 Threads, 16GB RAM, Intel OnBoard-Graphic 630

Frage also: Würde die jetzige Anschaffung einer solch einfachen und passiv gekühlten Grafikkarte (z.B. Radeon R5 230) mir in der kommenden Kdenlive-Version einen erheblichen Geschwindigkeitsgewinn beim Rendern bringen?
Merlimau
Registered Member
Posts
986
Karma
8
GPU Unterstützung scheint ein schwieriges Unterfangen zu sein, da Kdenlive auf MLT und FFPEG als Unterbau aufbaut. Zudem ist es schwierig eine Lösung für Linux und Windows zu haben. Die Idee ist, eine Software zu integrieren die AMD, NVIDIA und INTEL gleichwertig unterstützt. Wann diese Lösung kommt, kann ich nicht sagen. Jedenfalls nicht vor der Version 20.08 im August.

Probiere zu Rendern mit "Parallel processing" und setzte Threads auf 0 (Null) (mehr Optionen -> rechts oben). Wenn es nicht funktioniert dann das parallel processing wieder ausschalten.

Mit der Version 20.04 kommt das scaling der Preview welches das playback merklich beschleunigt.
video-beginner
Registered Member
Posts
21
Karma
0
Danke für deine Antwort. Die Geschwindigkeit im Preview hat mir bisher noch keine Probleme bereitet. Es geht mir nur um den Renderprozess bei der Erstellung des Endprodukt.

Auch ich habe die Information gewinnen können, dass Kdenlive auf das MLT-Framework aufsetzt. Sowohl Nvidia als auch AMD-Grafikkarten unterstützen mittlerweile beides, nämlich Open-CL und CUDA. Open-CL ist halt OpenSource, CUDA ist proprietär NVIDIA-Code. CUDA soll einfacher zu handhaben und leistungsfähiger sein, als CUDA.

Mir ging es in meiner Frage darum, wie viel der Funktionalität einer Grafikkarte eigentlich beim Rendern von Videos genutzt wird. Im Forum Slashcam.de wurde mal beschrieben, dass die meisten Funktionen in den heutigen Grafikkarten für das Rendern von Vektorgrafiken in Spielen benutzt wird und für das Rendern von Videos gar nicht benötigt wird.
Genau das hat mich ja auf die Idee gebracht, eine möglichst einfache, kostengünstige Grafikkarte mit geringer Leistungsaufnahme / Passivkühlung anzuschaffen, die aber natürlich die für das Video-Rendering erforderlichen leistungssteigernden Funktionen beinhalten muss.
Genau darauf zielte meine Frage ab und ich brachte Grafikkarten auf Basis von Radeon R5 230 ins Spiel.

Vielleicht ist darauf eine Antwort möglich, obwohl Kdenlive noch gar nicht so weit ist?
Merlimau
Registered Member
Posts
986
Karma
8
Ich würde keine Radeon R5 230 kaufen da sie von 2014 ist und eventuell Probleme mit deinem System machen kann (Hatte dies auch mit meiner uralten AMD-GraKA unter Win7). Schau hier der Vergleich zu meiner Grafikkarte: https://gpu.userbenchmark.com/Compare/N ... 39vsm12264 .

Wenn, dann spare und nimm etwas Neueres. Ich denke Kdenlive läuft unter Windows besser da es OpenGL unterstützt und alle Rechenkerne auslasten kann. So habe ich längstens 3:1 Renderzeiten.
video-beginner
Registered Member
Posts
21
Karma
0
Mag sein, dass Kdenlive unter Windows eine bessere GPU-Unterstützung hat. Ich habe mich aber bereits 2018 aus Datenschutzgründen dazu entschlossen, nach Windows 7 kein Windows mehr einzusetzen (nur noch in VMs) und möglichst alles unter Linux laufen zu lassen.

Nun bin ich deinem Tipp gefolgt und habe tatsächlich eine passive Ausführung der GTX 1650 gefunden:
Palit GeForce GTX 1650 KalmX

Die liegt aber immerhin schon bei 175 Euro. Dafür löst sie mein Monitor-Anschlussproblem und ist passiv / geräuschlos und hat „nur“ durchschnittlich 75W Leistungsaufnahme. Die durchschnittliche Leistungsaufnahme meines PC wird dadurch aber leider auf über 150 Watt steigen, was ich natürlich nicht so gut finde.

Vielen Dank für deine wertvolle Antwort!
Merlimau
Registered Member
Posts
986
Karma
8
Die GTX 1650 hat maximal 75Watt Leistungsaufnahme, da sie vom Motherboard gespiesen wird (Kein Externer Stromanschluss vom Trafo). Meine braucht im Schnitt so zwischen 20-30Watt und nur wenn sie 100% ausgelastet ist ca. 70Watt. Warte mit dem Kauf da die GTX 165 mit GDR6 RAM (stattGDR4) angeboten wird: https://www.heise.de/newsticker/meldung ... 98639.html

Übrigens, meine 1650 hat einen Lüfter den ich aber nicht höre.
video-beginner
Registered Member
Posts
21
Karma
0
Nun hab ich mir doch schon die Palit GTX 1650 gegönnt. Ohne sonderliche Installation neuer Treiber aus den Repos lief die Karte auf Anhieb unter Manjaro!
Allerdings stellte sich kein Geschwindigkeitsgewinn unter KDenlive ein, egal mit welchen Einstellungen. Auch ein BIOS-Update brachte nix. Die Karte erwärmt sich auf ca. 31°C, was nur ca. 3°C über der Temperatur im PC-Gehäuse entspricht. Beim Rendern erhöht sich die Temperatur der Graka bestenfalls um 2°C. Daraus schließe ich, dass sie de facto am Rendern nicht beteiligt ist.

Durch Recherche fand ich heraus, dass nVidia in seinen Treibern eine Schnittstelle zu ffmpeg integriert hat, die sich NVencode und NVdecode nennt. Angeblich soll diese ähnlich schnell rendern können, wie die CUDA-Technik. Voraussetzung dafür ist aber die Installation des proprietären nVidia-Treibers und nicht die freien Treiber von nouveau.

Nachdem nun alles damit lief, habe ich wieder mein Beispiel-Video aus Kdenlive gerendert. Die Ergebnisse sind leider enttäuschend:
Code: Select all
Renderzeit nur mit Intel-Onboard-Grafik: ca. 2 Stunden 58 Minuten
Renderzeit mit nVidia GTX 1650 und Standard-OpenSource-Treibern: ca. 2 Stunden 49 Minuten (Graka-Temperatur ca. 3°C über Gehäuse)
Renderzeit jetzt mit proprietären nVidia-Treibern: ca. 2 Stunden 40 Minuten. (Graka-Temperatur ca. 8°C über Gehäuse)
Renderzeit wie vor aber mit 2 Threads in Kdenlive: ca. 2 Stunden 34 Minuten. (Graka-Temperatur ca. 8°C über Gehäuse)

Bei allen vier Rendervorgängen musste die CPU (des PC) immer ca. mit 70% Last arbeiten.

Mit den proprietären nVidia-Treibern startet Kdenlive erheblich schneller und nutzt dabei bis zu 45% GPU-Leistung und bis zu 38% des Graka-RAM (4 GB). Während des Rendervorgang werden durchschnittlich 5% der GPU-Leistung und bis zu 12% Graka-RAM benutzt.

Aber Achtung! Die o.g. Renderzeiten sind der Wert, den Kdenlive zu Beginn des Rendervorgang anzeigt. Während ich dies hier schrieb, ist das Rendern des letzgenannten Beispiel weiter voran geschritten. Jetzt zeigt Kdenlive plötzlich eine voraussichtliche Renderzeit von 3 Stunden 22 Minuten an, kurz darauf wieder 2 Stunden 42 Minuten....

Die Fähigkeiten der Verbinung zwischen nVidia und ffmpeg auf meinem System habe ich dann noch im Terminal getestet:
Code: Select all
ffmpeg -help encoder=h264_nvenc
ffmpeg version n4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.3.0 (Arch Linux 9.3.0-1)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Encoder h264_nvenc [NVIDIA NVENC H.264 encoder]:
    General capabilities: delay hardware
    Threading capabilities: none
    Supported pixel formats: yuv420p nv12 p010le yuv444p p016le yuv444p16le bgr0 rgb0 cuda
h264_nvenc AVOptions:
  -preset            <int>        E..V..... Set the encoding preset (from 0 to 11) (default medium)
     default                      E..V.....
     slow                         E..V..... hq 2 passes
     medium                       E..V..... hq 1 pass
     fast                         E..V..... hp 1 pass
     hp                           E..V.....
     hq                           E..V.....
     bd                           E..V.....
     ll                           E..V..... low latency
     llhq                         E..V..... low latency hq
     llhp                         E..V..... low latency hp
     lossless                     E..V.....
     losslesshp                   E..V.....
  -profile           <int>        E..V..... Set the encoding profile (from 0 to 3) (default main)
     baseline                     E..V.....
     main                         E..V.....
     high                         E..V.....
     high444p                     E..V.....
  -level             <int>        E..V..... Set the encoding level restriction (from 0 to 51) (default auto)
     auto                         E..V.....
     1                            E..V.....
     1.0                          E..V.....
     1b                           E..V.....
     1.0b                         E..V.....
     1.1                          E..V.....
     1.2                          E..V.....
     1.3                          E..V.....
     2                            E..V.....
     2.0                          E..V.....
     2.1                          E..V.....
     2.2                          E..V.....
     3                            E..V.....
     3.0                          E..V.....
     3.1                          E..V.....
     3.2                          E..V.....
     4                            E..V.....
     4.0                          E..V.....
     4.1                          E..V.....
     4.2                          E..V.....
     5                            E..V.....
     5.0                          E..V.....
     5.1                          E..V.....
  -rc                <int>        E..V..... Override the preset rate-control (from -1 to INT_MAX) (default -1)
     constqp                      E..V..... Constant QP mode
     vbr                          E..V..... Variable bitrate mode
     cbr                          E..V..... Constant bitrate mode
     vbr_minqp                    E..V..... Variable bitrate mode with MinQP (deprecated)
     ll_2pass_quality              E..V..... Multi-pass optimized for image quality (deprecated)
     ll_2pass_size                E..V..... Multi-pass optimized for constant frame size (deprecated)
     vbr_2pass                    E..V..... Multi-pass variable bitrate mode (deprecated)
     cbr_ld_hq                    E..V..... Constant bitrate low delay high quality mode
     cbr_hq                       E..V..... Constant bitrate high quality mode
     vbr_hq                       E..V..... Variable bitrate high quality mode
  -rc-lookahead      <int>        E..V..... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
  -surfaces          <int>        E..V..... Number of concurrent surfaces (from 0 to 64) (default 0)
  -cbr               <boolean>    E..V..... Use cbr encoding mode (default false)
  -2pass             <boolean>    E..V..... Use 2pass encoding mode (default auto)
  -gpu               <int>        E..V..... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)
     any                          E..V..... Pick the first device available
     list                         E..V..... List the available devices
  -delay             <int>        E..V..... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
  -no-scenecut       <boolean>    E..V..... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
  -forced-idr        <boolean>    E..V..... If forcing keyframes, force them as IDR frames. (default false)
  -b_adapt           <boolean>    E..V..... When lookahead is enabled, set this to 0 to disable adaptive B-frame decision (default true)
  -spatial-aq        <boolean>    E..V..... set to 1 to enable Spatial AQ (default false)
  -temporal-aq       <boolean>    E..V..... set to 1 to enable Temporal AQ (default false)
  -zerolatency       <boolean>    E..V..... Set 1 to indicate zero latency operation (no reordering delay) (default false)
  -nonref_p          <boolean>    E..V..... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
  -strict_gop        <boolean>    E..V..... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
  -aq-strength       <int>        E..V..... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)
  -cq                <float>      E..V..... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
  -aud               <boolean>    E..V..... Use access unit delimiters (default false)
  -bluray-compat     <boolean>    E..V..... Bluray compatibility workarounds (default false)
  -init_qpP          <int>        E..V..... Initial QP value for P frame (from -1 to 51) (default -1)
  -init_qpB          <int>        E..V..... Initial QP value for B frame (from -1 to 51) (default -1)
  -init_qpI          <int>        E..V..... Initial QP value for I frame (from -1 to 51) (default -1)
  -qp                <int>        E..V..... Constant quantization parameter rate control method (from -1 to 51) (default -1)
  -weighted_pred     <int>        E..V..... Set 1 to enable weighted prediction (from 0 to 1) (default 0)
  -coder             <int>        E..V..... Coder type (from -1 to 2) (default default)
     default                      E..V.....
     auto                         E..V.....
     cabac                        E..V.....
     cavlc                        E..V.....
     ac                           E..V.....
     vlc                          E..V.....
  -b_ref_mode        <int>        E..V..... Use B frames as references (from 0 to 2) (default disabled)
     disabled                     E..V..... B frames will not be used for reference
     each                         E..V..... Each B frame will be used for reference
     middle                       E..V..... Only (number of B frames)/2 will be used for reference
  -a53cc             <boolean>    E..V..... Use A53 Closed Captions (if available) (default true)


Nebeneffekte der Grafikkarte: Ich habe eine 120 MB mit Passwort gezippt. Die Graka beschleunigte dies enorm und hatte in der Abteilung "Graphics" bis zu 65% Last.

Meine Frage nun: Gibt es noch irgend eine Einstellung, mit der ich die derzeitigen Verhältnisse verbessern kann? Oder muss ich warten, bis Kdenlive die GPU / nVidia-Treiber beim Rendern besser unterstützt?
grosser
Registered Member
Posts
14
Karma
0
Hallo,

ich verwende Kdenlive 20.04.1 mit MLT 6.21.0 auf einem Notebook mit Windows 10 und einer 1.Grafikkarte Intel UHD Graphics 630 und einer 2.Grafikkarte NVIDIA Geforce GTX 1070.
Unter Settings kann man unter OpenGL Backend bis zu vier Dinge aktivieren. Welche hab ich zu aktivieren?
Wenn ich unter Settings "Run Config Wizard" starte, dann sagt er mir, dass er eine NVIDIA Hardwarebeschleunigung gefunden und aktiviert hat.
Aber davon merke ich nichts beim Rendern.

Was mache ich falsch?

Danke!

Gruß Lutz
video-beginner
Registered Member
Posts
21
Karma
0
Hi Lutz!
Du machst nichts falsch. Kdenlive ist betr. Hardware-Rendering einfach noch nicht so weit. Ich habe mich hier nicht mehr beteiligt, weil ich auf Shotcut umgestiegen bin. Das hat zwar eine weniger klare Bedienoberfläche und bietet wesentlich weniger Effekte als Kdenlive. Es rendert aber hardwareunterstützt deutlich schneller als Kdenlive.

Und bitte nicht falsch verstehen! Kdenlive ist ein prima Programm. Vielleicht komme ich darauf später wieder zurück.
grosser
Registered Member
Posts
14
Karma
0
gibt es für Windows Forschritte?
Merlimau
Registered Member
Posts
986
Karma
8
Wir sind daran GPU Rendering für die Timeline und das Rendern zu integrieren (mal sehen ob es für 22.08 reicht). Aber ob das Rendern dann wirklich schneller wird hängt von der Anzahl Effekten die eingesetzt werden ab. Effekte können im Moment nur von der CPU gerechnet werden. So schaltet Kdenlive dann immer zwischen GPU du CPU hin und her.


Bookmarks



Who is online

Registered users: bcooksley, Bing [Bot], claydoh, Google [Bot], paulgureghian, Yahoo [Bot]