我在使用gpu(cuda)的FFMPEG视频编码中遇到了问题。
我有2x nvidia gtx 1050 ti
当我尝试执行多个并行编码时,问题就会出现。超过两个过程和FFMPEG死亡:
[h264_nvenc @ 0xcc1cc0] OpenEncodeSessionEx failed: out of memory (10)
问题是NVIDIA-SMI表明GPU上有很多可用的资源:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.66 Driver Version: 384.66 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 105... Off | 00000000:41:00.0 Off | N/A |
| 40% 37C P0 42W / 75W | 177MiB / 4038MiB | 30% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 105... Off | 00000000:42:00.0 Off | N/A |
| 40% 21C P8 35W / 75W | 10MiB / 4038MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
第二个GPU似乎根本没有使用,并且第一个GPU在第一个gpu上剩下的内存越多,可以支持第三文件。
任何想法都会非常有帮助!
实际上您的卡是'不合格的'(就NVIDIA而言),并且仅支持2个同时的会话。您可以咨询https://developer.nvidia.com/video-encode-decode-decode-decode-gpu-support-matrix#encoder或下载nvenc SDK,该nvenc sdk包含具有合格和不合格的GPU的PDF。有一些用于禁用会话计数检查的驱动程序的补丁程序,您可以尝试https://github.com/keylase/nvidia-patch
- 由于没有关于如何应用编码上下文的代码,因此我无法说明为什么不使用第二个GPU。您是否在
av_opt_set()
或命令行参数中指定了它? - 这里更重要的问题是,GeForce卡不能在一个系统中拥有超过2个编码会话。如果您需要更多