2017-02-14 64 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 /) –