使用 MPS 的细粒度内核调度
Fine grained Kernel scheduling with MPS
我正在使用 NVIDIA CUDA Multi Process Service (MPS) 为 运行 多个使用相同 GPU 的 TensorFlow 推理作业。对于我的用例,当 GPU 被多个进程共享时,我有时需要优先执行一个进程的内核。支持吗?
为了更详细地解释问题,请考虑一个示例,其中我们有两个进程 p1 和 p2(每个进程只有一个内核执行流)共享一个 GPU。
场景:当p1和p2的就绪队列中都有一个或多个内核时。
默认 MPS 行为(我的理解):
如果有足够的资源,同时从p1和p2执行多个内核。
期望的行为:
能够根据优先级做出决定,如果:
- 先执行p1内核再执行p2
- 先执行p2内核再执行p1
- 如果有足够的资源,同时从 p1 和 p2 执行多个内核。
如果不支持这种自定义调度,如果有人可以指导需要更改哪些代码才能使其工作,那就太好了。
I sometimes need to prioritize execution of kernels of one process over the other. Is this supported?
不,不是。
我正在使用 NVIDIA CUDA Multi Process Service (MPS) 为 运行 多个使用相同 GPU 的 TensorFlow 推理作业。对于我的用例,当 GPU 被多个进程共享时,我有时需要优先执行一个进程的内核。支持吗?
为了更详细地解释问题,请考虑一个示例,其中我们有两个进程 p1 和 p2(每个进程只有一个内核执行流)共享一个 GPU。
场景:当p1和p2的就绪队列中都有一个或多个内核时。
默认 MPS 行为(我的理解):
如果有足够的资源,同时从p1和p2执行多个内核。
期望的行为: 能够根据优先级做出决定,如果:
- 先执行p1内核再执行p2
- 先执行p2内核再执行p1
- 如果有足够的资源,同时从 p1 和 p2 执行多个内核。
如果不支持这种自定义调度,如果有人可以指导需要更改哪些代码才能使其工作,那就太好了。
I sometimes need to prioritize execution of kernels of one process over the other. Is this supported?
不,不是。