我在使用GPU(CUDA)进行ffmpeg视频编码时出现问题。
我有2x nVidia GTX 1050 Ti
当我尝试进行多个并行编码时出现问题。超过2个进程和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上剩余的内存足够多,以支持第三个文件。
任何想法都会非常有用!
答案 0 :(得分:2)
if currentNode.isRightChild() and currentNode.parent.isLeftChild():
self.rotateLeft(currentNode.parent)
self.rotateRight(currentNode.parent.parent) // Here
elif currentNode.isLeftChild() and currentNode.parent.isRightChild():
self.rotateRight(currentNode.parent)
self.rotateLeft(currentNode.parent.parent) // Here
或命令行参数中指定使用它? 答案 1 :(得分:2)
实际上您的卡是“不合格的”(就NVIDIA而言)并且仅支持2个同时会话。您可以咨询https://developer.nvidia.com/video-encode-decode-gpu-support-matrix#Encoder或下载NVENC SDK,其中包含带有合格和非合格GPU许可条款的pdf。有一些驱动程序补丁(375.39和396.24,对于linux)禁用会话计数检查,你可以试试https://github.com/keylase/nvidia-patch