artdaq_mpich_plugin  v1_00_03
artdaq::MPITransfer Class Reference

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

#include <artdaq-mpich-plugin/TransferPlugins/MPITransfer.hh>

Inheritance diagram for artdaq::MPITransfer:

Public Member Functions

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

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,
Role  role 
)

MPITransfer Constructor.

Parameters
psetParameterSet used to configure MPITransfer
roleRole 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 26 of file MPI_transfer.cc.

Member Function Documentation

artdaq::TransferInterface::CopyStatus artdaq::MPITransfer::copyFragment ( Fragment &  frag,
size_t  timeout_usec 
)
override

Copy a Fragment to the destination. Forces asynchronous send.

Parameters
fragFragment to copy
timeout_usecTimeout for send, in microseconds
Returns
CopyStatus detailing result of copy

Definition at line 71 of file MPI_transfer.cc.

artdaq::TransferInterface::CopyStatus artdaq::MPITransfer::moveFragment ( Fragment &&  frag)
override

Move a Fragment to the destination.

Parameters
fragFragment to move
Returns
CopyStatus detailing result of copy

Definition at line 78 of file MPI_transfer.cc.

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

Copy Assignment operator is deleted.

Returns
MPITransfer reference
int artdaq::MPITransfer::receiveFragmentData ( RawDataType *  destination,
size_t  wordCount 
)
override

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

Parameters
destinationPointer to memory region where Fragment data should be stored
wordCountNumber of words of Fragment data to receive
Returns
The rank the Fragment was received from (should be source_rank), or RECV_TIMEOUT

Definition at line 208 of file MPI_transfer.cc.

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

Receive a Fragment Header from the transport mechanism.

Parameters
[out]headerReceived Fragment Header
receiveTimeoutTimeout for receive
Returns
The rank the Fragment was received from (should be source_rank), or RECV_TIMEOUT

Definition at line 146 of file MPI_transfer.cc.


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