Mon programme CUDA s'est arrêté pendant l'exécution, avant que la mémoire ne soit vidée. En conséquence, la mémoire de l'appareil est restée occupée.
J'utilise une GTX 580 pour laquelle nvidia-smi --gpu-reset
n'est pas pris en charge.
Placer cudaDeviceReset()
au début du programme n'affecte que le contexte actuel créé par le processus et ne vide pas la mémoire allouée auparavant.
J'accède à un serveur Fedora avec ce GPU à distance, la réinitialisation physique est donc assez compliquée.
La question est donc la suivante: existe-t-il un moyen de vider la mémoire de l'appareil dans cette situation?
Bien que cela ne soit pas nécessaire dans des circonstances autres que des circonstances exceptionnelles, la méthode recommandée pour ce faire sur les hôtes Linux consiste à décharger le pilote nvidia en faisant
$ rmmod nvidia
avec les privilèges root appropriés, puis le recharger avec
$ modprobe nvidia
Si la machine exécute X11, vous devrez l’arrêter manuellement au préalable, puis le redémarrer. Les processus d’initialisation du pilote doivent éliminer tout état antérieur sur le périphérique.
Cette réponse a été assemblée à partir de commentaires et publiée en tant que wiki de communauté pour obtenir cette question de la liste sans réponse de la balise CUDA
vérifiez ce qui utilise votre mémoire GPU avec
Sudo fuser -v /dev/nvidia*
Votre sortie ressemblera à ceci:
USER PID ACCESS COMMAND
/dev/nvidia0: root 1256 F...m Xorg
username 2057 F...m compiz
username 2759 F...m chrome
username 2777 F...m chrome
username 20450 F...m python
username 20699 F...m python
Ensuite, supprimez le PID dont vous n’avez plus besoin le htop
ou avec
Sudo kill -9 PID.
Dans l'exemple ci-dessus, Pycharm mangeant beaucoup de mémoire, j'ai tué 20450 et 20699.
J'ai également eu le même problème, et j'ai vu une bonne solution à Quora, en utilisant
Sudo kill -9 PID.
voir https://www.quora.com/How-do-I-kill-all-the-computer-processes-shown-in-nvidia-smi
sur macOS (/ OS X), si une autre personne a des problèmes avec le système d’exploitation fuyant apparemment:
Premier type
nvidia-smi
puis sélectionnez le PID que vous voulez tuer
Sudo kill -9 PID