MPS
NVIDIA 多进程服务( MPS )是一种使多个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
父主题: 多GPU优化