问题标签 [multi-process-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
513 浏览

cuda - 如何减少 CUDA 上下文大小(多进程服务)

我按照 Robert Crovella 的示例介绍了如何使用 Nvidia 的Multi-Process Service。根据文档

2.1.2. 减少 GPU 上的上下文存储

如果没有 MPS,每个使用 GPU 的 CUDA 进程都会在 GPU 上分配单独的存储和调度资源。相比之下,MPS 服务器分配一份由所有客户端共享的 GPU 存储和调度资源。

我理解为减少每个进程的上下文大小,这是可能的,因为它们是共享的。这将增加可用的 GPU 内存,从而能够并行运行更多进程。

现在,回到示例。没有 MPS:

MPS 禁用

使用 MPS:

启用 MPS

不幸的是,每个进程仍然占用几乎相同 (~300MB) 的内存量。这与文档不矛盾吗?有没有办法减少每个进程的内存消耗?

0 投票
1 回答
54 浏览

tensorflow - 使用 MPS 进行细粒度内核调度

我正在使用NVIDIA CUDA 多进程服务 (MPS)使用同一 GPU 运行多个 TensorFlow 推理作业。对于我的用例,当 GPU 被多个进程共享时,我有时需要优先执行一个进程的内核而不是另一个。这支持吗?

为了更详细地解释这个问题,考虑一个示例,其中我们有两个进程 p1 和 p2(每个进程只有一个内核执行流)共享一个 GPU。

场景:当 p1 和 p2 的就绪队列中有一个或多个内核时。

默认 MPS 行为(我的理解):

如果有足够的资源,从 p1 和 p2 同时执行多个内核。

期望的行为: 能够根据优先级做出决定,如果:

  • 先执行 p1 的内核,然后执行 p2。
  • 先执行 p2 的内核,然后执行 p1。
  • 如果有足够的资源,从 p1 和 p2 同时执行多个内核。

如果不支持这种自定义调度,如果有人可以指导需要哪些代码更改才能使其工作,那就太好了。