Closed elliottslaughter closed 7 months ago
What exactly is the difference for those of us that don't read the tsv syntax?
Rust includes additional copy channels, specifically those from node 0 to any other node. It appears that Python does not include any copy channels, because it only includes channels for the nodes that were specifically included in the profiler output, and only node 0 was logged. That means that you don't get any intra-node copies in Python at all, even though the node 0 logs do include (at least some of) that data.
The copies are there in the Python profile - (if you expand node 0's channel) - but I can add the other channels to match the Rust profile (i.e. those copies will appear twice)
Ok, I missed that in Python.
I guess that in a normal multi-node profile, every copy is listed twice: under the source node, and under the destination node.
So it makes sense to show it under the source node only when we have a subset of nodes.
As long as we're not losing data, I can make Rust match Python's behavior.
I'm running
master
at 8a459255909290609611f6f93eb788c9051a3765.This log file generates different results with Python and Rust: http://sapling.stanford.edu/~eslaught/legion_prof_diff_2022-09-06/prof_64x1_r0_0.gz
Profiler output:
Here's what the diff looks like:
I feel like Rust is correct here, and Python seems to be not including data that ought to be included.
I am not going to put effort into fixing Python. But I mention it because someone else might care.