cuda-gdb只能从四个支持CUDA的设备中看到一个功能最少的设备

时间:2012-01-11 12:01:27

标签: cuda gpgpu cuda-gdb

有四种支持CUDA的设备:

teslabot$ ./deviceQuery | grep -i "device [0-9]\|capability"
Device 0: "Tesla C2050 / C2070"
  CUDA Capability Major/Minor version number:    2.0
Device 1: "Tesla C2050 / C2070"
  CUDA Capability Major/Minor version number:    2.0
Device 2: "GeForce GTX 295"
  CUDA Capability Major/Minor version number:    1.3
Device 3: "GeForce GTX 295"
  CUDA Capability Major/Minor version number:    1.3

cuda-dbg只看到其中一个:

teslabot$ cuda-gdb vector_add
NVIDIA (R) CUDA Debugger
4.0 release
Portions Copyright (C) 2007-2011 NVIDIA Corporation
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
[...]
(cuda-gdb) break vector_add_gpu
Breakpoint 1 at 0x400ddb: file vector_add.cu, line 7.
(cuda-gdb) run
[...]
(cuda-gdb) info cuda devices
  Dev Description SM Type SMs Warps/SM Lanes/Warp Max Regs/Lane Active SMs Mask
*   0       gt200   sm_13  30       32         32           128 0x00000001

我已经检查了使用-gencode arch=compute_20,code=sm_20编译的代码构建,并且在所述机器上没有错误,并且在为sm_20编译时,然后在CUDA内核中使用printf正常工作。

如何让cuda-gdb看到所有设备(可能除了用于图形的设备...虽然在上述情况下我通过SSH远程记录),或者至少有一个Tesla / sm_20设备?


通过将CUDA_VISIBLE_DEVICES环境变量设置为仅包含“0,1”(即只显示Teslas)来跟踪Michael Foukarakis response中的建议时,运行info cuda devices后出现以下错误:

(cuda-gdb) info cuda devices
fatal:  All CUDA devices are used for X11 and cannot be used while debugging. (error code = 24)

如何检查X11(X.Org)使用的设备,以及如何使X Window系统使用GeForce而不是特斯拉?

1 个答案:

答案 0 :(得分:2)

您能否确保CUDA_VISIBLE_DEVICES环境变量包含您要使用的所有设备,例如:

$ ./deviceQuery -noprompt | egrep "^Device"
Device 0: "Tesla C2050"
Device 1: "Tesla C1060"
Device 2: "Quadro FX 3800"

通过设置变量,您只能使它们的一部分对运行时可见:

$ export CUDA_VISIBLE_DEVICES="0,2"
$ ./deviceQuery -noprompt | egrep "^Device"
Device 0: "Tesla C2050"
Device 1: "Quadro FX 3800"