我所在的系统具有多个NVIDIA GPU。它们中的一个或多个可能用于驱动物理监视器,也可能不用于。在我的计算工作中,我想避免使用那个(或多个(。
如何通过编程检查哪些GPU用于显示?
如果没有可靠的方法,我会满足于获得Xorg进程使用的GPU(这就是nvidia-smi
在命令行上给我的(
如果您想要使用相同的进程,您可以检查NVML API函数nvmlDeviceGetDisplayActive
和nvmlDeviceGetDisplayMode
。具体而言,
nvmlReturn_t nvmlDeviceGetDisplayMode ( nvmlDevice_t device, nvmlEnableState_t* display )
可用于检测物理显示器是否连接到设备nvmlReturn_t nvmlDeviceGetDisplayActive ( nvmlDevice_t device, nvmlEnableState_t* isActive )
可用于检查X服务器是否连接到设备,X服务器可能正在运行,而没有连接物理显示器
文档链接
在终端上尝试以下操作
nvidia-smi --format=csv --query-gpu=index,display_mode,display_active
有关更多信息,请查看nvidia-smi文档和nvidia-smi --help-query-gpu