J'utilise une machine distante, qui a 2 GPU, afin d'exécuter un script Python qui a du code CUDA. Afin de trouver où je peux améliorer la performance de mon code, j'essaie d'utiliser nvprof
.nvprof utilise tous les GPU disponibles lors du profilage du script python
J'ai mis sur mon code que je veux seulement utiliser l'un des 2 GPU sur la machine distante, bien que, en appelant nvprof --profile-child-processes ./myscript.py
, un processus avec le même ID soit démarré sur chacun des GPU.
Y at-il un argument que je peux donner nvprof
afin de n'utiliser qu'un seul GPU pour le profilage?
utilisez la variable d'environnement 'CUDA_VISIBLE_DEVICES =" 0 "' pour restreindre l'accès 'nvprof'. Par exemple 'CUDA_VISIBLE_DEVICES =" 0 "nvprof --profile-child-processes./Myscript.py' limiterait nvprof au premier GPU, et' CUDA_VISIBLE_DEVICES = "1" nvprof --profile-child-processes ./myscript.py 'le limiterait au 2ème GPU, etc. L'env var est documenté [ici] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#env-vars). 'nvprof --help' montre qu'il possède un commutateur' --devices' qui peut aussi limiter certaines activités à certains GPU. –