我们指定GPU设备使用被使用:Tensorflow自动选择至少装载GPU
with tf.device('/gpu:'+gpu_id):
gpu_id是一个字符串变量,其中手动设置要使用的GPU的id。 我需要运行多个实验,每个实验都在不同的GPU上。所以,我在运行代码实例之前手动更改gpu_id的值。
我可以写一些自动检测第一个未使用的GPU并将其设置为gpu_id的代码吗?
我们指定GPU设备使用被使用:Tensorflow自动选择至少装载GPU
with tf.device('/gpu:'+gpu_id):
gpu_id是一个字符串变量,其中手动设置要使用的GPU的id。 我需要运行多个实验,每个实验都在不同的GPU上。所以,我在运行代码实例之前手动更改gpu_id的值。
我可以写一些自动检测第一个未使用的GPU并将其设置为gpu_id的代码吗?
目前已经是一个功能,可以让你知道正在使用的张量GPU:
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
设置log_device_placement
到True
将返回类似这样的数据:
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.]]
谢谢。但是,如何使用它来确定在运行时未使用哪个GPU? –
'a'和'b'显示哪个gpu正在被使用,在上面的例子中都没有。如果有人看起来像这样:'/ job:localhost/replica:0/task:0/gpu:1 - > device:1'(参见我链接的最后一个例子:https://www.tensorflow .ORG/how_tos/using_gpu /) –
是的,您必须手动编写该代码。可能最简单的事情是为您的实验设置静态分配,并使用'CUDA_VISIBLE_DEVICES'将实验固定到GPU。 – drpng