tensorflow-不同计算机上的相同程序分配不同的GPU内存

时间:2018-11-28 00:47:31

标签: python tensorflow

ubuntu 16.04,python 2.7.12,tensorflow 1.10.1(gpu版本),cuda 9.0,cudnn 7.2

我已经建立并训练了CNN模型,现在我正在使用while循环反复让我的模型做出预测。

为了限制内存使用量,我使用以下代码创建分类器:

import tensorflow as tf

session_config = tf.ConfigProto(log_device_placement=False)
session_config.gpu_options.allow_growth = True 
run_config = tf.estimator.RunConfig().replace(session_config=session_config)


classifier = tf.estimator.Estimator(
    model_fn = my_model_fn, 
    model_dir = my_trained_model_dir,
    config = run_config,
    params={}

然后我在classifier.predict(my_input_fn)循环中调用while,以反复进行预测。

问题:

我正在两台计算机上运行我的代码,这两台计算机都具有上面列出的相同软件环境。

但是,两台计算机具有不同的GPU:

计算机A:1050 2G

计算机B:1070 8G

我的代码在两台计算机上都能很好地工作。

但是,当我使用nvidia-smi检查GPU内存分配时,我发现我的代码将在计算机A上分配1.4G GPU内存,而在计算机B上变为3.6G。

那么,为什么会发生这种情况?

我认为session_config.gpu_options.allow_growth = True告诉程序分配所需的数量。计算机A已证明1.4G足够,那么为什么相同的代码在计算机B上分配3.6G?

1 个答案:

答案 0 :(得分:-1)

实际上可能是1.4gb还不够,并且某些所需的内存已交换到主内存中。视频卡驱动程序可以做到这一点。