Как запустить несколько кодов тензорного потока на одном графическом процессоре

Из-за того, что мои коды занимают меньше памяти графического процессора, я хотел бы запустить несколько копий одного и того же кода на одном графическом процессоре.

Я установил, что os.environ["CUDA_VISIBLE_DEVICES"] = "0", а также установил

t_config = tf.ConfigProto()
t_config.gpu_options.allow_growth = True
with tf.Session(config=t_config) as sess:

Но когда я запускаю второй код, он сообщает «Не удалось создать сеанс». Я искал в Google и обнаружил, что большинство людей говорят, что это нормально для нескольких кодов в одном графическом процессоре.

Большое спасибо.


person Kevin Sun    schedule 20.12.2017    source источник
comment
Сколько памяти на самом деле выделено первому процессу TensorFlow и сколько памяти GPU доступно (через nvidia-smi)? Помогает ли возня с per_process_gpu_memory_fraction (т.е. ограничение памяти)?   -  person Allen Lavoie    schedule 21.12.2017
comment
Память графического процессора составляет 8 ГБ, и я установил per_process_gpu_memory_fraction=0,3 для каждой точки кода. На самом деле каждая копия кодов занимает всего около 200 МБ памяти графического процессора.   -  person Kevin Sun    schedule 22.12.2017
comment
Только что попробовал с tf-nightly-gpu, и ваш код у меня работает (т.е. я могу запустить несколько сеансов на одном GPU). Будет ли лучше, если вы установите CUDA_VISIBLE_DEVICES в командной строке, а не в процессе Python (иногда это может быть сомнительно)? Упоминается ли в журнале запуска для TF только одно устройство?   -  person Allen Lavoie    schedule 22.12.2017
comment
Это на моем офисном графическом процессоре, и любой другой пакет, такой как tf-nightly-gpu, не может быть установлен. На самом деле, я также установил CUDA_VISIBLE_DEVICES в скрипте Python. Если я установлю его в командной строке, могу ли я выйти из команды, а затем использовать python xx.py для запуска моего скрипта?   -  person Kevin Sun    schedule 22.12.2017
comment
Какую версию TensorFlow вы используете? Точная команда, которую я использую, это CUDA_VISIBLE_DEVICES="0" python3.6 tryproc.py, которая с Bash должна установить переменную окружения для всего процесса Python. Но вы также можете просмотреть выходные данные журнала при первом создании сеанса, которые сообщат вам, есть ли несколько видимых устройств (должна быть строка «Найдено устройство 0» и не найдено «Найдено устройство 1»).   -  person Allen Lavoie    schedule 22.12.2017


Ответы (2)


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

person sh.kh    schedule 20.12.2017
comment
Спасибо за ваш ответ. На самом деле, эти две копии кодов одинаковы. Я не знаю, почему. Это очень странно. - person Kevin Sun; 20.12.2017

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

Таким образом, ваша последовательность выполнения может выглядеть так:

python main.py
sleep 30s; python main.py

К сожалению, у меня нет ответа, почему это происходит.

person Addy    schedule 20.08.2018