本文共 752 字,大约阅读时间需要 2 分钟。
在使用实验室的服务器要运行训练自己的网络的时候,经常出现有另外的同学也在训练网络,4个GPU总是有几个被占用。因此老是出现下面的警报:
creating context when one is currently active; existing: 0x2a7d250Internal: failed initializing StreamExecutor for CUDA device ordinal 3: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_OUT_OF_MEMORY; total memory reported: 8506179584
Tensorflow默认会使用尽可能多的GPU,并且占用所使用的GPU。因此如果有别的Tensorflow正在使用GPU,而自己的程序使用默认配置,那么是无法使用已经被使用的GPU的,也无法单独使用一块没有被使用的GPU。
因此,我们可以在运行我们的tensorflow程序的时候,指定程序使用的特定GPU: 因为我经常使用ipython运行代码,所以在此介绍一个代码中更改指定GPU的方法:import osos.environ["CUDA_VISIBLE_DEVICES"]="0"'''也可以指定显存比例'''config = tf.ConfigProto()config.gpu_options.per_process_gpu_memory_fraction = 0.4session = tf.Session(config=config, ...)
或者在命令行中使用
CUDA_VISIBLE_DEVICES=0 python your_python.py
转载地址:http://fzmfb.baihongyu.com/