Record MPI Operations on Tape
Documentation | Build Status | Quality |
---|---|---|
using MPI
using MPITape
function your_mpi_code()
# Your MPI Code...
end
@record your_mpi_code()
rank = MPI.Comm_rank(MPI.COMM_WORLD)
# delayed printing
sleep(rank)
MPITape.print_mytape()
# save local tapes to disk
MPITape.save()
MPI.Barrier(MPI.COMM_WORLD)
if rank == 0 # on master
# read all tapes and merge them into one
tape_merged = MPITape.readall_and_merge()
# print the merged tape
MPITape.print_merged(tape_merged)
# plot the merged tape (beta)
# display(MPITape.plot_sequence_merged(tape_merged))
# MPITape.plot_merged(tape_merged)
end
See example/
for an actual example which leads to outputs like this:
Rank: 0
Init (Δt=1.37E-06)
Barrier (Δt=3.27E-06)
Send -> 1 (Δt=2.30E-05)
Send -> 1 (Δt=2.35E-05)
Send -> 1 (Δt=2.36E-05)
Send -> 2 (Δt=2.40E-05)
Send -> 2 (Δt=2.40E-05)
Send -> 2 (Δt=2.42E-05)
Send -> 3 (Δt=2.44E-05)
Send -> 3 (Δt=2.46E-05)
Send -> 3 (Δt=2.47E-05)
Send -> 4 (Δt=2.49E-05)
Send -> 4 (Δt=2.51E-05)
Send -> 4 (Δt=2.53E-05)
Recv <- 1 (Δt=7.59E-05)
Recv <- 2 (Δt=9.35E-05)
Recv <- 3 (Δt=9.80E-05)
Recv <- 4 (Δt=9.84E-05)
Barrier (Δt=1.30E-04)
Rank: 1
Init (Δt=7.99E-06)
Barrier (Δt=1.49E-05)
Recv <- 0 (Δt=1.81E-05)
Recv <- 0 (Δt=2.99E-05)
Recv <- 0 (Δt=3.30E-05)
Send -> 0 (Δt=9.19E-05)
Barrier (Δt=9.25E-05)
Rank: 2
Init (Δt=8.47E-06)
Barrier (Δt=1.59E-05)
Recv <- 0 (Δt=1.78E-05)
Recv <- 0 (Δt=3.18E-05)
Recv <- 0 (Δt=3.48E-05)
Send -> 0 (Δt=9.60E-05)
Barrier (Δt=9.67E-05)
Rank: 3
Init (Δt=8.79E-06)
Barrier (Δt=1.64E-05)
Recv <- 0 (Δt=1.90E-05)
Recv <- 0 (Δt=3.16E-05)
Recv <- 0 (Δt=3.49E-05)
Send -> 0 (Δt=9.23E-05)
Barrier (Δt=9.30E-05)
Rank: 4
Init (Δt=9.64E-06)
Barrier (Δt=1.64E-05)
Recv <- 0 (Δt=1.81E-05)
Recv <- 0 (Δt=3.09E-05)
Recv <- 0 (Δt=3.39E-05)
Send -> 0 (Δt=9.58E-05)
Barrier (Δt=9.63E-05)
The package is not registered. You can use
] add MPITape
to add the package to your Julia environment.
For more information, please find the documentation here.
This package is an effort of the Paderborn Center for Parallel Computing (PC²), a national HPC center in Germany.