---
title: MPS
description: "NVIDIA 多进程服务（ MPS ）(https://docs.nvidia.com/deploy/mps/index.html)是一种使多个CPU进程提交的计算内核能够在同一GPU上同时执行的工具。这种重叠可能实现更彻底的资源使用和更好的总体吞吐量。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/gputuing-wp/kunpenggpu_19_0034.html
sourcePath: /source/zh/perftuning/gputuing-wp/kunpenggpu_19_0034.html
indexId: b5767de091c07fd5cd1bf9eac1dfe341c73930115f42463e30662a3b448f192757
---
# MPS

NVIDIA 多进程服务（ MPS ）(https://docs.nvidia.com/deploy/mps/index.html)是一种使多个CPU进程提交的计算内核能够在同一GPU上同时执行的工具。这种重叠可能实现更彻底的资源使用和更好的总体吞吐量。

使用MPS还可以通过更有效地重叠硬件资源利用率和更好地利用基于CPU的并行性，在多个GPU之间实现应用程序的强大扩展。

建议在应用启动的时候开启，应用运行结束就关闭，因为有的应用没用到这个特性，开启了反而有负效果。推荐运行脚本如下。

```
readonly procs_per_gpu=${GPU_WORKERS:-2}
readonly host_mps=${HOST_MPS:-}
if (( procs_per_gpu > 1 )) && [[ -z "${host_mps}" ]]; then
export CUDA_MPS_PIPE_DIRECTORY="${PWD}/.mps"
export CUDA_MPS_LOG_DIRECTORY="${PWD}/.mps"
if ! nvidia-cuda-mps-control -d; then
echo "ERROR: Failed to start MPS daemon. Please resolve issue or set GPU_WORKERS to 1"
exit 1
fi
echo "INFO: MPS server daemon started"
trap "echo quit | nvidia-cuda-mps-control" EXIT
fi
```
