2016-10-17 5 views
3

Я пытаюсь запустить нейронную сеть с pycaffe на gpu.Ошибка: ошибка == cudaSuccess (2 против 0) из памяти

Это работает, когда я вызываю сценарий в первый раз. Когда я запускаю тот же скрипт во второй раз, CUDA выдает ошибку в заголовке.

Размер партии 1, размер изображения на данный момент равен 243x322, gpu имеет 8gb RAM.

Я думаю, что мне не хватает команды, которая сбрасывает память?

спасибо!

EDIT:

Может быть, я должен прояснить несколько вещей: я бегу Caffe на окнах.

Когда я вызываю скрипт с python script.py, процесс завершается, и память gpu освобождается, поэтому это работает.

С IPython, который я использую для отладки, память GPU действительно не получает освобожден (после одного прохода, 6 из 8 Б.Г. в использовании, спасибо за NVidia-сми предложения!)

Итак, то, что я ищу это команда, которую я могу вызывать из pyhton, вдоль линий:

запуска сети

выходной образ процесса

бесплатно память GPU

+0

Есть ли у вас другие процессы с использованием графического процессора? – Shai

+0

, если он работает один раз и позже, вы получаете такую ​​ошибку, которая, безусловно, не освобождается. Если это действительно превышает память, вы получите ее всегда. Также память может быть превышена из-за размера партии, размера изображения, размера ядра, размера выходного параметра, глубины сетевых уровней и т. Д. –

+0

Как насчет использования команды 'del your_net' для освобождения сетевого объекта в python? – Dale

ответ

2

Это происходит, когда на GPU заканчивается память. Вы уверены, что правильно остановили первый скрипт? Проверьте выполняемые процессы в вашей системе (ps -A в ubuntu) и проверьте, все ли запущен скрипт python. Убей его, если он есть. Вы также должны проверить память, используемую в вашем графическом процессоре (nvidia-smi).

3

Ваша память GPU не освобождается. Это происходит, когда предыдущий процесс остановлен, но не завершен. См. Мой ответ here.