chrome://tracing 在 timeline.json 中显示比 process_names 更多的车道

chrome://tracing displaying more lanes than process_names in timeline.json

到目前为止,我假设 Chrome Trace Event Profiling Tool chrome://tracing 显示的车道数始终与加载文件中定义的 process_names 数匹配喜欢 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.

这种不匹配是一个功能(即我误解了什么)还是一个错误?

车道数基本上就是运行期间出现的最高并行度。通常有数十个线程(使用 Eigen 库中的默认值)用于内核执行。 tensorflow 并没有显示所有这些节点(许多完全是空的),而是将节点执行打包到尽可能少的通道中。这是执行此操作的 function

你也可以see认为pids是假的。