API

Index

References

MPITape.MPIEventTraceType

Holding data that is required to be exchanged between prehook and posthook (i.e. the start time of the call)

source
MPITape.print_mergedMethod
print_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.

source
MPITape.readall_and_mergeFunction
readall_and_merge()
readall_and_merge(dir; prefix)

Reads all tapes from disk and merges them into a single "merged tape".

source
MPITape.plot_mergedMethod
plot_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.

source
MPITape.plot_sequence_mergedMethod
plot_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│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘

source
MPITape.MPIEventNeighborsMethod
MPIEventNeighbors(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.

source
MPITape.get_edgesMethod
get_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.

source