Tensorflow多GPU多進程佔用的問題

原文鏈接:https://blog.csdn.net/cyn618/article/details/71479939

Tensorflow多GPU多進程佔用的問題
作爲一個剛入門深度學習的新手,在使用實驗室的服務器要運行訓練自己的網絡的時候,經常出現有另外的同學也在訓練網絡,4個GPU總是有幾個被佔用。因此老是出現下面的警報:

2017-05-09 14:23:29.246012: W tensorflow/stream_executor/cuda/cuda_driver.cc:485] creating context when one is currently active; existing: 0x2a7d250
2017-05-09 14:23:29.514180: E tensorflow/core/common_runtime/direct_session.cc:137] Internal: failed initializing StreamExecutor for CUDA device ordinal 3: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_OUT_OF_MEMORY; total memory reported: 8506179584
1
2
一開始以爲Tensorflow和cuda驅動不能同時運行太多個實例,但是又覺得如果是這樣的話那太不合理了。經過一番搜索後,發現了問題所在。
Tensorflow默認會使用儘可能多的GPU,並且佔用所使用的GPU。因此如果有別的Tensorflow正在使用GPU,而自己的程序使用默認配置,那麼是無法使用已經被使用的GPU的,也無法單獨使用一塊沒有被使用的GPU。
因此,我們可以在運行我們的tensorflow程序的時候,指定程序使用的特定GPU:

Ⅰ. 在終端上配置:
CUDA_VISIBLE_DEVICES=0 python your_python.py
1
或者:

export CUDA_VISIBLE_DEVICES="0"
python your_python.py
1
2
當然,你要先看看你的服務器的GPU配置,可以使用nvidia-smi命令,然後也可以指定多個GPU。

Ⅱ. 在代碼中配置:
import os
os.environ["CUDA_VISIBLE_DEVICES"]="0"
1
2
另外,我們也可以指定我們使用的顯存比例:

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, ...)
————————————————
版權聲明:本文爲CSDN博主「cyn618」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/cyn618/article/details/71479939

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章