is there limit for multi-thread encoder?

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:
NVENC_API_CALL(m_nvenc.nvEncOpenEncodeSessionEx(&encodeSessionExParams, &hEncoder));
someone can help me?


This is “normal” (NVidia SDK API limit) if you have GTX or non-qualified Quadro - see (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

For me it is unclear, why the limit is only 2. It should be 2x2.


    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
    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