Ich führe diesen Befehl in eine Shell und hole:
%Vor%Aber in meinem Code, wenn ich cuDeviceGetName (.., ID) verwende, wobei ID die ID ist, die von der nvidia-smi-Ausgabe ausgegeben wird, wurden die Geräte invertiert : GPU 0 wird Quadro 2000 und GPU 1 wird Quadro K2000.
Ist das ein erwartetes Verhalten oder ein Fehler? Kennt jemand einen Workaround, damit nvidia-smi die 'echte' ID von GPUs bekommt? Ich könnte die UUID verwenden, um das richtige Gerät mit nvmlDeviceGetUUID () zu erhalten, aber die Verwendung der nvml-API erscheint mir etwas zu kompliziert für das, was ich erreichen möchte.
Diese Frage diskutiert wie CUDA weist Geräten ohne eindeutige Schlussfolgerung IDs zu.
Ich benutze CUDA 6.5.
EDIT: Ich habe mir die Nvidia-smi-Manpage angeschaut (hätte das früher machen sollen ...). Es heißt:
"Benutzern, die Konsistenz wünschen, wird empfohlen, entweder UUDI oder PCI-Bus-ID zu verwenden, da die Reihenfolge der Geräteauflistung nicht garantiert ist."
Suche immer noch nach einem Klud ...
Es ist erwartetes Verhalten.
nvidia-smi
zählt in PCI-Reihenfolge auf.
Standardmäßig werden der CUDA-Treiber und die Laufzeit-APIs nicht verwendet.
Die von Ihnen verknüpfte Frage zeigt deutlich, wie die beiden Nummerierungs- / Ordnungsschemata zugeordnet werden.
Es gibt keine Möglichkeit, nvidia-smi zu veranlassen, sein Ordnungsschema so zu ändern, dass es mit dem übereinstimmt, was von den CUDA Laufzeit- oder Treiber-APIs erzeugt wird. Sie können jedoch die CUDA-Laufzeitauflistungsreihenfolge mithilfe einer Umgebungsvariablen ändern in CUDA 8.
Es ist das erwartete Verhalten.
nvidia-smi manpage sagt das
der 0-basierte Index der GPU / Unit in der vom Treiber zurückgegebenen natürlichen Enumeration,
Die CUDA-API führt in absteigender Reihenfolge der Rechenfähigkeiten gemäß "Programmierhandbuch" 3.2.6.1 Geräteaufzählung auf.
Ich hatte dieses Problem und habe ein Programm geschrieben, das analog zu nvidia-smi ist, aber mit aufgezählten Geräten in einer Reihenfolge, die mit der CUDA API übereinstimmt. Weiter im Text Ref auf dem Programm
Ich habe das Programm geschrieben, weil nvidia-smi das Gerät nicht in einer Reihenfolge aufzählen kann, die mit der CUDA-API übereinstimmt.
Tags und Links cuda