Подтвердить что ты не робот

Как я могу очистить память GPU с помощью CUDA (физический reset недоступен)

Моя программа CUDA потерпела крах во время выполнения, прежде чем была сброшена память. В результате память устройства осталась занятой.

Я работаю на GTX 580, для которого nvidia-smi --gpu-reset не поддерживается.

Размещение cudaDeviceReset() в начале программы влияет только на текущий контекст, созданный процессом, и не очищает выделенную ранее память.

Я получаю доступ к серверу Fedora с этим графическим процессором удаленно, поэтому физическое reset довольно сложно.

Итак, вопрос: есть ли способ сбросить память устройства в этой ситуации?

4b9b3361

Ответ 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.

Ответ 4

на macOS (/OS X), если у кого-то возникают проблемы с ОС, по-видимому, утечка памяти:

  • https://github.com/phvu/cuda-smi полезно для быстрой проверки свободной памяти
  • Выход из приложения, похоже, освобождает память, которую они используют. Закройте все, что вам не нужно, или закройте приложения один за другим, чтобы узнать, сколько памяти они использовали.
  • Если это не сократит его (выход из 10 приложений, выпущенных для меня около 500 МБ /15%), самым большим потребителем является WindowServer. Вы можете принудительно выйти из нее, что также убьет все запущенные вами приложения и выйдет из системы. Но это немного быстрее, чем перезагрузка, и вернул мне 90% бесплатную память на устройстве cuda.

Ответ 5

Первый тип

nvidia-smi

затем выберите PID, который вы хотите убить

sudo kill -9 PID