Coder Social home page Coder Social logo

frank840306 / nvidia-patch Goto Github PK

View Code? Open in Web Editor NEW

This project forked from snawoot/nvidia-patch

0.0 1.0 0.0 2.08 MB

This patch removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.

Shell 28.55% Python 58.53% Dockerfile 0.24% C 4.55% Assembly 0.72% C++ 4.28% HTML 3.14%

nvidia-patch's Introduction

NVENC and NvFBC patches for Nvidia drivers

GitHub last commit Latest version

NVENC patch removes restriction on maximum number of simultaneous NVENC video encoding sessions imposed by Nvidia to consumer-grade GPUs.

NvFBC patch allows to use NvFBC on consumer-grade GPUs. It should be applied same way as NVENC patch.sh, except you have to use patch-fbc.sh instead.

Main target operating system is GNU/Linux, but for Windows support see win (clickable).


Project is looking for a maintainer.


Mirrors

IPFS site mirror: https://ipfs.io/ipns/QmYTEwv2GjQhtdN9bDfpLfQrVD7YLb1Sbh8igX8cEe9hHF/

IPFS git mirror:

git clone https://ipfs.io/ipns/Qmed4r8yrBP162WK1ybd1DJWhLUi4t6mGuBoB9fLtjxR7u nvidia-patch

Requirements

Version Table

Version NVENC patch NVFBC patch Driver link
375.39 YES NO Driver link
390.77 YES NO Driver link
390.87 YES NO Driver link
396.24 YES NO Driver link
396.26 YES NO Driver link
396.37 YES NO Driver link
396.54 YES NO Driver link
410.48 YES NO
410.57 YES NO Driver link
410.73 YES NO Driver link
410.78 YES NO Driver link
410.79 YES NO Driver link
410.93 YES NO Driver link
410.104 YES NO Driver link
415.18 YES NO Driver link
415.25 YES NO Driver link
415.27 YES NO Driver link
418.30 YES NO Driver link
418.43 YES NO Driver link
418.56 YES NO Driver link
418.67 YES NO Driver link
418.74 YES NO Driver link
418.87.00 YES NO Driver link
418.87.01 YES NO Driver link
418.88 YES NO Driver link
418.113 YES NO Driver link
430.09 YES NO Driver link
430.14 YES NO Driver link
430.26 YES NO Driver link
430.34 YES NO Driver link
430.40 YES NO Driver link
430.50 YES NO Driver link
430.64 YES NO Driver link
435.17 YES NO Driver link
435.21 YES NO Driver link
435.27.08 YES YES
440.26 YES YES Driver link
440.31 YES YES Driver link
440.33.01 YES YES Driver link
440.36 YES YES Driver link
440.43.01 YES YES
440.44 YES YES Driver link
440.48.02 YES YES
440.58.01 YES YES
440.58.02 YES YES
440.59 YES YES Driver link
440.64 YES YES Driver link
440.64.00 YES YES Driver link
440.66.02 YES YES
440.66.03 YES YES
440.66.04 YES YES
440.66.08 YES YES
440.66.09 YES YES
440.66.11 YES YES
440.66.12 YES YES
440.66.14 YES YES
440.66.15 YES YES
440.66.17 YES YES
440.82 YES YES Driver link
440.95.01 YES YES Driver link
440.100 YES YES Driver link
440.118.02 YES YES Driver link
450.36.06 YES YES Driver link
450.51 YES YES Driver link
450.51.05 YES YES Driver link
450.51.06 YES YES Driver link
450.56.01 YES YES
450.56.02 YES YES
450.56.06 YES YES
450.56.11 YES YES
450.57 YES YES Driver link
450.66 YES YES Driver link
450.80.02 YES YES Driver link
450.102.04 YES NO Driver link
455.22.04 YES NO
455.23.04 YES YES Driver link
455.23.05 YES YES
455.26.01 YES YES
455.26.02 YES YES
455.28 YES YES Driver link
455.32.00 YES YES
455.38 YES YES Driver link
455.45.01 YES YES Driver link
455.46.01 YES YES
455.46.02 YES YES
455.46.04 YES YES
455.50.02 YES YES
455.50.03 NO YES
455.50.04 YES YES
455.50.05 YES YES
455.50.07 YES YES
455.50.10 YES YES
460.27.04 YES YES Driver link
460.32.03 YES YES Driver link
460.39 YES YES Driver link
460.56 YES YES Driver link
460.67 YES YES Driver link
460.73.01 YES YES Driver link
460.80 YES YES Driver link
460.84 YES YES Driver link
460.91.03 YES YES Driver link
465.19.01 YES YES Driver link
465.24.02 YES YES Driver link
465.27 YES YES Driver link
465.31 YES YES Driver link
470.42.01 YES YES Driver link
470.57.02 YES YES Driver link
470.62.02 YES YES
470.62.05 YES YES
470.63.01 YES YES Driver link
470.74 YES YES Driver link
470.82.00 YES YES Driver link
495.29.05 YES YES Driver link
495.44 YES YES Driver link

Synopsis

# bash ./patch.sh -h

SYNOPSIS
       patch.sh [-s] [-r|-h|-c VERSION|-l|-f]

DESCRIPTION
       The patch for Nvidia drivers to remove NVENC session limit

       -s             Silent mode (No output)
       -r             Rollback to original (Restore lib from backup)
       -h             Print this help message
       -c VERSION     Check if version VERSION supported by this patch.
                      Returns true exit code (0) if version is supported.
       -l             List supported driver versions
       -d VERSION     Use VERSION driver version when looking for libraries
                      instead of using nvidia-smi to detect it.
       -f             Enable support for Flatpak NVIDIA drivers.

# bash ./patch-fbc.sh -h

SYNOPSIS
       patch-fbc.sh [-s] [-r|-h|-c VERSION|-l|-f]

DESCRIPTION
       The patch for Nvidia drivers to allow FBC on consumer devices

       -s             Silent mode (No output)
       -r             Rollback to original (Restore lib from backup)
       -h             Print this help message
       -c VERSION     Check if version VERSION supported by this patch.
                      Returns true exit code (0) if version is supported.
       -l             List supported driver versions
       -d VERSION     Use VERSION driver version when looking for libraries
                      instead of using nvidia-smi to detect it.
       -f             Enable support for Flatpak NVIDIA drivers.

Step-by-Step guide

Examples are provided for driver version 430.50. All commands are executed as root.

Download and install driver

Skip this step if you already have installed driver with version supported by this patch (from distro packages, for example).

Make sure you have kernel headers and compiler installed before running Nvidia driver installer. Kernel headers and compiler are required to build nvidia kernel module. Recommended way to do this is to install dkms package, if it is available in your distro. This way dkms package will pull all required dependencies to allow building kernel modules and kernel module builds will be automated in a reliable fashion.

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

Flatpak support

If you use a Flatpak app that uses NVENC/NvFBC (e.g. OBS Studio, Kdenlive), it's recommended that you patch the NVIDIA drivers for Flatpak as well. To do so, just pass the -f parameter to either patch.sh or patch-fbc.sh, like so:

bash ./patch.sh -f
bash ./patch-fbc.sh -f

In case something goes wrong, you can restore the original Flatpak drivers by adding the -r paramater:

bash ./patch.sh -f -r
bash ./patch-fbc.sh -f -r

Benchmarks

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.

nvidia-patch's People

Contributors

3po avatar bigexxx avatar carlosmuller avatar cmdrdatux avatar daedalusspacegames avatar emileet avatar feffes avatar felikcat avatar guihkx avatar havlasme avatar helldweller avatar ilyaevseev avatar jailuthra avatar justcryen avatar keylase avatar leillo1975 avatar mpxc avatar nixta1 avatar parker-stephens avatar snawoot avatar snoop05 avatar vblftepebwni6c avatar vdv avatar vojtad avatar xenago avatar yangab avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.