I use AppEncCuda, a encoder sample code from Video_Codec_SDK_9.0.20, and found that the max number of encoder threads is 2.
and when I create 3 encoder threads, it crashed in NvEncoder.cpp:
someone can help me?
This is “normal” (NVidia SDK API limit) if you have GTX or non-qualified Quadro - see https://developer.nvidia.com/video-encode-decode-gpu-support-matrix (Max # of concurrent sessions).
thanks a lot,your answer fix my problem.
One similar question. If I have two GeForce GTX 1070 graphics cards, still I cannot encode more than 2 video stream simultaneously (see https://github.com/hoene/NvPipe/blob/parallel-is-failing/examples/parallel.cpp)
For me it is unclear, why the limit is only 2. It should be 2x2.
- NVENC LICENSING POLICY
There is no change in licensing policy in the current SDK in comparison to the earlier SDKs. The licensing policy is as follows:
As far as NVENC hardware encoding is concerned, NVIDIA GPUs are classified into two categories: “qualified” and “non-qualified”. On qualified GPUs, the number of concurrent encode sessions is limited by available system resources (encoder capacity, system memory, video memory etc.). On non-qualified GPUs, the number of concurrent encode sessions is limited to 2 per system. This limit of 2 concurrent sessions per system applies to the combined number of encoding sessions executed on all non-qualified cards present in the system.
For a complete list of qualified and non-qualified GPUs, refer to https://developer.nvidia.com/nvidia-video-codec-sdk.
For example, on a system with one Quadro K4000 card (which is a qualified GPU) and three GeForce cards (which are non-qualified GPUs), the application can run N simultaneous encode sessions on Quadro K4000 card (where N is defined by the encoder/memory/hardware limitations) and two sessions on all the three GeForce cards combined. Thus, the limit on the number of simultaneous encode sessions for such a system is N + 2.
Thanks for the fast answer