检查CUDA MPS服务器是否在应用程序运行时打开/关闭?

检查CUDA MPS服务器是否在应用程序运行时打开/关闭?,cuda,nvidia,Cuda,Nvidia,我的问题是,是否可以以某种方式查询MPS服务器,并在应用程序运行时检查它是否在GPU上运行 据我所知,通过使用nvidia smi,可以检查CUDA MPS服务器是否在GPU上运行,但我不确定在应用程序运行时如何使用此系统命令。在应用程序运行时,是否有其他方法可以检查MPS服务器是否在GPU上运行?我找到了一种方法,但如果您认为可能有更好的方法,请分享。不管怎样,这种方法对我很有效 基本上,当MPS控件守护进程启动时,将在/tmp/nvidia MPS/中创建一个名为control的文件,当守护

我的问题是,是否可以以某种方式查询MPS服务器,并在应用程序运行时检查它是否在GPU上运行


据我所知,通过使用nvidia smi,可以检查CUDA MPS服务器是否在GPU上运行,但我不确定在应用程序运行时如何使用此系统命令。在应用程序运行时,是否有其他方法可以检查MPS服务器是否在GPU上运行?

我找到了一种方法,但如果您认为可能有更好的方法,请分享。不管怎样,这种方法对我很有效

基本上,当MPS控件守护进程启动时,将在/tmp/nvidia MPS/中创建一个名为control的文件,当守护进程退出时,该文件将不再存在

我使用该函数检查/tmp/nvidia mps/control文件是否存在

代码如下:

#include <unistd.h>
#include <stdio.h>


int main()
{
    int result;
    const char *filename = "/tmp/nvidia-mps/control"; // only available if nvidia-cuda-mps-control daemon is running
    result = access (filename, F_OK); // F_OK tests existence also (R_OK,W_OK,X_OK).
                                      //            for readable, writeable, executable
    if (result == 0)
    {
       printf("%s MPS demon is running!!\n",filename);
    }
    else
    {
       printf("%s MPS demon doesn't exist!\n",filename);
    }
    return 0;
}
# gcc mps-checker.c -o mps-status
# nvidia-cuda-mps-control -d
# ./mps-status
/tmp/nvidia-mps/control MPS demon is running!!
# echo quit | nvidia-cuda-mps-control
# ./mps-status
/tmp/nvidia-mps/control MPS demon doesn't exist!