API
Index
MPITape.get_edgesMPITape.plot_mergedMPITape.plot_sequence_mergedMPITape.print_mergedMPITape.print_mytapeMPITape.readall_and_mergeMPITape.MPIEventNeighborsMPITape.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 MPIEvents.
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 MPIEvents.
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.