在多GPU的Linux系统中,如何判断哪个GPU运行X11,哪个完全免费运行CUDA内核?在具有低功率 GPU 运行 X11 和更高功率 GPU 运行内核的系统中,这可以通过一些试探法来确定以使用更快的卡。但是在有两张相同卡的系统上,不能使用这种方法。是否有 CUDA 和/或 X11 API 来确定这一点?
更新:命令“nvidia-smi -a”显示“显示器”是否已连接。我还没有确定这是否意味着物理连接、逻辑连接(运行 X11)或两者。在此命令上运行 strace 显示调用了很多 ioctl 而没有调用 X11,因此假设该卡报告显示器已物理连接。
最佳答案
在 cudaDeviceProp
结构中有一个设备属性 kernelExecTimeoutEnabled
,它将指示设备是否受制于显示看门狗定时器。这是判断给定 CUDA 设备是否运行 X11(或等效的 Windows/Mac OS)的最佳指标。
在 PyCUDA 中,您可以像这样查询设备状态:
In [1]: from pycuda import driver as drv
In [2]: drv.init()
In [3]: print drv.Device(0).get_attribute(drv.device_attribute.KERNEL_EXEC_TIMEOUT)
1
In [4]: print drv.Device(1).get_attribute(drv.device_attribute.KERNEL_EXEC_TIMEOUT)
0
此处设备 0 连接了显示器,设备 1 是专用计算设备。
关于linux - CUDA/PyCUDA : Which GPU is running X11?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6428945/