You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Vladislav Yarmak 389235cd92 dockerfile: add some reasonable ENV defaults 5 years ago
.github/ISSUE_TEMPLATE reorder issue templates 5 years ago
tools/nv-driver-locator ndl: add request meta into response object 5 years ago
win win10: new version 431.36 5 years ago
.gitmodules win: pin latest stable patcher utility 5 years ago
Dockerfile dockerfile: add some reasonable ENV defaults 5 years ago
FFMPEG-with-NVIDIA-Acceleration-on-Ubuntu_UG_v01.pdf add doc 8 years ago
PULL_REQUEST_TEMPLATE.md Add PR template 5 years ago
README.md docs: docker support 5 years ago
docker-entrypoint.sh docker-entrypoint: do not symlink if there is already one; force if there is not 5 years ago
patch.sh patch.sh: add custom output dir; get rid of `which` binary dependency 5 years ago

README.md

nvidia-patch

GitHub last commit Latest version

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:

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 430.34. All commands are runned as root.

Download driver

https://international.download.nvidia.com/XFree86/Linux-x86_64/430.34/NVIDIA-Linux-x86_64-430.34.run

Install driver

mkdir /opt/nvidia && cd /opt/nvidia
wget https://international.download.nvidia.com/XFree86/Linux-x86_64/430.34/NVIDIA-Linux-x86_64-430.34.run
chmod +x ./NVIDIA-Linux-x86_64-430.34.run
./NVIDIA-Linux-x86_64-430.34.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

Docker support

It is possible to use this patch with nvidia-docker containers, even if host machine hasn't patched drivers. See Dockerfile for example.

Essentially all you need to do during build is:

  • COPY the patch.sh and docker-entrypoint.sh files into your container.
  • Make sure docker-entrypoint.sh is invoked on container start.

docker-entrypoint.sh script does on-the-fly patching by means of manipulating dynamic linker to workaround read-only mount of Nvidia runtime. Finally it passes original docker command to shell, like if entrypoint was not restricted by ENTRYPOINT directive. So docker run --runtime=nvidia -it mycontainer echo 123 will print 123. Also it can be just invoked from your entrypoint script, if you have any.

See also

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.