到目前为止,我假设Chrome Trace Event Profiling Tool chrome://tracing
显示的车道数始终与加载文件process_name
中定义的timeline.json
的数量相匹配。这是针对TensorFlow
中记录的时间轴,并导出到timeline.generate_chrome_trace_format()
的文件。
我现在面临timeline.json
包含3 process_name
这样的情况:
{
"name": "process_name",
"args": { "name": "Allocators" },
"ph": "M", "pid": 0
},
{
"name": "process_name",
"args": { "name": "/job:localhost/replica:0/task:0/device:CPU:0 Compute" },
"ph": "M", "pid": 1
},
{
"name": "process_name",
"args": { "name": "/job:localhost/replica:0/task:0/device:CPU:0 Tensors" },
"ph": "M", "pid": 2
},
而该工具显示4条车道:
在文件中,第3道中的单个操作softmax_cross_entropy_with_logits/Reshape_1
不会引用"pid": 3
,而是引用"pid": 1
。
这种不匹配是一种特征(即我是误解事物)还是一种错误?
答案 0 :(得分:0)
通道的数量基本上只是运行期间发生的最高并行度。通常有数十个线程(使用Eigen库中的默认值)用于内核执行。 tensorflow将节点执行打包成尽可能少的通道,而不是显示所有这些(很多都是空的)。这是执行此操作的function。
您还pids
someCollection.add(1);
someCollection.add(3);
someCollection.add(2);
是假的。