我們指定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