Как я могу очистить память GPU с помощью CUDA (физический reset недоступен)
Моя программа CUDA потерпела крах во время выполнения, прежде чем была сброшена память. В результате память устройства осталась занятой.
Я работаю на GTX 580, для которого nvidia-smi --gpu-reset
не поддерживается.
Размещение cudaDeviceReset()
в начале программы влияет только на текущий контекст, созданный процессом, и не очищает выделенную ранее память.
Я получаю доступ к серверу Fedora с этим графическим процессором удаленно, поэтому физическое reset довольно сложно.
Итак, вопрос: есть ли способ сбросить память устройства в этой ситуации?
Ответы
Ответ 1
Несмотря на то, что это должно быть необходимо для чего-либо, кроме исключительных обстоятельств, рекомендуемый способ сделать это на хостах linux - это выгрузить драйвер nvidia, выполнив
$ rmmod nvidia
с соответствующими привилегиями root, а затем перезагружая его с помощью
$ modprobe nvidia
Если на компьютере запущен X11, вам необходимо остановить это вручную заранее и перезапустить его позже. Процессы инициализации драйвера должны исключать любое предыдущее состояние устройства.
Этот ответ был собран из комментариев и опубликован в качестве вики сообщества, чтобы получить этот вопрос из списка без ответа для тега CUDA
Ответ 2
проверьте, что использует память вашего GPU с помощью
sudo fuser -v /dev/nvidia*
Ваш результат будет выглядеть примерно так:
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
Затем уничтожьте PID, который вам больше не нужен, на htop
или
sudo kill -9 PID.
В приведенном выше примере Pycharm много ест память, поэтому я убил 20450 и 20699.
Ответ 3
У меня также была та же проблема, и я увидел хорошее решение в quora, используя
sudo kill -9 PID.
см. https://www.quora.com/How-do-I-kill-all-the-computer-processes-shown-in-nvidia-smi
Ответ 4
на macOS (/OS X), если у кого-то возникают проблемы с ОС, по-видимому, утечка памяти:
- https://github.com/phvu/cuda-smi полезно для быстрой проверки свободной памяти
- Выход из приложения, похоже, освобождает память, которую они используют. Закройте все, что вам не нужно, или закройте приложения один за другим, чтобы узнать, сколько памяти они использовали.
- Если это не сократит его (выход из 10 приложений, выпущенных для меня около 500 МБ /15%), самым большим потребителем является WindowServer. Вы можете принудительно выйти из нее, что также убьет все запущенные вами приложения и выйдет из системы. Но это немного быстрее, чем перезагрузка, и вернул мне 90% бесплатную память на устройстве cuda.
Ответ 5
Первый тип
nvidia-smi
затем выберите PID, который вы хотите убить
sudo kill -9 PID