PEARL
Parallel Event Access and Replay Library
Classes | Files
PEARL.mpi

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.



Detailed Description

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).

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Scalasca    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