This patch removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.
Main target operating system is GNU/Linux, but for experimental Windows support see win.
Requirements:
- x86_64 system architecture
- ubuntu (< 18.04 for 375.39 nvidia driver or kernel < 4.15). Also known to work on Debian and CentOS, but not tested widely.
- nvenc-compatible gpu (https://developer.nvidia.com/video-encode-decode-gpu-support-matrix#Encoder)
- Nvidia driver. Patch availible for:
Tested on Ubuntu 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64)
# bash ./patch.sh -h
SYNOPSIS
patch.sh [OPTION]...
DESCRIPTION
The patch for Nvidia drivers to increase encoder sessions
-s Silent mode (No output)
-r Rollback to original (Restore lib from backup)
-h Print this help message
Examples are provided for driver version 410.78. All commands are runned as root.
https://download.nvidia.com/XFree86/Linux-x86_64/410.78/NVIDIA-Linux-x86_64-410.78.run
mkdir /opt/nvidia && cd /opt/nvidia
wget https://download.nvidia.com/XFree86/Linux-x86_64/410.78/NVIDIA-Linux-x86_64-410.78.run
chmod +x ./NVIDIA-Linux-x86_64-410.78.run
./NVIDIA-Linux-x86_64-410.78.run
nvidia-smi
Output should show no errors and details about your driver and GPU.
This patch performs backup of original file prior to making changes.
bash ./patch.sh
You're all set!
If something got broken you may restore patched driver from backup:
bash ./patch.sh -r
If you experience CreateBitstreamBuffer failed: out of memory (10)
, then you have to lower buffers number used for every encoding session. If you are using ffmpeg
, see option -surfaces
("Number of concurrent surfaces") and try value near -surfaces 8
.