2017-02-14 65 views
0

我们指定GPU设备使用被使用:Tensorflow自动选择至少装载GPU

with tf.device('/gpu:'+gpu_id): 

gpu_id是一个字符串变量,其中手动设置要使用的GPU的id。 我需要运行多个实验,每个实验都在不同的GPU上。所以,我在运行代码实例之前手动更改gpu_id的值。

我可以写一些自动检测第一个未使用的GPU并将其设置为gpu_id的代码吗?

+1

是的,您必须手动编写该代码。可能最简单的事情是为您的实验设置静态分配,并使用'CUDA_VISIBLE_DEVICES'将实验固定到GPU。 – drpng

回答

2

目前已经是一个功能,可以让你知道正在使用的张量GPU:

# Creates a session with log_device_placement set to True. 
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 

设置log_device_placementTrue将返回类似这样的数据:

Device mapping: 
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Tesla K40c, pci bus 
id: 0000:05:00.0 
b: /job:localhost/replica:0/task:0/gpu:0 
a: /job:localhost/replica:0/task:0/gpu:0 
MatMul: /job:localhost/replica:0/task:0/gpu:0 
[[ 22. 28.] 
[ 49. 64.]] 

Using GPUs

+0

谢谢。但是,如何使用它来确定在运行时未使用哪个GPU? –

+0

'a'和'b'显示哪个gpu正在被使用,在上面的例子中都没有。如果有人看起来像这样:'/ job:localhost/replica:0/task:0/gpu:1 - > device:1'(参见我链接的最后一个例子:https://www.tensorflow .ORG/how_tos/using_gpu /) –