home | help
sc::MessageGrp(3)		      MPQC		       sc::MessageGrp(3)

NAME
     sc::MessageGrp  -	The  MessageGrp  abstract class provides a mechanism for
     moving data and objects between nodes in a parallel machine.

SYNOPSIS
     #include <message.h>

     Inherits sc::DescribedClass.

     Inherited by sc::MPIMessageGrp, sc::ProcMessageGrp, and sc::intMessageGrp.

   Public Member Functions
     MessageGrp (const Ref< KeyVal > &)
     int n ()
	 Returns the number of processors.
     int me ()
	 Returns my processor number. In the range [0,n()).
     virtual Ref< MessageGrp > clone (void)=0
	 Returns a copy of this MessageGrp specialization that provides an inde-
	 pendent communication context.
     virtual void send (int target, const double *data, int ndata)
	 Send messages sequentially to the target processor.
     virtual void send (int target, const unsigned int *data, int ndata)
     virtual void send (int target, const int *data, int ndata)
     virtual void send (int target, const char *data, int nbyte)
     virtual void send (int target, const unsigned char *data, int nbyte)
     virtual void send (int target, const signed char *data, int nbyte)
     virtual void send (int target, const short *data, int ndata)
     virtual void send (int target, const long *data, int ndata)
     virtual void send (int target, const float *data, int ndata)
     void send (int target, double data)
     void send (int target, int data)
     virtual void raw_send (int target, const void *data, int nbyte)=0
     virtual void sendt (int target, int type, const double *data, int ndata)
	 Send typed messages to the target processor.
     virtual void sendt (int target, int type, const  unsigned	int  *data,  int
	 ndata)
     virtual void sendt (int target, int type, const int *data, int ndata)
     virtual void sendt (int target, int type, const char *data, int nbyte)
     virtual  void  sendt  (int target, int type, const unsigned char *data, int
	 nbyte)
     virtual void sendt (int target, int type,	const  signed  char  *data,  int
	 nbyte)
     virtual void sendt (int target, int type, const short *data, int ndata)
     virtual void sendt (int target, int type, const long *data, int ndata)
     virtual void sendt (int target, int type, const float *data, int ndata)
     void sendt (int target, int type, double data)
     void sendt (int target, int type, int data)
     virtual  void  raw_sendt  (int  target,  int  type,  const  void *data, int
	 nbyte)=0
     virtual void recv (int sender, double *data, int ndata)
	 Receive messages sent sequentually from the sender.
     virtual void recv (int sender, unsigned int *data, int ndata)
     virtual void recv (int sender, int *data, int ndata)
     virtual void recv (int sender, char *data, int nbyte)
     virtual void recv (int sender, unsigned char *data, int nbyte)
     virtual void recv (int sender, signed char *data, int nbyte)
     virtual void recv (int sender, short *data, int ndata)
     virtual void recv (int sender, long *data, int ndata)
     virtual void recv (int sender, float *data, int ndata)
     void recv (int sender, double &data)
     void recv (int sender, int &data)
     virtual void raw_recv (int sender, void *data, int nbyte)=0
     virtual void recvt (int type, double *data, int ndata)
	 Receive messages sent by type.
     virtual void recvt (int type, unsigned int *data, int ndata)
     virtual void recvt (int type, int *data, int ndata)
     virtual void recvt (int type, char *data, int nbyte)
     virtual void recvt (int type, unsigned char *data, int nbyte)
     virtual void recvt (int type, signed char *data, int nbyte)
     virtual void recvt (int type, short *data, int ndata)
     virtual void recvt (int type, long *data, int ndata)
     virtual void recvt (int type, float *data, int ndata)
     void recvt (int type, double &data)
     void recvt (int type, int &data)
     virtual void raw_recvt (int type, void *data, int nbyte)=0
     virtual int probet (int type)=0
	 Ask if a given typed message has been received.
     virtual void bcast (double *data, int ndata, int from=0)
	 Do broadcasts of various types of data.
     virtual void bcast (unsigned int *data, int ndata, int from=0)
     virtual void bcast (int *data, int ndata, int from=0)
     virtual void bcast (char *data, int nbyte, int from=0)
     virtual void bcast (unsigned char *data, int nbyte, int from=0)
     virtual void bcast (signed char *data, int nbyte, int from=0)
     virtual void bcast (short *data, int ndata, int from=0)
     virtual void bcast (long *data, int ndata, int from=0)
     virtual void bcast (float *data, int ndata, int from=0)
     virtual void raw_bcast (void *data, int nbyte, int from=0)
     void bcast (double &data, int from=0)
     void bcast (int &data, int from=0)
     virtual void raw_collect  (const  void  *part,  const  int  *lengths,  void
	 *whole, int bytes_per_datum=1)
	 Collect data distributed on the nodes to a big array replicated on each
	 node.
     void collect (const double *part, const int *lengths, double *whole)
     virtual void sum (double *data, int n, double *=0, int target=-1)
	 Global sum reduction.
     virtual  void  sum  (unsigned  int *data, int n, unsigned int *=0, int tar-
	 get=-1)
     virtual void sum (int *data, int n, int *=0, int target=-1)
     virtual void sum (char *data, int n, char *=0, int target=-1)
     virtual void sum (unsigned char *data, int n, unsigned char *=0,  int  tar-
	 get=-1)
     virtual void sum (signed char *data, int n, signed char *=0, int target=-1)
     void sum (double &data)
     void sum (int &data)
     virtual void max (double *data, int n, double *=0, int target=-1)
	 Global maximization.
     virtual void max (int *data, int n, int *=0, int target=-1)
     virtual  void  max  (unsigned  int *data, int n, unsigned int *=0, int tar-
	 get=-1)
     virtual void max (char *data, int n, char *=0, int target=-1)
     virtual void max (unsigned char *data, int n, unsigned char *=0,  int  tar-
	 get=-1)
     virtual void max (signed char *data, int n, signed char *=0, int target=-1)
     void max (double &data)
     void max (int &data)
     virtual void min (double *data, int n, double *=0, int target=-1)
	 Global minimization.
     virtual void min (int *data, int n, int *=0, int target=-1)
     virtual  void  min  (unsigned  int *data, int n, unsigned int *=0, int tar-
	 get=-1)
     virtual void min (char *data, int n, char *=0, int target=-1)
     virtual void min (unsigned char *data, int n, unsigned char *=0,  int  tar-
	 get=-1)
     virtual void min (signed char *data, int n, signed char *=0, int target=-1)
     void min (double &data)
     void min (int &data)
     virtual  void  reduce  (double  *,  int  n,  GrpReduce<  double > &, double
	 *scratch=0, int target=-1)
	 Global generic reduction.
     virtual void reduce (int *, int n, GrpReduce< int > &, int *scratch=0,  int
	 target=-1)
     virtual  void  reduce  (unsigned int *, int n, GrpReduce< unsigned int > &,
	 unsigned int *scratch=0, int target=-1)
     virtual void reduce (char *, int n, GrpReduce< char > &,  char  *scratch=0,
	 int target=-1)
     virtual  void reduce (unsigned char *, int n, GrpReduce< unsigned char > &,
	 unsigned char *scratch=0, int target=-1)
     virtual void reduce (signed char *, int n,  GrpReduce<  signed  char  >  &,
	 signed char *scratch=0, int target=-1)
     virtual  void  reduce  (short  *,	int  n,  GrpReduce<  short  >  &,  short
	 *scratch=0, int target=-1)
     virtual  void  reduce  (float  *,	int  n,  GrpReduce<  float  >  &,  float
	 *scratch=0, int target=-1)
     virtual  void  reduce (long *, int n, GrpReduce< long > &, long *scratch=0,
	 int target=-1)
     void reduce (double &data, GrpReduce< double > &r)
     void reduce (int &data, GrpReduce< int > &r)
     virtual void sync ()
	 Synchronize all of the processors.
     Ref< MachineTopology > topology ()
	 Return the MachineTopology object.
     int classdesc_to_index (const ClassDesc *)
	 Each message group maintains an association of ClassDesc with a  global
	 index	so  SavableState  information  can be sent between nodes without
	 needing to send the classname and  look  up  the  ClassDesc  with  each
	 transfer.
     const ClassDesc * index_to_classdesc (int)
     int nclass () const

     Public Member Functions inherited from sc::DescribedClass
     DescribedClass (const DescribedClass &)
     DescribedClass & operator= (const DescribedClass &)
     ClassDesc * class_desc () const  throw ()
	 This  returns	the unique pointer to the ClassDesc corresponding to the
	 given type_info object.
     const char * class_name () const
	 Return the name of the object's exact type.
     int class_version () const
	 Return the version of the class.
     virtual void print (std::ostream &=ExEnv::out0()) const
	 Print the object.

     Public Member Functions inherited from sc::RefCount
     int lock_ptr () const
	 Lock this object.
     int unlock_ptr () const
	 Unlock this object.
     void use_locks (bool inVal)
	 start and stop using locks on this object
     refcount_t nreference () const
	 Return the reference count.
     refcount_t reference ()
	 Increment the reference count and return the new count.
     refcount_t dereference ()
	 Decrement the reference count and return the new count.
     int managed () const
     void unmanage ()
	 Turn off the reference counting mechanism for this object.
     int managed () const
	 Return 1 if the object is managed. Otherwise return 0.

     Public Member Functions inherited from sc::Identity
     Identifier identifier ()
	 Return the Identifier for this argument.

   Static Public Member Functions
     static void set_default_messagegrp (const Ref< MessageGrp > &)
	 The default message group contains the primary message group to be used
	 by an application.
     static MessageGrp * get_default_messagegrp ()
	 Returns the default message group.
     static MessageGrp * initial_messagegrp (int &argc, char **&argv)
	 Create a message group.

   Protected Member Functions
     void initialize (int me, int n)
	 The classdesc_to_index_ and index_to_classdesc_ arrays cannot	be  ini-
	 tialized  by the MessageGrp CTOR, because the MessageGrp specialization
	 has not yet been initialized and communication is not available.

     Protected Member Functions inherited from sc::RefCount
     RefCount (const RefCount &)
     RefCount & operator= (const RefCount &)

   Protected Attributes
     Ref< MachineTopology > topology_
     int debug_

Detailed Description
     The MessageGrp abstract class provides a mechanism for moving data and  ob-
     jects between nodes in a parallel machine.

Member Function Documentation
   virtual  void  sc::MessageGrp::bcast (double * data, int ndata, int from = 0)
     [virtual]
     Do broadcasts of various types of data. Similar members exist for	each  of
     the basic types.

   int sc::MessageGrp::classdesc_to_index (const ClassDesc *)
     Each  message group maintains an association of ClassDesc with a global in-
     dex so SavableState information can be sent between nodes	without  needing
     to  send  the classname and look up the ClassDesc with each transfer. These
     routines return information about that mapping.

   virtual Ref< MessageGrp > sc::MessageGrp::clone (void) [pure virtual]
     Returns a copy of this MessageGrp specialization that provides an	indepen-
     dent communication context.

     Implemented  in  sc::ProcMessageGrp, sc::MPIMessageGrp, and sc::ShmMessage-
     Grp.

   static MessageGrp * sc::MessageGrp::initial_messagegrp (int & argc, char  **&
     argv) [static]
     Create a message group. This routine looks for a -messagegrp argument, then
     the  environmental  variable  MESSAGEGRP  to decide which specialization of
     MessageGrp would be appropriate. The argument to -messagegrp should be  ei-
     ther  string for a ParsedKeyVal constructor or a classname. If this returns
     null, it is up to the programmer to create a MessageGrp.

   void sc::MessageGrp::initialize (int me, int n) [protected]
     The classdesc_to_index_ and index_to_classdesc_ arrays cannot  be	initial-
     ized  by the MessageGrp CTOR, because the MessageGrp specialization has not
     yet been initialized and communication is not available. CTOR's of special-
     izations of MessageGrp must call the initialize member  in  their	body  to
     complete the initialization process.

   virtual  void  sc::MessageGrp::max  (double	* data, int n, double * = 0, int
     target = -1) [virtual]
     Global maximization. Similar members exist for each of the basic types.

   virtual void sc::MessageGrp::min (double * data, int n, double  *  =  0,  int
     target = -1) [virtual]
     Global minimization. Similar members exist for each of the basic types.

   virtual int sc::MessageGrp::probet (int type) [pure virtual]
     Ask if a given typed message has been received.

     Implemented  in  sc::ProcMessageGrp, sc::MPIMessageGrp, and sc::intMessage-
     Grp.

   virtual void sc::MessageGrp::recv (int sender,  double  *  data,  int  ndata)
     [virtual]
     Receive  messages	sent sequentually from the sender. Similar members exist
     for each of the basic types.

   virtual void sc::MessageGrp::recvt (int type, double * data, int ndata) [vir-
     tual]
     Receive messages sent by type. Similar members exist for each of the  basic
     types.

   virtual  void sc::MessageGrp::reduce (double *, int n, GrpReduce< double > &,
     double * scratch = 0, int target = -1) [virtual]
     Global generic reduction. Similar members	exist  for  each  of  the  basic
     types.

     Reimplemented in sc::MPIMessageGrp.

   virtual  void  sc::MessageGrp::send	(int  target,  const  double * data, int
     ndata) [virtual]
     Send messages sequentially to the target processor. Similar  members  exist
     for each of the basic types.

   virtual  void  sc::MessageGrp::sendt  (int  target,	int type, const double *
     data, int ndata) [virtual]
     Send typed messages to the target processor. Similar members exist for each
     of the basic types.

   virtual void sc::MessageGrp::sum (double * data, int n, double  *  =  0,  int
     target = -1) [virtual]
     Global sum reduction. Similar members exist for each of the basic types.

     Reimplemented in sc::MPIMessageGrp.

   virtual void sc::MessageGrp::sync () [virtual]
     Synchronize all of the processors.

     Reimplemented in sc::ProcMessageGrp, sc::MPIMessageGrp, and sc::ShmMessage-
     Grp.

Author
     Generated automatically by Doxygen for MPQC from the source code.

Version 2.3.1			 Thu Sep 3 2026 	       sc::MessageGrp(3)

home | help