2017-04-06 3 views
0

Ich benutze einen Remote-Rechner mit 2 GPUs, um ein Python-Skript mit CUDA-Code auszuführen. Um herauszufinden, wo ich die Leistung meines Codes verbessern kann, versuche ich nvprof zu verwenden.nvprof verwendet alle verfügbaren GPUs beim Profiling von Python-Skripten

Ich habe auf meinen Code eingestellt, dass ich nur eine der 2 GPUs auf dem Remote-Rechner verwenden möchte, obwohl, wenn nvprof --profile-child-processes ./myscript.py aufgerufen wird, ein Prozess mit der gleichen ID auf jedem der GPUs gestartet wird.

Gibt es irgendein Argument, das ich nvprof geben kann, um nur eine GPU für das Profiling zu verwenden?

+3

Verwenden Sie die Umgebungsvariable 'CUDA_VISIBLE_DEVICES =" 0 "', um 'nvprof' Zugriff einzuschränken. Zum Beispiel 'CUDA_VISIBLE_DEVICES =" 0 "nvprof --profile-untergeordnete-prozesse./Meinskript.py' würde nvprof auf die erste GPU beschränken und' CUDA_VISIBLE_DEVICES = "1" nvprof --profile-untergeordnete-prozesse ./myscript.py 'würde es auf die 2. GPU usw. beschränken. Die env var ist [hier] dokumentiert (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#env-vars). 'nvprof --help' zeigt, dass es einen Schalter' --devices' hat, der bestimmte Aktivitäten auch auf bestimmte GPUs beschränken kann. –

Antwort

0

Die CUDA environment variableCUDA_VISIBLE_DEVICES kann verwendet werden, um die CUDA-Laufzeit-API auf bestimmte GPUs zu beschränken. Sie können es so versuchen:

CUDA_VISIBLE_DEVICES="0" nvprof --profile-child-processes ./myscript.py 

Auch nvprofdocumented ist und auch Kommandozeilen-Hilfe über nvprof --help hat. In der Befehlszeilenhilfe sehe ich einen Schalter --devices, der anscheinend zumindest einige Funktionen einschränkt, um nur bestimmte GPUs zu verwenden. Sie könnten es versuchen mit:

Verwandte Themen