我正在使用NVIDIA GPU(NVENC)中的硬件编码器进行H264编码。 我得到了正确的输出,但我无法启动超过140个编码流。(一个流执行一个视频编码)
我得到的错误是" NV_ENC_OUT_OF_MEMORY"。错误发生时应用程序的内存使用量远低于可用总量: 600MB(320X240) 2.5GB(640×480) 6GB(1280X710) 在Quadro M5000中超过8GB。
对于比特流分配,NV_ENC_CREATE_BITSTREAM_BUFFER的大小超过单个帧大小,而memoryHeap类型为CACHED。
这是测试机配置: Debian Linux 8.5 英特尔至强E5 @ 2.60 GHz Nvidia Quadro M5000 CUDA 7.5,驱动程序352.39
任何有关解决方案的建议/方向都将受到赞赏。 谢谢你的时间。
答案 0 :(得分:3)
NVENC在GPU中的离散硅IP内核(SIP)块上运行,而不是在GPU的着色器上运行。 该SIP块具有硬编码的限制(在固件中设置),以确保那些需要比人为限制更多的人购买特斯拉级硬件。
NVIDIA的营销攻势。
您可以在此处使用Keylase的nvidia修补程序来覆盖此限制:https://github.com/keylase/nvidia-patch
此外,请参见会话限制:https://developer.nvidia.com/video-encode-decode-gpu-support-matrix