Portál AbcLinuxu, 31. května 2024 10:05


Dotaz: gpu encoding nefunguje přes systemd

16.6.2022 12:39 MilanC | skóre: 16
gpu encoding nefunguje přes systemd
Přečteno: 274×
Odpovědět | Admin
Ahoj,

používám ffmpeg, NVENC a QSV. Mám nějaký odladěný příkaz, který mi ručně funguje a normálně probíhá encoding. Momentálně vše pro jistotu testuji jako root, abych vyloučil chybu práv. Ubuntu 20.04 popř. Ubuntu 22.04.

Potíž nastává, pokud chci tu úlohu spouštět skriptem pod system.d.

Zde rozlišuji 2 varianty: Obě varianty testuji nezávisle, v obou mám ale stejný problém. ffmpeg pouštím s -loglevel debug, ale nic moc více mi to neprozradí. Prostě selhává nějaká inicializace CUDA nebo driveru...
...
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]:   Stream #0:4[0x266](cze): Audio: ac3 ([6][0][0][0] / 0x0006), 48000 Hz, 5.1(side), fltp, 384 kb/s
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]:   Stream #0:5[0x268](eng): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 192 kb/s
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]: [AVHWDeviceContext @ 0x563ebae76100] cu->cuInit(0) failed -> CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]: Device creation failed: -542398533.
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]: [h264_cuvid @ 0x563ebab45240] No device available for decoder: device type cuda needed for codec h264_cuvid.
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]: Stream mapping:
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]:   Stream #0:2 -> #0:0 (h264 (h264_cuvid) -> hevc (hevc_nvenc))
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]:   Stream #0:3 -> #0:1 (mp2 (native) -> aac (libfdk_aac))
Jun 16 10:13:56 new ffmpeg-hls-restream_wrapper[696060]: Device setup failed for decoder on input stream #0:2 : Generic error in an external library
Protože se se systemd teprve učím, napadá někoho, čím by to mohlo být? Resp. čím se liší systemd, jestli běží v nějaké izolaci nebo podobně?

Zatím jsem přišel na to, že se mi do toho wrapper skriptu třeba nepřenáší nějaké systémové proměné z /etc/environment, tj. chyběla třeba PATH do /usr/local/cuda, nastavení CUDA_HOME proměnné...

Tak jsem si do skriptu doplnil různé výpisy a nyní už tam nevidím nic moc jinak, než když to spouštím ručně. Tj. spustím z něj třeba korektně nvcc, výpis PATH a CUDA_HOME sedí, ldconfig -p mi ukáže ty potřebné *cuda* knihovny. Prostě vše vypadá jakoby dobře, ale spuštění ffmpegu mi stále selhává, viz výše.

Dochází mi nápady, tak jsem přišel požádat o radu, jestli někoho třeba něco nenapadne. Děkuji. :-)

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (MilanC (tazatel))
16.6.2022 13:04 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: gpu encoding nefunguje přes systemd
Odpovědět | | Sbalit | Link | Blokovat | Admin
Spouštíš to pod stejným uživatelem?
-- OldFrog
16.6.2022 13:25 MilanC | skóre: 16
Rozbalit Rozbalit vše Re: gpu encoding nefunguje přes systemd
No tak teď mě to tedy nahlodalo. Doplnil jsem do wrapper skriptu cosi jako..

echo "user: $USER $GROUP" >> /tmp/wrapper.log who >> /tmp/wrapper.log whoami >> /tmp/wrapper.log

první echo resp. obě proměnné nevrátí nic (skript je bash). who zapíše "root ..." whoami zapíše "ffmpeg"

Ale netuším, proč by se měl pouštět pod ffmpeg userem, jdu hledat dál. Díky.
16.6.2022 13:34 MilanC | skóre: 16
Rozbalit Rozbalit vše Re: gpu encoding nefunguje přes systemd
Tak je to opravdu tím. Děkuji za nakopnutí. Když jsem nahodil práva na /dev/dri/* pro ffmpeg, už to šlape. Akorát nechápu, proč se mi to spouští pod tímto uživatelem, když striktně říkám jako root a žádný ffmpeg user ani v init ani v tom wrapper skriptu není vidět. :o Každopádně děkuji za postrčení si toto ověřit. Musím vypátrat, proč se to jako root nepouští.
16.6.2022 13:22 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: gpu encoding nefunguje přes systemd
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jde o stejny HW jako v predchozim dotazu?

Je Geforce primarni GPU?
16.6.2022 13:23 MilanC | skóre: 16
Rozbalit Rozbalit vše Re: gpu encoding nefunguje přes systemd
ano, vše sedí
16.6.2022 13:34 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: gpu encoding nefunguje přes systemd
Mozna zkusit spustit neco trivialnejsiho k overeni dostupnosti CUDA v danem contextu. https://github.com/NVIDIA/cuda-samples
16.6.2022 13:37 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: gpu encoding nefunguje přes systemd
Je Intel iGPU v BIOSu disablovana? Ucinil bych pokus bez ni, pokud se jede plne na Geforce.
16.6.2022 13:49 MilanC | skóre: 16
Rozbalit Rozbalit vše Re: gpu encoding nefunguje přes systemd
Ono v případe NVENC toto není třeba řešit, ffmpeg si sám detekuje správné device. To jen pokud se využívá VA-API nebo QSV, tak tam je třeba to striktně určit.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.