【发布时间】:2013-08-02 10:12:57
【问题描述】:
我需要确定给定的 CUDA 设备是否连接了显示器。我知道没有 CUDA 函数可以做到这一点。
在 Windows 上,我可以使用 NVAPI 来获取连接的显示器数量和每个设备的 PCI 总线/插槽 ID。使用后者,我可以找到匹配的 CUDA 设备(通过调用 cudaGetDeviceProperties)。
我怎样才能在没有 NVAPI 的 Linux 上做同样的事情?
从技术上讲,我需要的是以下代码的 Linux 替代方案:
NvAPI_Initialize();
NvPhysicalGpuHandle gpuHandles[64];
NvU32 numOfGPUs;
NvAPI_EnumPhysicalGPUs(gpuHandles, &numOfGPUs);
for (int i = 0; i < numOfGPUs; i++)
{
NvU32 connected_displays = 0;
NvU32 busId = 0;
NvU32 busSlotId = 0;
NvAPI_GPU_GetConnectedDisplayIds(gpuHandles[i], NULL, &connected_displays, NULL);
NvAPI_GPU_GetBusId(gpuHandles[i], &busId);
NvAPI_GPU_GetBusSlotId(gpuHandles[i], &busSlotId);
printf("Current device: %d\n", i);
printf("Number of connected displays: %u\n", connected_displays);
printf("Bus id: %u\tBus slot id: %u\n", busId, busSlotId);
}
NvAPI_Unload();
【问题讨论】:
-
也许使用
lsof命令。或者/proc/下的一些深层次的东西。 -
你能用 cuda 检测 monito 是否打开/关闭吗?所以基本上当你有 id 时,你可能会调用另一个函数......!?
-
@Laszlo-AndrasZsurzsa 我认为这与 cuda 或 GPU 无关。
-
我同意我正在寻找解决此问题的软件。
标签: linux cuda gpu nvidia nvapi