3 Stimmen

Cuda-gdb sieht nur ein weniger leistungsfähiges Gerät von vier verfügbaren CUDA-fähigen Geräten

Es stehen vier CUDA-fähige Geräte zur Verfügung:

teslabot$ ./deviceQuery | grep -i "device [0-9]\|capability"
Gerät 0: "Tesla C2050 / C2070"
  CUDA-Fähigkeits-Haupt-/Nebenversion:    2.0
Gerät 1: "Tesla C2050 / C2070"
  CUDA-Fähigkeits-Haupt-/Nebenversion:    2.0
Gerät 2: "GeForce GTX 295"
  CUDA-Fähigkeits-Haupt-/Nebenversion:    1.3
Gerät 3: "GeForce GTX 295"
  CUDA-Fähigkeits-Haupt-/Nebenversion:    1.3

cuda-dbg sieht nur eines von ihnen:

teslabot$ cuda-gdb vector_add
NVIDIA (R) CUDA Debugger
4.0 release
Teile 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

Ich habe überprüft, dass der mit -gencode arch=compute_20,code=sm_20 erstellte Code ohne Fehler auf genannter Maschine kompiliert wird, und wenn er für sm_20 kompiliert wird, funktioniert printf im CUDA-Kernel korrekt.

Wie kann ich cuda-gdb dazu bringen, alle Geräte zu sehen (vielleicht mit Ausnahme des für die Grafik verwendeten... obwohl ich in diesem Fall remote über SSH angemeldet bin), oder zumindest ein Tesla/sm_20-Gerät?


Wenn ich dem Rat in Michael Foukarakis Antwort folge, indem ich die Umgebungsvariable CUDA_VISIBLE_DEVICES so setze, dass nur "0,1" sichtbar sind, also nur die Teslas sichtbar sind, erhalte ich nach Ausführung von info cuda devices den folgenden Fehler:

(cuda-gdb) info cuda devices
fatal:  Alle CUDA-Geräte werden für X11 verwendet und können während des Debuggens nicht verwendet werden. (Fehlercode = 24)

Wie kann man überprüfen, welche Geräte von X11 (X.Org) verwendet werden, und wie kann man das X Window System dazu bringen, die GeForce und nicht Tesla zu verwenden?

2voto

Michael Foukarakis Punkte 37819

Können Sie sicherstellen, dass die CUDA_VISIBLE_DEVICES Umgebungsvariable alle Geräte enthält, die Sie verwenden möchten, z. B .:

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

Durch Festlegen der Variablen können Sie nur eine Teilmenge von ihnen für die Laufzeit sichtbar machen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X