![]() |
PEARL
Parallel Event Access and Replay Library
|
MPI-related part of the PEARL library. More...
Classes | |
class | pearl::EventSet |
Container class for a set of local events with associated roles. More... | |
class | pearl::LocalData |
Container class for a set of local events with associated roles. More... | |
class | pearl::MpiCancelled_rep |
Event representation for MPI_CANCELLED events. More... | |
class | pearl::MpiCartesian |
Stores information related to a virtual cartesian MPI topology. More... | |
class | pearl::MpiCollBegin_rep |
Event representation for the begin of MPI collective operations. More... | |
class | pearl::MpiCollEnd_rep |
Event representation for end of MPI collective operations. More... | |
class | pearl::MpiComm |
Stores information related to an MPI communicator. More... | |
class | pearl::MpiGroup |
Stores information related to an MPI group. More... | |
class | pearl::MpiMessage |
Abstraction layer for MPI messages. More... | |
class | pearl::MpiReceive_rep |
Event representation for MPI_RECV events. More... | |
class | pearl::MpiReceiveComplete_rep |
Event representation for MPI_RECV events. More... | |
class | pearl::MpiReceiveRequest_rep |
Event representation for MPI_RECV_REQUEST events. More... | |
class | pearl::MpiRequestTested_rep |
Event representation for MPI_SEND_COMPLETE events. More... | |
class | pearl::MpiRmaCollBegin_rep |
Event representation for the begin of MPI RMA collective operations. More... | |
class | pearl::MpiRmaCollEnd_rep |
Event representation for the end of MPI RMA collective operations. More... | |
class | pearl::MpiRmaGats_rep |
Event representation for MPI_RMAGATS events representing group-based synchronization. More... | |
class | pearl::MpiRmaGetEnd_rep |
Event representation for RMA_GET_END events. More... | |
class | pearl::MpiRmaGetStart_rep |
Event representation for RMA_GET_START events. More... | |
class | pearl::MpiRmaLock_rep |
Class for MPI RMA lock events. More... | |
class | pearl::MpiRmaPutEnd_rep |
Event representation for RMA_PUT_END events. More... | |
class | pearl::MpiRmaPutStart_rep |
Event representation for MPI_RMA_PUT_START events. More... | |
class | pearl::MpiRmaUnlock_rep |
Class for MPI RMA unlock events. More... | |
class | pearl::MpiSend_rep |
Event representation for MPI_SEND events. More... | |
class | pearl::MpiSendComplete_rep |
Event representation for MPI_SEND_COMPLETE events. More... | |
class | pearl::MpiSendRequest_rep |
Event representation for MPI_SEND events. More... | |
class | pearl::MpiWindow |
Stores information related to an MPI-2 remote memory access window. More... | |
class | pearl::RemoteData |
Container class for a set of remote events with associated roles. More... | |
class | pearl::RemoteEventSet |
Container class for a set of remote events with associated roles. More... | |
Files | |
file | EventSet.h |
Declaration of the class EventSet. | |
file | LocalData.h |
Declaration of the class LocalData. | |
file | MpiCancelled_rep.h |
Declaration of the class MpiCancelled_rep. | |
file | MpiCartesian.h |
Declaration of the class MpiCartesian. | |
file | MpiCollBegin_rep.h |
Declaration of the class MpiCollBegin_rep. | |
file | MpiCollEnd_rep.h |
Declaration of the class MpiCollEnd_rep. | |
file | MpiComm.h |
Declaration of the class MpiComm. | |
file | MpiGroup.h |
Declaration of the class MpiGroup. | |
file | MpiMessage.h |
Declaration of the class MpiMessage. | |
file | MpiReceive_rep.h |
Declaration of the class MpiReceive_rep. | |
file | MpiReceiveComplete_rep.h |
Declaration of the class MpiReceiveComplete_rep. | |
file | MpiReceiveRequest_rep.h |
Declaration of the class MpiReceiveRequest_rep. | |
file | MpiRequestTested_rep.h |
Declaration of the class MpiRequestTested_rep. | |
file | MpiRmaCollBegin_rep.h |
Declaration of the class MpiRmaCollBegin_rep. | |
file | MpiRmaCollEnd_rep.h |
Declaration of the class MpiRmaCollEnd_rep. | |
file | MpiRmaGats_rep.h |
Declaration of the class MpiRmaGats_rep. | |
file | MpiRmaGetEnd_rep.h |
Declaration of the class MpiRmaGetEnd_rep. | |
file | MpiRmaGetStart_rep.h |
Declaration of the class MpiRmaGetStart_rep. | |
file | MpiRmaLock_rep.h |
Declaration of the class MpiRmaLock_rep. | |
file | MpiRmaPutEnd_rep.h |
Declaration of the class MpiRmaPutEnd_rep. | |
file | MpiRmaPutStart_rep.h |
Declaration of the class MpiRmaPutStart_rep. | |
file | MpiRmaUnlock_rep.h |
Declaration of the class MpiRmaUnlock_rep. | |
file | MpiSend_rep.h |
Declaration of the class MpiSend_rep. | |
file | MpiSendComplete_rep.h |
Declaration of the class MpiSendComplete_rep. | |
file | MpiSendRequest_rep.h |
Declaration of the class MpiSendRequest_rep. | |
file | MpiWindow.h |
Declaration of the class MpiWindow. | |
file | pearl.h |
Declarations of global library functions. | |
file | RemoteData.h |
Declaration of the class RemoteData. | |
file | RemoteEventSet.h |
Declaration of the class RemoteEventSet. |
This part of the PEARL library provides all functions and classes that are specific to the handling traces of MPI-based programs, including traces of hybrid OpenMP/MPI applications.
The following code snippet shows the basic steps required to load and set up the PEARL data structures to handle pure MPI traces (for information on how to handle serial, pure OpenMP or hybrid OpenMP/MPI traces, see the PEARL.base, PEARL.omp, and PEARL.hybrid parts of PEARL).
using namespace pearl; // Initialize MPI, etc. ... // Initialize PEARL PEARL_mpi_init(); // Open trace archive TraceArchive* archive = TraceArchive::open(archive_name); // Load global definitions GlobalDefs* defs = archive->getDefinitions(); // Open trace container const LocationGroup& process = defs->getLocationGroup(mpi_rank); archive->openTraceContainer(process); // Load trace data const Location& location = process.getLocation(0); LocalTrace* trace = archive->getTrace(*defs, location); // Close trace container & archive archive->closeTraceContainer(); delete archive; // Preprocessing PEARL_verify_calltree(*defs, *trace); PEARL_mpi_unify_calltree(*defs); PEARL_preprocess_trace(*defs, *trace); ... // Free trace & definition data delete trace; delete defs; // Finalize PEARL PEARL_finalize(); // Finalize MPI ...
Note that all of the aforementioned function calls except PEARL_mpi_init() throw exceptions in case of errors. This has to be taken into account to avoid deadlocks (e.g., one process failing with an exception while the other processes wait in an MPI communication operation).
![]() |
Copyright © 1998–2014 Forschungszentrum Jülich GmbH,
Jülich Supercomputing Centre
Copyright © 2009–2014 German Research School for Simulation Sciences GmbH, Laboratory for Parallel Programming |