I'm running DVA3221 with a Nvidia 1050 Ti graphics card. I'm on DSM 7.2-64570 Update 1.
My goal is to have Plex hardware transcoding within docker. Hardware transcoding without docker in the Synology Plex app works. It wasn't easy, but it's working. A piece I was missing was installing the NVIDIA Runtime Library from Package Center. I didn't see that mentioned anywhere in any instructions.
My drivers are loaded properly on the NAS:
root@nas:/volume1/docker/appdata# nvidia-smi
Sat Sep 2 11:26:23 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.44 Driver Version: 440.44 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 105... On | 00000000:01:00.0 Off | N/A |
| 30% 30C P8 N/A / 75W | 0MiB / 4039MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
I believe I have successfully exposed the GPU to my Plex docker. Confirming by running nvidia-smi from within the docker:
root@nas:/volume1/docker/appdata# docker exec plex nvidia-smi
Sat Sep 2 11:26:30 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.44 Driver Version: 440.44 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 105... On | 00000000:01:00.0 Off | N/A |
| 30% 30C P8 N/A / 75W | 0MiB / 4039MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
I accomplished this by copying over the files necessary for the Nvidia-container-runtime as outlined on this post. Maybe some of these files don't work on 7.2?
However, Plex hardware transcoding does not work. I get the following in my Plex logs:
DEBUG - [Req#583/Transcode] Codecs: testing h264_nvenc (encoder)
DEBUG - [Req#583/Transcode] Codecs: hardware transcoding: testing API nvenc for device '' ()
ERROR - [Req#583/Transcode] [FFMPEG] - Cannot load libcuda.so.1
ERROR - [Req#583/Transcode] [FFMPEG] - Could not dynamically load CUDA
DEBUG - [Req#583/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: Operation not permitted
DEBUG - [Req#583/Transcode] Could not create hardware context for h264_nvenc
DEBUG - [Req#583/Transcode] Codecs: testing h264 (decoder) with hwdevice vaapi
DEBUG - [Req#583/Transcode] Codecs: hardware transcoding: testing API vaapi for device '' ()
DEBUG - [Req#583/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: Generic error in an
DEBUG - [Req#583/Transcode] Could not create hardware context for h264
DEBUG - [Req#583/Transcode] Codecs: testing h264 (decoder) with hwdevice nvdec
DEBUG - [Req#583/Transcode] Codecs: hardware transcoding: testing API nvdec for device '' ()
ERROR - [Req#583/Transcode] [FFMPEG] - Cannot load libcuda.so.1
ERROR - [Req#583/Transcode] [FFMPEG] - Could not dynamically load CUDA
DEBUG - [Req#583/Transcode] Codecs: hardware transcoding: opening hw device failed - probably not supported by this system, error: Operation not permitted
DEBUG - [Req#583/Transcode] Could not create hardware context for h264
Since native Plex works, the following emby-ffmpeg command also works:
/volume1/\@appstore/EmbyServer/bin/emby-ffmpeg -i source.mp4 -c:v h264_nvenc -b:v 1000k -c:a copy destination.mp4
Any ideas on what could be wrong?
Thanks!