2017-02-14 6 views
0

Зададим устройство GPU для использования с помощью:Tensorflow автоматически выбирать наименее загруженный GPU

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

gpu_id переменная строка, где я вручную установить идентификатор GPU, который будет использоваться. Мне нужно запустить несколько экспериментов, каждый на другом графическом процессоре. Итак, я вручную изменяю значение gpu_id перед запуском экземпляра кода.

Могу ли я написать код, который автоматически обнаруживает первый неиспользуемый графический процессор и устанавливает его в gpu_id?

+1

Да, вы должны написать этот код вручную. Наверное, самое легкое - иметь статическое распределение для ваших экспериментов и использовать 'CUDA_VISIBLE_DEVICES', чтобы связать эксперимент с графическим процессором. – 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_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.]] 

Using GPUs

+0

Спасибо. Но как использовать это, чтобы определить, какой графический процессор не используется во время выполнения? –

+0

'a' и' b' показывают, какой gpu используется, в приведенном выше примере ни один из них не указан. Если бы это было похоже на это:/job: localhost/replica: 0/task: 0/gpu: 1 -> device: 1' (см. Последний пример на странице, которую я связал: https: //www.tensorflow .org/how_tos/using_gpu /) –

Смежные вопросы