我同时在多个图表上操作。 举个例子,我想用一个图表来使用CPU而另一个图表来使用GPU。 我怎样才能做到这一点?
当前的方法及其问题
当我使用带有tf.Session()
的{{1}}时,它不起作用,仍然使用GPU。
tf.ConfigProto
我必须使用环境变量config = tf.ConfigProto(
device_count = {'GPU': 0}
)
来禁用GPU。我后来使用CUDA_VISIBLE_DEVICES
在我的工作之后删除了这个变量。
这些解决方案对我没用,因为对于一个图表我想要使用GPU而另一个我不希望使用GPU。设置os.unsetenv()
会影响图表。
我如何实现目标?
答案 0 :(得分:1)
tf.ConfigProto()创建的配置可以为会话设置可见设备。例如:
config_cpu = tf.ConfigProto()
config_cpu.gpu_options.visible_device_list=''
sess_cpu = tf.Session(config=config_cpu)
config_gpu = tf.ConfigProto()
config_gpu.gpu_options.visible_device_list='0'
sess_gpu = tf.Session(config=config_gpu)
然后会话中的图形sess_cpu应仅在CPU上运行,而会话中的图形sess_gpu应仅在GPU 0上运行。为了防止占用整个GPU内存的张量流,您可以设置config_gpu.gpu_options.allow_growth=True
。可根据您的定制需求采用类似配置。如果要使用其他配置,可以查看tf.ConfigProto。