【发布时间】:2012-02-07 18:51:46
【问题描述】:
有四种支持 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 设备?
在Michael Foukarakis response 中通过将CUDA_VISIBLE_DEVICES 环境变量设置为仅包含“0,1”即仅显示Telas 来遵循建议时,运行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 System 使用 GeForce 而不是 Tesla?
【问题讨论】:
-
info cuda devices应该只显示运行内核或当前调试会话持有的有效上下文的卡。info cuda system应该显示所有卡片是否可见。请注意,驱动程序(nvidia-smi 或 cuda-gdb 显示的内容)和 API 之间的枚举一致性没有任何保证。CUDA_VISIBLE_DEVICES机制和/或驱动程序计算模式状态是将代码引导到所需硬件的最佳方式。 -
cuda-gdb4.0 版(来自 CUDA SDK 4.0.17)没有system信息:info cuda system导致 “无法识别的选项:'系统'。”