我的问题是,是否可能在应用程序运行时查询MPS服务器并检查其是否在GPU上运行?
据我所知,使用nvidia-smi可以检查CUDA MPS服务器是否在GPU上运行,但我不确定如何在应用程序运行期间使用此系统命令。在应用程序运行时,是否有其他方法可以检查MPS服务器是否在GPU上运行?
#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!
CUDA_MPS_PIPE_DIRECTORY
是否已定义,在这种情况下寻找$CUDA_MPS_PIPE_DIRECTORY/control
。 - fwyzard