Closed mkannwischer closed 4 months ago
Maybe the above example wasn't a great example, but with the new visualization it's very easy to see when code is well scheduled. E.g., see the following dual-issuing code:
// ----------------
// 0
// |---------------
sub v23.2S, v28.2S, v11.2S // *...............
sub v21.2S, v28.2S, v1.2S // *...............
sub v20.2S, v29.2S, v5.2S // .*..............
sub v24.2S, v29.2S, v7.2S // .*..............
add v21.2S, v0.2S, v21.2S // ..*.............
add v27.2S, v10.2S, v23.2S // ..*.............
add v24.2S, v6.2S, v24.2S // ...*............
add v26.2S, v4.2S, v20.2S // ...*............
add v4.2S, v4.2S, v5.2S // ....*...........
add v5.2S, v6.2S, v7.2S // ....*...........
sub v7.2S, v29.2S, v17.2S // .....*..........
sub v25.2S, v29.2S, v13.2S // .....*..........
add v6.2S, v12.2S, v13.2S // ......*.........
sub v20.2S, v29.2S, v15.2S // ......*.........
It's also easier to compare to our profiling scripts and LLVM MCA pipeline visualizations.
I agree, this is easier to grasp than // gap
annotations, which for models with large issue-rate are often dominating the output.
The visualize_expected_performance option introduced in https://github.com/slothy-optimizer/slothy/commit/d2fcecad5a313a59de585b3f4350902536f71028, allows to switch from the
// gap
output, to a visualization of the performance (see examples below). I think the visualization is strictly better and should be enabled by default. What do you think @hanno-becker and @dop-amin?gap output:
isualization: