751ba18c0d
win: revamp readme file |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
tools/nv-driver-locator | ||
win | ||
FFMPEG-with-NVIDIA-Acceleration-on-Ubuntu_UG_v01.pdf | ||
patch.sh | ||
PULL_REQUEST_TEMPLATE.md | ||
README.md |
nvidia-patch
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 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 available for:
Tested on Ubuntu 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64)
Synopsis
# 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
Step-by-Step guide
Examples are provided for driver version 410.78. All commands are runned as root.
Download driver
https://download.nvidia.com/XFree86/Linux-x86_64/410.78/NVIDIA-Linux-x86_64-410.78.run
Install driver
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
Check driver
nvidia-smi
Output should show no errors and details about your driver and GPU.
Patch driver
This patch performs backup of original file prior to making changes.
bash ./patch.sh
You're all set!
Rollback
If something got broken you may restore patched driver from backup:
bash ./patch.sh -r
See also
- Plex Media Server: enable HW decoding:
- Unraid / Docker:
- GH Issue
- Unraid Nvidia plugin:
- Original research behind this patch (in Russian)
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
.