哪个Nvidia GPU正在渲染显示器?(SUSE)



在具有多个GPU的SUSE机器中,是否可以通过编程快速判断哪些GPU正在渲染显示?

目标是自动检测可用于调试的卡。

(不能在呈现显示的卡上使用cuda-gdb,猜测是……不雅的。)

非程序化,您可以使用NVIDIA控制面板(如果您为GPU加载了正确的NVIDIA-linux驱动程序,则您应该能够在终端执行nvidia-settings以启动控制面板)来确定连接了哪个GPU和/或渲染到哪个显示器。

从程序上讲,它有点复杂,因为您必须(以程序方式)定义"显示"的含义。但作为一个示例,如果您只有一个显示器(因此不会混淆您心目中的是哪一个),则可以使用NVIDIA-settings所基于的NVIDIA API(NVCtrl)以编程方式获取信息。

使用CUDA 5.5,您可以在渲染显示器的GPU上使用CUDA gdb,但它需要cc 3.5或更好的GPU和一些额外的设置。

我想另一种方法(可能是最简单的编程方法)是使用NVML函数nvmlDeviceGetDisplayMode

NVML是nvidia-smi实用程序的api。因此,您也可以手动查询设备的显示模式。

由于您已经进行了编辑以指示编程方法,我认为我推荐的第一种方法是NVML方法。如果没有其他选择标准,只需循环浏览GPU,直到找到一个禁用显示模式的GPU。如果您想确保某个特定GPU的显示模式被禁用,请确保将其从特定发行版的X配置中排除(例如,确保在许多linux发行版的xorg.conf中没有引用它)

最新更新