NVIDIA-MPS中如何控制每个客户端的资源
Posted
技术标签:
【中文标题】NVIDIA-MPS中如何控制每个客户端的资源【英文标题】:How to control the resource of each client in NVIDIA-MPS 【发布时间】:2021-11-30 13:06:22 【问题描述】:在 nvidia-mps 中,我们通过运行 sudo nvidia-cuda-mps-control -d
来启动 mps-server,我有两个问题。
【问题讨论】:
【参考方案1】:CUDA MPS 文档会回答很多这样的问题。
当我在同一台服务器上有多个 GPU 时,如何指定运行 mps-server 的 GPU。
根据CUDA MPS doc 的第 2.3.4 节,当 MPS 服务器启动时,visible(通过 CUDA_VISIBLE_DEVICES
)的 GPU 将确定它将使用哪些 GPU:
2.3.4. MPS on Multi-GPU Systems
The MPS server supports using multiple GPUs. On systems with more than one GPU,
you can use CUDA_VISIBLE_DEVICES to enumerate the GPUs you would like to use.
See section 4.2 for more details.
当我有多个并发进程时,如何控制分配给每个 mps 客户端的资源(例如计算和内存)?
在同一个文档的第 2.3.5.2 节中,为每个进程分配计算的主要方法是通过设置环境变量 CUDA_MPS_ACTIVE_THREAD_PERCENTAGE
。当进程开始并初始化 CUDA 运行时或驱动程序 API 时,此环境变量的设置将确定其可用计算资源 (SM),以百分比表示。如果您有多个 GPU,它将是您的应用程序使用cudaSetDevice()
或类似名称选择的 GPU 上 SM 资源的百分比。
MPS 目前不提供按进程分配/分区的机制。
编辑:更新 - 2021 年 10 月 20 日公开发布的 CUDA 11.5 添加了 new feature,允许 MPS 中的每个客户端内存限制。
【讨论】:
以上是关于NVIDIA-MPS中如何控制每个客户端的资源的主要内容,如果未能解决你的问题,请参考以下文章