.TH "sc::MessageGrp" 3 "Sun Oct 4 2020" "Version 2.3.1" "MPQC" \" -*- nroff -*- .ad l .nh .SH NAME sc::MessageGrp \- The \fBMessageGrp\fP abstract class provides a mechanism for moving data and objects between nodes in a parallel machine\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits \fBsc::DescribedClass\fP\&. .PP Inherited by \fBsc::intMessageGrp\fP, \fBsc::MPIMessageGrp\fP, and \fBsc::ProcMessageGrp\fP\&. .SS "Public Member Functions" .in +1c .ti -1c .RI "\fBMessageGrp\fP (const \fBRef\fP< \fBKeyVal\fP > &)" .br .ti -1c .RI "int \fBn\fP ()" .br .RI "Returns the number of processors\&. " .ti -1c .RI "int \fBme\fP ()" .br .RI "Returns my processor number\&. In the range [0,\fBn()\fP)\&. " .ti -1c .RI "virtual \fBRef\fP< \fBMessageGrp\fP > \fBclone\fP (void)=0" .br .RI "Returns a copy of this \fBMessageGrp\fP specialization that provides an independent communication context\&. " .ti -1c .RI "virtual void \fBsend\fP (int target, const double *data, int ndata)" .br .RI "Send messages sequentially to the target processor\&. " .ti -1c .RI "virtual void \fBsend\fP (int target, const unsigned int *data, int ndata)" .br .ti -1c .RI "virtual void \fBsend\fP (int target, const int *data, int ndata)" .br .ti -1c .RI "virtual void \fBsend\fP (int target, const char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBsend\fP (int target, const unsigned char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBsend\fP (int target, const signed char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBsend\fP (int target, const short *data, int ndata)" .br .ti -1c .RI "virtual void \fBsend\fP (int target, const long *data, int ndata)" .br .ti -1c .RI "virtual void \fBsend\fP (int target, const float *data, int ndata)" .br .ti -1c .RI "void \fBsend\fP (int target, double data)" .br .ti -1c .RI "void \fBsend\fP (int target, int data)" .br .ti -1c .RI "virtual void \fBraw_send\fP (int target, const void *data, int nbyte)=0" .br .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const double *data, int ndata)" .br .RI "Send typed messages to the target processor\&. " .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const unsigned int *data, int ndata)" .br .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const int *data, int ndata)" .br .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const unsigned char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const signed char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const short *data, int ndata)" .br .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const long *data, int ndata)" .br .ti -1c .RI "virtual void \fBsendt\fP (int target, int type, const float *data, int ndata)" .br .ti -1c .RI "void \fBsendt\fP (int target, int type, double data)" .br .ti -1c .RI "void \fBsendt\fP (int target, int type, int data)" .br .ti -1c .RI "virtual void \fBraw_sendt\fP (int target, int type, const void *data, int nbyte)=0" .br .ti -1c .RI "virtual void \fBrecv\fP (int sender, double *data, int ndata)" .br .RI "Receive messages sent sequentually from the sender\&. " .ti -1c .RI "virtual void \fBrecv\fP (int sender, unsigned int *data, int ndata)" .br .ti -1c .RI "virtual void \fBrecv\fP (int sender, int *data, int ndata)" .br .ti -1c .RI "virtual void \fBrecv\fP (int sender, char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBrecv\fP (int sender, unsigned char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBrecv\fP (int sender, signed char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBrecv\fP (int sender, short *data, int ndata)" .br .ti -1c .RI "virtual void \fBrecv\fP (int sender, long *data, int ndata)" .br .ti -1c .RI "virtual void \fBrecv\fP (int sender, float *data, int ndata)" .br .ti -1c .RI "void \fBrecv\fP (int sender, double &data)" .br .ti -1c .RI "void \fBrecv\fP (int sender, int &data)" .br .ti -1c .RI "virtual void \fBraw_recv\fP (int sender, void *data, int nbyte)=0" .br .ti -1c .RI "virtual void \fBrecvt\fP (int type, double *data, int ndata)" .br .RI "Receive messages sent by type\&. " .ti -1c .RI "virtual void \fBrecvt\fP (int type, unsigned int *data, int ndata)" .br .ti -1c .RI "virtual void \fBrecvt\fP (int type, int *data, int ndata)" .br .ti -1c .RI "virtual void \fBrecvt\fP (int type, char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBrecvt\fP (int type, unsigned char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBrecvt\fP (int type, signed char *data, int nbyte)" .br .ti -1c .RI "virtual void \fBrecvt\fP (int type, short *data, int ndata)" .br .ti -1c .RI "virtual void \fBrecvt\fP (int type, long *data, int ndata)" .br .ti -1c .RI "virtual void \fBrecvt\fP (int type, float *data, int ndata)" .br .ti -1c .RI "void \fBrecvt\fP (int type, double &data)" .br .ti -1c .RI "void \fBrecvt\fP (int type, int &data)" .br .ti -1c .RI "virtual void \fBraw_recvt\fP (int type, void *data, int nbyte)=0" .br .ti -1c .RI "virtual int \fBprobet\fP (int type)=0" .br .RI "Ask if a given typed message has been received\&. " .ti -1c .RI "virtual void \fBbcast\fP (double *data, int ndata, int from=0)" .br .RI "Do broadcasts of various types of data\&. " .ti -1c .RI "virtual void \fBbcast\fP (unsigned int *data, int ndata, int from=0)" .br .ti -1c .RI "virtual void \fBbcast\fP (int *data, int ndata, int from=0)" .br .ti -1c .RI "virtual void \fBbcast\fP (char *data, int nbyte, int from=0)" .br .ti -1c .RI "virtual void \fBbcast\fP (unsigned char *data, int nbyte, int from=0)" .br .ti -1c .RI "virtual void \fBbcast\fP (signed char *data, int nbyte, int from=0)" .br .ti -1c .RI "virtual void \fBbcast\fP (short *data, int ndata, int from=0)" .br .ti -1c .RI "virtual void \fBbcast\fP (long *data, int ndata, int from=0)" .br .ti -1c .RI "virtual void \fBbcast\fP (float *data, int ndata, int from=0)" .br .ti -1c .RI "virtual void \fBraw_bcast\fP (void *data, int nbyte, int from=0)" .br .ti -1c .RI "void \fBbcast\fP (double &data, int from=0)" .br .ti -1c .RI "void \fBbcast\fP (int &data, int from=0)" .br .ti -1c .RI "virtual void \fBraw_collect\fP (const void *part, const int *lengths, void *whole, int bytes_per_datum=1)" .br .RI "Collect data distributed on the nodes to a big array replicated on each node\&. " .ti -1c .RI "void \fBcollect\fP (const double *part, const int *lengths, double *whole)" .br .ti -1c .RI "virtual void \fBsum\fP (double *data, int \fBn\fP, double *=0, int target=\-1)" .br .RI "Global sum reduction\&. " .ti -1c .RI "virtual void \fBsum\fP (unsigned int *data, int \fBn\fP, unsigned int *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBsum\fP (int *data, int \fBn\fP, int *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBsum\fP (char *data, int \fBn\fP, char *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBsum\fP (unsigned char *data, int \fBn\fP, unsigned char *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBsum\fP (signed char *data, int \fBn\fP, signed char *=0, int target=\-1)" .br .ti -1c .RI "void \fBsum\fP (double &data)" .br .ti -1c .RI "void \fBsum\fP (int &data)" .br .ti -1c .RI "virtual void \fBmax\fP (double *data, int \fBn\fP, double *=0, int target=\-1)" .br .RI "Global maximization\&. " .ti -1c .RI "virtual void \fBmax\fP (int *data, int \fBn\fP, int *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBmax\fP (unsigned int *data, int \fBn\fP, unsigned int *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBmax\fP (char *data, int \fBn\fP, char *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBmax\fP (unsigned char *data, int \fBn\fP, unsigned char *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBmax\fP (signed char *data, int \fBn\fP, signed char *=0, int target=\-1)" .br .ti -1c .RI "void \fBmax\fP (double &data)" .br .ti -1c .RI "void \fBmax\fP (int &data)" .br .ti -1c .RI "virtual void \fBmin\fP (double *data, int \fBn\fP, double *=0, int target=\-1)" .br .RI "Global minimization\&. " .ti -1c .RI "virtual void \fBmin\fP (int *data, int \fBn\fP, int *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBmin\fP (unsigned int *data, int \fBn\fP, unsigned int *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBmin\fP (char *data, int \fBn\fP, char *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBmin\fP (unsigned char *data, int \fBn\fP, unsigned char *=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBmin\fP (signed char *data, int \fBn\fP, signed char *=0, int target=\-1)" .br .ti -1c .RI "void \fBmin\fP (double &data)" .br .ti -1c .RI "void \fBmin\fP (int &data)" .br .ti -1c .RI "virtual void \fBreduce\fP (double *, int \fBn\fP, \fBGrpReduce\fP< double > &, double *scratch=0, int target=\-1)" .br .RI "Global generic reduction\&. " .ti -1c .RI "virtual void \fBreduce\fP (int *, int \fBn\fP, \fBGrpReduce\fP< int > &, int *scratch=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBreduce\fP (unsigned int *, int \fBn\fP, \fBGrpReduce\fP< unsigned int > &, unsigned int *scratch=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBreduce\fP (char *, int \fBn\fP, \fBGrpReduce\fP< char > &, char *scratch=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBreduce\fP (unsigned char *, int \fBn\fP, \fBGrpReduce\fP< unsigned char > &, unsigned char *scratch=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBreduce\fP (signed char *, int \fBn\fP, \fBGrpReduce\fP< signed char > &, signed char *scratch=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBreduce\fP (short *, int \fBn\fP, \fBGrpReduce\fP< short > &, short *scratch=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBreduce\fP (float *, int \fBn\fP, \fBGrpReduce\fP< float > &, float *scratch=0, int target=\-1)" .br .ti -1c .RI "virtual void \fBreduce\fP (long *, int \fBn\fP, \fBGrpReduce\fP< long > &, long *scratch=0, int target=\-1)" .br .ti -1c .RI "void \fBreduce\fP (double &data, \fBGrpReduce\fP< double > &r)" .br .ti -1c .RI "void \fBreduce\fP (int &data, \fBGrpReduce\fP< int > &r)" .br .ti -1c .RI "virtual void \fBsync\fP ()" .br .RI "Synchronize all of the processors\&. " .ti -1c .RI "\fBRef\fP< \fBMachineTopology\fP > \fBtopology\fP ()" .br .RI "Return the \fBMachineTopology\fP object\&. " .ti -1c .RI "int \fBclassdesc_to_index\fP (const \fBClassDesc\fP *)" .br .RI "Each message group maintains an association of \fBClassDesc\fP with a global index so \fBSavableState\fP information can be sent between nodes without needing to send the classname and look up the \fBClassDesc\fP with each transfer\&. " .ti -1c .RI "const \fBClassDesc\fP * \fBindex_to_classdesc\fP (int)" .br .ti -1c .RI "int \fBnclass\fP () const" .br .in -1c .SS "Static Public Member Functions" .in +1c .ti -1c .RI "static void \fBset_default_messagegrp\fP (const \fBRef\fP< \fBMessageGrp\fP > &)" .br .RI "The default message group contains the primary message group to be used by an application\&. " .ti -1c .RI "static \fBMessageGrp\fP * \fBget_default_messagegrp\fP ()" .br .RI "Returns the default message group\&. " .ti -1c .RI "static \fBMessageGrp\fP * \fBinitial_messagegrp\fP (int &argc, char **&argv)" .br .RI "Create a message group\&. " .in -1c .SS "Protected Member Functions" .in +1c .ti -1c .RI "void \fBinitialize\fP (int \fBme\fP, int \fBn\fP)" .br .RI "The classdesc_to_index_ and index_to_classdesc_ arrays cannot be initialized by the \fBMessageGrp\fP CTOR, because the \fBMessageGrp\fP specialization has not yet been initialized and communication is not available\&. " .in -1c .SS "Protected Attributes" .in +1c .ti -1c .RI "\fBRef\fP< \fBMachineTopology\fP > \fBtopology_\fP" .br .ti -1c .RI "int \fBdebug_\fP" .br .in -1c .SH "Detailed Description" .PP The \fBMessageGrp\fP abstract class provides a mechanism for moving data and objects between nodes in a parallel machine\&. .SH "Member Function Documentation" .PP .SS "virtual void sc::MessageGrp::bcast (double * data, int ndata, int from = \fC0\fP)\fC [virtual]\fP" .PP Do broadcasts of various types of data\&. Similar members exist for each of the basic types\&. .SS "int sc::MessageGrp::classdesc_to_index (const \fBClassDesc\fP *)" .PP Each message group maintains an association of \fBClassDesc\fP with a global index so \fBSavableState\fP information can be sent between nodes without needing to send the classname and look up the \fBClassDesc\fP with each transfer\&. These routines return information about that mapping\&. .SS "static \fBMessageGrp\fP* sc::MessageGrp::initial_messagegrp (int & argc, char **& argv)\fC [static]\fP" .PP Create a message group\&. This routine looks for a -messagegrp argument, then the environmental variable MESSAGEGRP to decide which specialization of \fBMessageGrp\fP would be appropriate\&. The argument to -messagegrp should be either string for a \fBParsedKeyVal\fP constructor or a classname\&. If this returns null, it is up to the programmer to create a \fBMessageGrp\fP\&. .SS "void sc::MessageGrp::initialize (int me, int n)\fC [protected]\fP" .PP The classdesc_to_index_ and index_to_classdesc_ arrays cannot be initialized by the \fBMessageGrp\fP CTOR, because the \fBMessageGrp\fP specialization has not yet been initialized and communication is not available\&. CTOR's of specializations of \fBMessageGrp\fP must call the initialize member in their body to complete the initialization process\&. .SS "virtual void sc::MessageGrp::max (double * data, int n, double * = \fC0\fP, int target = \fC\-1\fP)\fC [virtual]\fP" .PP Global maximization\&. Similar members exist for each of the basic types\&. .SS "virtual void sc::MessageGrp::min (double * data, int n, double * = \fC0\fP, int target = \fC\-1\fP)\fC [virtual]\fP" .PP Global minimization\&. Similar members exist for each of the basic types\&. .SS "virtual void sc::MessageGrp::recv (int sender, double * data, int ndata)\fC [virtual]\fP" .PP Receive messages sent sequentually from the sender\&. Similar members exist for each of the basic types\&. .SS "virtual void sc::MessageGrp::recvt (int type, double * data, int ndata)\fC [virtual]\fP" .PP Receive messages sent by type\&. Similar members exist for each of the basic types\&. .SS "virtual void sc::MessageGrp::reduce (double *, int n, \fBGrpReduce\fP< double > &, double * scratch = \fC0\fP, int target = \fC\-1\fP)\fC [virtual]\fP" .PP Global generic reduction\&. Similar members exist for each of the basic types\&. .PP Reimplemented in \fBsc::MPIMessageGrp\fP\&. .SS "virtual void sc::MessageGrp::send (int target, const double * data, int ndata)\fC [virtual]\fP" .PP Send messages sequentially to the target processor\&. Similar members exist for each of the basic types\&. .SS "virtual void sc::MessageGrp::sendt (int target, int type, const double * data, int ndata)\fC [virtual]\fP" .PP Send typed messages to the target processor\&. Similar members exist for each of the basic types\&. .SS "virtual void sc::MessageGrp::sum (double * data, int n, double * = \fC0\fP, int target = \fC\-1\fP)\fC [virtual]\fP" .PP Global sum reduction\&. Similar members exist for each of the basic types\&. .PP Reimplemented in \fBsc::MPIMessageGrp\fP\&. .SH "Author" .PP Generated automatically by Doxygen for MPQC from the source code\&.