dsp::MPITrans Class Reference

Loads BitSeries data using the MPI communications protocol. More...

#include <MPITrans.h>

Inheritance diagram for dsp::MPITrans:
dsp::MPIRoot dsp::Input dsp::Operation OwnStream Reference::Able Reference::HeapTracked

Public Member Functions

 MPITrans (MPI_Comm comm)
 Construct from MPI_Bcast.
 
void send_data (BitSeries *data, int dest)
 Send the next block using MPI_Isend.
 
void load_data (BitSeries *data)
 Load the next block using MPI_Irecv.
 
void load_data ()
 when mpi_rank == mpi_root, load data from input
 
int next_destination ()
 Returns the rank of the next node ready to receive data.
 
void request_data ()
 request data from the root
 
void request_ready (int node)
 request ready-for-data from a specific node
 
void shutdown ()
 Shutdown any remaining requests.
 
- Public Member Functions inherited from dsp::MPIRoot
 MPIRoot (MPI_Comm comm)
 Construct from MPI_Bcast.
 
virtual ~MPIRoot ()
 Destructor.
 
int get_size () const
 Get the number of nodes in communicator.
 
int get_rank () const
 Get the rank of this process within the communicator.
 
int get_root () const
 Get the rank of process sending data.
 
void set_root (int root)
 Set the rank of process sending data.
 
int get_tag () const
 Get the tag used for all communication.
 
void set_tag (int tag)
 Set the tag used for all communication.
 
void set_block_size (uint64_t _size)
 Setting the block_size requires resizing the buffer.
 
void prepare ()
 Prepare for sending or receiving from root node. More...
 
bool eod ()
 End of data.
 
void set_Input (Input *input)
 Set the source from which input data will be read.
 
void serve (BitSeries *bitseries=0)
 Serve the data from Input.
 
void set_resolution (unsigned resolution)
 Provide access to resolution attribute (required in mpiUnpack)
 
- Public Member Functions inherited from dsp::Input
 Input (const char *name)
 Constructor.
 
virtual ~Input ()
 Destructor.
 
virtual const Inputget_origin () const
 The origin of the data may be re-implemented by wrappers like SerialFiles.
 
virtual void copy (const Input *input)
 Copies the behaviour and information attributes (not data) More...
 
void reserve ()
 Reserve the maximum amount of output space required.
 
void reserve (BitSeries *)
 Reserve the maximum amount of space required in the given container.
 
virtual bool eod () const =0
 End of data.
 
virtual void restart ()
 Return to the start of data, if possible.
 
void load (BitSeries *data)
 Load BitSeries data. More...
 
virtual void set_output (BitSeries *data)
 Set the BitSeries to which data will be loaded.
 
virtual BitSeriesget_output ()
 Retrieve a pointer to the output. More...
 
virtual bool has_output () const
 Return true if output is set.
 
virtual void seek (int64_t offset, int whence=0)
 Seek to the specified time sample. More...
 
uint64_t tell () const
 Return the first time sample to be read on the next call to operate.
 
virtual void seek (const MJD &mjd)
 Seek to a sample close to the specified MJD.
 
virtual uint64_t get_block_size () const
 Return the number of time samples to load on each load_block.
 
virtual uint64_t get_overlap () const
 Return the number of time samples by which consecutive blocks overlap.
 
virtual void set_overlap (uint64_t _overlap)
 Set the number of time samples by which consecutive blocks overlap.
 
virtual uint64_t get_stride () const
 Convenience function for returning block_size-overlap.
 
virtual uint64_t get_total_samples () const
 Return the total number of time samples available.
 
void set_total_samples (uint64_t s)
 Set the total number of time samples available. More...
 
 operator const Observation * () const
 Get the information about the data source.
 
virtual Observationget_info ()
 Get the information about the data source.
 
virtual const Observationget_info () const
 Get the information about the data source.
 
uint64_t get_load_sample () const
 Get the next time sample to be loaded.
 
uint64_t get_load_size () const
 Get the number of samples to be loaded.
 
unsigned get_resolution () const
 Get the time sample resolution of the data source.
 
void set_resolution (unsigned res)
 Set the time sample resolution of the data source (use with care)
 
void seek_seconds (double seconds, int whence=0)
 Convenience method used to seek in units of seconds.
 
double tell_seconds () const
 Convenience method used to report the offset in seconds.
 
void set_start_seconds (double seconds)
 Set the start of observation offset in units of seconds.
 
void set_total_seconds (double seconds)
 Convenience method used to set the number of seconds.
 
void set_context (ThreadContext *context)
 In multi-threaded programs, a mutual exclusion and a condition.
 
bool has_context () const
 Return true if the thread context has been set.
 
virtual std::string get_prefix () const
 Input derived types may specify a prefix to be added to output files.
 
- Public Member Functions inherited from dsp::Operation
 Operation (const char *name)
 All sub-classes must specify a unique name. More...
 
 Operation (const Operation &)
 Copy constructor.
 
virtual ~Operation ()
 Virtual destructor.
 
virtual bool operate ()
 Call this method to operate on data Returns false on failure. More...
 
virtual void add_extensions (Extensions *)
 Add any extensions.
 
virtual void combine (const Operation *)
 Combine accumulated results with another operation. More...
 
virtual void report () const
 Report operation statistics.
 
virtual void reset ()
 Reset accumulated results to intial values. More...
 
std::string get_name () const
 Return the unique name of this operation.
 
double get_total_time () const
 Return the total time spent on this Operation in seconds.
 
double get_elapsed_time () const
 Get the time spent in the last invocation of operate()
 
virtual uint64_t get_total_weights () const
 Return the total number of timesample weights encountered. More...
 
virtual uint64_t get_discarded_weights () const
 Return the number of invalid timesample weights encountered.
 
int get_id ()
 Inquire the unique instantiation id.
 
virtual Function get_function () const
 Get the function classification of this operation.
 
virtual double get_delay_time () const
 Get the time delay of this operation, if any, in seconds.
 
virtual void set_scratch (Scratch *)
 Set the scratch space.
 
bool scratch_was_set () const
 
virtual uint64_t bytes_storage () const
 The number of bytes of additional storage used by the operation.
 
virtual uint64_t bytes_scratch () const
 The number of bytes of scratch space used by the operation. More...
 
- Public Member Functions inherited from OwnStream
 OwnStream (const OwnStream &)
 
const OwnStreamoperator= (const OwnStream &)
 
virtual void set_cout (std::ostream &) const
 
virtual void set_cerr (std::ostream &) const
 
- Public Member Functions inherited from Reference::Able
 Able (const Able &)
 
Ableoperator= (const Able &)
 
unsigned get_reference_count () const
 
- Public Member Functions inherited from Reference::HeapTracked
 HeapTracked (const HeapTracked &)
 
HeapTrackedoperator= (const HeapTracked &)
 
bool __is_on_heap () const
 

Additional Inherited Members

- Public Types inherited from dsp::Input
typedef BitSeries OutputType
 
- Public Types inherited from dsp::Operation
enum  Function { Producer, Procedural, Structural }
 The function of the operator. More...
 
- Static Public Member Functions inherited from Reference::Able
static size_t get_instance_count ()
 
- Static Public Member Functions inherited from Reference::HeapTracked
static void * operator new (size_t size, void *ptr=0)
 
static void operator delete (void *location, void *ptr)
 
static void operator delete (void *location)
 
static size_t get_heap_queue_size ()
 
- Static Public Attributes inherited from dsp::Operation
static bool record_time = false
 Global flag enables stopwatch to record the time spent operating. More...
 
static bool report_time = true
 Global flag enables report of time spent in operation on descruction. More...
 
static bool verbose = false
 Global verbosity flag.
 
static int operation_status = 0
 Operations can set this to non-zero in operation() if they fail.
 
static bool check_state = true
 Operations should perform internal consistency checks.
 
static int instantiation_count = 0
 Counts how many Operation instantiations there have been Used for setting the unique instantiation ID. More...
 
- Protected Member Functions inherited from dsp::MPIRoot
virtual void set_eod (bool _eod)
 Method that is p.v. in dsp::Input so that dsp::Seekable can set its 'end_of_data' flag. I don't know what MPIRoot should do in it, if anything. HSK 25/10/03.
 
void send_data (BitSeries *data, int dest)
 Send the next block using MPI_Isend.
 
void wait (MPI_Request &request, bool receive)
 Wait for the MPI_Request to complete and check the MPI_Status. More...
 
int next_destination ()
 Returns the rank of the next node ready to receive data.
 
void size_pack_buffer ()
 resize the pack_buf
 
void init ()
 initialize variables
 
void request_ready ()
 request ready-for-data from any node
 
void request_data ()
 request data from the root
 
int receive_data ()
 wait for data to be received and return the data count
 
void load_data ()
 when mpi_rank == mpi_root, load data from input
 
void ensure_root (const char *method) const
 ensure that this instance is the root and that mpi_size > 1
 
void ensure_receptive (const char *method) const
 ensure that this instance is not the root and that eof = false
 
void check_error (int mpi_err, const char *call, const char *method)
 throw an Error exception if mpi_err != MPI_SUCCESS
 
void check_status (MPI_Status &mpi_status, const char *method)
 verify that MPI_Wait returns as expected after MPI_Irecv
 
void check_block_size (const char *method)
 verify that the block_size is withing MPI size limits
 
- Protected Member Functions inherited from dsp::Input
virtual void operation ()
 Load data into the BitSeries specified with set_output. More...
 
virtual void mark_output ()
 Mark the output BitSeries with sequence informatin.
 
- Protected Member Functions inherited from dsp::Operation
virtual bool can_operate ()
 Return false if the operation doesn't have enough data to proceed.
 
virtual void set_name (const std::string &_name)
 Set the name!
 
int timers_index (const std::string &op_name)
 Returns the index in the 'timers' array of a particular timer.
 
- Protected Member Functions inherited from Reference::Able
Handle__reference (bool active) const
 
void __dereference (bool auto_delete=true) const
 
- Protected Attributes inherited from dsp::MPIRoot
MPI_Comm comm
 Communicator in which data will be sent and received.
 
int mpi_size
 Number of nodes in communicator.
 
int mpi_rank
 Rank of this process within the communicator.
 
int mpi_root
 Rank of process sending data.
 
int mpi_tag
 Tag used for all communication.
 
bool auto_request
 Automatically request the next data chunk.
 
MPI_Request data_request
 Handle to the asynchronous send/recv of data.
 
MPI_Request ready_request
 Handle to the asynchronous send/recv of ready flag.
 
MPI_Status status
 Status of the last call to wait.
 
int ready
 The ready flag.
 
char * pack_buf
 Buffer used to store asynchronous send/recv.
 
int pack_buf_size
 Size of the above buffer.
 
int pack_size
 Size actually needed.
 
int min_header_size
 MPI_Pack_size of the header in the buffer.
 
int data_size
 Size of the data in bytes.
 
bool end_of_data
 End of data.
 
vector< bool > eod_sent
 End of data has been sent to this node.
 
Reference::To< Inputinput
 The source from which input data will be read.
 
- Protected Attributes inherited from dsp::Input
Reference::To< BitSeriesoutput
 The BitSeries to which data will be loaded on next call to operate.
 
Reference::To< Observationinfo
 Information about the data source (passed on to BitSeries in load)
 
unsigned resolution
 Time sample resolution of the data source. More...
 
uint64_t last_load_ndat
 The ndat of the BitSeries last loaded Used by Seekable::recycle_data() and set by load()
 
std::string real_source
 If not "" then the source of the output gets changed to this after loading [""].
 
- Protected Attributes inherited from dsp::Operation
Scratchscratch
 Shared scratch space, if needed.
 
bool set_scratch_called
 
std::string name
 Operation name.
 
uint64_t discarded_weights
 Number of time sample weights encountered that are flagged invalid.
 
uint64_t total_weights
 Total number of time sample weights encountered.
 
RealTimer optime
 Stop watch records the amount of time spent performing this operation.
 
int id
 Unique instantiation id.
 
bool prepared
 Set true when preparation optimizations are completed.
 

Detailed Description

Loads BitSeries data using the MPI communications protocol.


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

Generated using doxygen 1.8.17