Tensorflow多GPU多进程占用的问题

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值