artdaq::MPITransfer Class Reference

MPITransfer is a TransferInterface implementation plugin that transfers data using MPI. More...

#include <artdaq/TransferPlugins/MPITransfer.hh>

Inheritance diagram for artdaq::MPITransfer:
artdaq::TransferInterface

List of all members.

Public Member Functions

 MPITransfer (fhicl::ParameterSet pset, Role role)
 MPITransfer Constructor.
 MPITransfer (const MPITransfer &)
 Copy Constructor is deleted.
MPITransferoperator= (const MPITransfer &)
 Copy Assignment operator is deleted.
virtual ~MPITransfer ()
 MPITransfer Destructor.
CopyStatus copyFragment (Fragment &frag, size_t timeout_usec=std::numeric_limits< size_t >::max()) override
 Copy a Fragment to the destination. Forces asynchronous send.
CopyStatus moveFragment (Fragment &&frag, size_t timeout_usec=std::numeric_limits< size_t >::max()) override
 Move a Fragment to the destination.
int receiveFragmentHeader (detail::RawFragmentHeader &header, size_t receiveTimeout) override
 Receive a Fragment Header from the transport mechanism.
int receiveFragmentData (RawDataType *destination, size_t wordCount) override
 Receive the body of a Fragment to the given destination pointer.

Detailed Description

MPITransfer is a TransferInterface implementation plugin that transfers data using MPI.

Definition at line 24 of file MPITransfer.hh.


Constructor & Destructor Documentation

artdaq::MPITransfer::MPITransfer ( fhicl::ParameterSet  pset,
TransferInterface::Role  role 
)

MPITransfer Constructor.

Parameters:
pset ParameterSet used to configure MPITransfer
role Role of this MPITransfer instance (kSend or kReceive)
		 * MPITransfer accepts the following Parameters:
		 * "synchronous_sends" (Default: true): When false, use MPI_ISend, otherwise, use MPI_SSend
		 * 

MPITransfer also requires all Parameters for configuring a TransferInterface

Definition at line 25 of file MPI_transfer.cc.


Member Function Documentation

artdaq::TransferInterface::CopyStatus artdaq::MPITransfer::copyFragment ( Fragment &  frag,
size_t  timeout_usec = std::numeric_limits<size_t>::max() 
) [override]

Copy a Fragment to the destination. Forces asynchronous send.

Parameters:
frag Fragment to copy
timeout_usec Timeout for send, in microseconds
Returns:
CopyStatus detailing result of copy

Definition at line 70 of file MPI_transfer.cc.

artdaq::TransferInterface::CopyStatus artdaq::MPITransfer::moveFragment ( Fragment &&  frag,
size_t  timeout_usec = std::numeric_limits<size_t>::max() 
) [override]

Move a Fragment to the destination.

Parameters:
frag Fragment to move
timeout_usec Timeout for send, in microseconds
Returns:
CopyStatus detailing result of copy

Definition at line 77 of file MPI_transfer.cc.

MPITransfer& artdaq::MPITransfer::operator= ( const MPITransfer  ) 

Copy Assignment operator is deleted.

Returns:
MPITransfer reference

Reimplemented from artdaq::TransferInterface.

int artdaq::MPITransfer::receiveFragmentData ( RawDataType *  destination,
size_t  wordCount 
) [override, virtual]

Receive the body of a Fragment to the given destination pointer.

Parameters:
destination Pointer to memory region where Fragment data should be stored
wordCount Number of words of Fragment data to receive
Returns:
The rank the Fragment was received from (should be source_rank), or RECV_TIMEOUT

Implements artdaq::TransferInterface.

Definition at line 200 of file MPI_transfer.cc.

int artdaq::MPITransfer::receiveFragmentHeader ( detail::RawFragmentHeader &  header,
size_t  receiveTimeout 
) [override, virtual]

Receive a Fragment Header from the transport mechanism.

Parameters:
[out] header Received Fragment Header
receiveTimeout Timeout for receive
Returns:
The rank the Fragment was received from (should be source_rank), or RECV_TIMEOUT

Implements artdaq::TransferInterface.

Definition at line 138 of file MPI_transfer.cc.


The documentation for this class was generated from the following files:

Generated on 27 Jan 2018 for artdaq by  doxygen 1.6.1