diff options
author | 2016-08-30 19:04:28 -0800 | |
---|---|---|
committer | 2016-08-30 20:17:35 -0700 | |
commit | 3e8c4fd7403659ec32b9fec90a78831043aa0786 (patch) | |
tree | 41cb60a4783af9eb341b36b5a1a0850556774d04 /boost.BUILD | |
parent | 9d6467825c9f3adf8df40d0281fa97280b372205 (diff) |
Don't establish contexts on gpus not on visible_device_list.
Moves all the initialization code out of gpu_init.h and into gpu_device.cc,
because we want the code that establishes peer mappings between GPUs to
reside close to where the device selection order is made.
Now the initialization code does nothing but calls the StreamExecutor
platform initialization.
This also checks that there are no duplicate entries in the visible_device_list.
I tested this by running the following program:
import time
import tensorflow as tf
c = tf.ConfigProto()
c.gpu_options.visible_device_list="1"
s = tf.Session(config=c)
time.sleep(5)
# nvidia-smi showed the context was established on device 1 but NOT 0
del s
c.gpu_options.visible_device_list="1,0"
s = tf.Session(config=c)
time.sleep(30)
# nvidia-smi showed the context was established on both device 0 and 1,
# and the logs showed that the device ordering was 1->/gpu:0 and 0->/gpu:1,
# as well as the fact that it tried to establish the peer mapping.
del s
c.gpu_options.visible_device_list="1,0,1"
s = tf.Session(config=c) # failed
Fixes #1888
Change: 131785661
Diffstat (limited to 'boost.BUILD')
0 files changed, 0 insertions, 0 deletions