我们可以在tensorflow GraphDef中看到发送节点和 Receive 节点,还是使用python API?
我尝试以下代码
import tensorflow as tf
with tf.device("/gpu:0"):
x = tf.constant(1.0)
with tf.device("/gpu:1"):
y = tf.constant(2.0)
with tf.device("/cpu:0"):
sum = tf.add(x, y)
graph_def = tf.get_default_graph().as_graph_def()
print(graph_def)
但graph_def
中没有发送/ recv节点。是否有任何发送/ recv节点添加到图表中以便将x
和y
传输到 cpu ?
答案 0 :(得分:3)
send和recv节点仅在您第一次尝试执行图形时添加到图形中,调用tf.Session.run()
...实际上,获取的send和recv节点集合添加的内容取决于您在该呼叫中提供和提取的特定张量。
您可以将tf.RunOptions(output_partition_graphs=True)
传递给Session.run()
来查看在每个设备上执行的确切图表,包括send和recv节点,如下所示:
options = tf.RunOptions(output_partition_graphs=True)
metadata = tf.RunMetadata()
sess.run(..., options=options, metadata=metadata)
for partition_graph_def in metadata.partition_graphs:
print partition_graph_def # Contains all the nodes that ran on a single device.