【发布时间】:2020-04-12 03:54:45
【问题描述】:
我关注了 Robert Crovella 的 example,了解如何使用 Nvidia 的 Multi-Process Service。根据docs:
2.1.2。 减少 GPU 上的上下文存储
如果没有 MPS,每个使用 GPU 的 CUDA 进程都会分配单独的存储空间 在 GPU 上调度资源。相比之下,MPS 服务器 分配一份GPU存储和调度资源共享 它的所有客户。
我理解为减少每个进程的上下文大小,这是可能的,因为它们是共享的。这将增加可用的 GPU 内存,从而能够并行运行更多进程。
现在,回到示例。没有 MPS:
还有 MPS:
不幸的是,每个进程仍然占用几乎相同 (~300MB) 的内存量。这与文档不矛盾吗?有没有办法减少每个进程的内存消耗?
【问题讨论】:
-
从您链接的文档中,在您引用的句子之后:“Volta MPS 支持 MPS 客户端之间增加的隔离,因此资源减少的程度要小得多。”
-
@tera 糟糕,我对这句话的关注太少了……你知道这种孤立的原因吗?安全吗?
-
您在主机系统上拥有访问权限和单独的地址空间的相同原因 - 您不希望 CUDA 代码返回错误结果或您的 GUI 只是因为碰巧运行了一些其他代码同时写入一个流浪指针。
标签: cuda gpu gpgpu cuda-context multi-process-service