API
Index
MPITape.get_edges
MPITape.plot_merged
MPITape.plot_sequence_merged
MPITape.print_merged
MPITape.print_mytape
MPITape.readall_and_merge
MPITape.MPIEventNeighbors
MPITape.MPIEventTrace
References
MPITape.MPIEventTrace
— TypeHolding data that is required to be exchanged between prehook
and posthook
(i.e. the start time of the call)
MPITape.print_merged
— Methodprint_merged(tape; color)
Prints the given tape with the assumption that it contains events from multiple MPI ranks. Typically, the input should be the result of MPITape.readll_and_merge()
or similar.
MPITape.print_mytape
— Methodprint_mytape(; showrank)
Print the local tape (of the calling MPI rank).
MPITape.readall_and_merge
— Functionreadall_and_merge()
readall_and_merge(dir; prefix)
Reads all tapes from disk and merges them into a single "merged tape".
MPITape.plot_merged
— Methodplot_merged(tape; palette, fname)
Plots a gantt chart of the recorded MPI API calls and store it to a file. Additionally draws arrows between communicating MPIEvent
s.
MPITape.plot_sequence_merged
— Methodplot_sequence_merged(tape)
Plot a sequence diagram of the communication between ranks using the communication graph created by get_edges
.
Creates a plot of the following form using Kroki.jl:
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │Rank0│ │Rank1│ │Rank2│ │Rank3│ │Rank4│ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ │ MPISend │ │ │ │ │ ────────────────> │ │ │ │ │ │ │ │ │ MPISend │ │ │ │ ──────────────────────────────────> │ │ │ │ │ │ │ │ │ MPISend │ │ │ │ ────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ MPISend │ │ │ ──────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ MPISend │ │ │ │ │ <──────────────── │ │ │ │ │ │ │ │ │ MPISend │ │ │ │ <────────────────────────────────── │ │ │ │ │ │ │ │ │ MPISend │ │ │ │ <──────────────────────────────────────────────────── │ │ │ │ │ │ │ │ MPISend │ │ │ <────────────────────────────────────────────────────────────────────── ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ ┌──┴───┐ │Rank0│ │Rank1│ │Rank2│ │Rank3│ │Rank4│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘
MPITape.MPIEventNeighbors
— MethodMPIEventNeighbors(ev)
Creates a MPIEventNeighbors from an MPIEvent. This struct is used to keep trakc of the communication pairs for each event while constructing the edges of the communication graph.
MPITape.get_edges
— Methodget_edges(tape; check)
Generates the edges of a directed communication graph, where the edges represent communication between two MPIEvent
s.
The method returns an Array of Tuple{MPIEvent, MPIEvent}
. Every tuple directed edge between MPI calls that exchanged data. In consequence, a MPISend call and its matching MPIRecv call will result in a single edge in the graph whereas a MPI_Bcast over n
ranks will lead to n - 1
edges since the root will exchange data with all other ranks.
The methods checks for completeness of the created graph and throws an error, if not all MPI calls can be matched. Setting check = false
will skip these tests.