आप API of ConfigProto को देखें, तो लाइन 278 पर, तो आप इस देखेंगे:
// Whether soft placement is allowed. If allow_soft_placement is true,
// an op will be placed on CPU if
// 1. there's no GPU implementation for the OP
// or
// 2. no GPU devices are known or registered
// or
// 3. need to co-locate with reftype input(s) which are from CPU.
bool allow_soft_placement = 7;
क्या यह वास्तव में इसका मतलब है कि अगर आप allow_soft_placement=True
बिना कुछ इस तरह करते हैं, TensorFlow एक त्रुटि फेंक नहीं है।
with tf.device('/gpu:0'):
# some op that doesn't have a GPU implementation
यह सही नीचे
, आप लाइन 281 पर देखेंगे:
// Whether device placements should be logged.
bool log_device_placement = 8;
जब log_device_placement=True
, तो आप कुछ इस तरह का एक वर्बोज़ उत्पादन प्राप्त होगा:
2017-07-03 01:13:59.466748: I tensorflow/core/common_runtime/simple_placer.cc:841] Placeholder_1: (Placeholder)/job:localhost/replica:0/task:0/cpu:0
Placeholder: (Placeholder): /job:localhost/replica:0/task:0/cpu:0
2017-07-03 01:13:59.466765: I tensorflow/core/common_runtime/simple_placer.cc:841] Placeholder: (Placeholder)/job:localhost/replica:0/task:0/cpu:0
Variable/initial_value: (Const): /job:localhost/replica:0/task:0/cpu:0
2017-07-03 01:13:59.466783: I tensorflow/core/common_runtime/simple_placer.cc:841] Variable/initial_value: (Const)/job:localhost/replica:0/task:0/cpu:0
आप देख सकते हैं, जहां प्रत्येक ऑपरेशन मैप किया गया है। इस मामले के लिए, वे सभी /cpu:0
पर मैप किए गए हैं, लेकिन यदि आप एक वितरित सेटिंग में हैं, तो कई और डिवाइस होंगे।