Diffpack Documentation


Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

DistrProcManager.h

Go to the documentation of this file.
00001 
00005 class DistrProcManager : public HandleId
00006 
00007 {
00008  protected: 
00009   int my_id;          
00010   int num_procs;      
00011   int slaves_iter;    
00012   int loop_length;    
00013   int start_slave;
00014   int stop_slave;
00015 
00016   int send_reqs_counter;              
00017   int recv_reqs_counter;              
00018 
00019  public:
00020   DistrProcManager(){}
00021  ~DistrProcManager();
00022 
00023   virtual void init(int& argc, char**& argv);
00024   virtual void finish() {}
00025 
00026   virtual int  getNoProcs ()        { return 1; }
00027   virtual int  getMyId ()           { return 0; }
00028           void setMyId (int new_id) { my_id = new_id; }
00029 
00030   virtual bool isParallel () const  { return false; }
00031 
00032   int getSendCount()        { return send_reqs_counter; }
00033   int getRecvCount()        { return recv_reqs_counter; }
00034 
00035   bool master () const      { return getbool(my_id == 0); }
00036   bool slave  () const      { return getbool(my_id != 0); }
00037   
00038   void startIteratorOverSlaves();
00039   void startIteratorOverSlaves(int& start_slave, int& stop_slave);
00040 
00041   bool nextSlave (int& i);
00042 
00043   
00044   
00045 
00046   virtual void broadcast (real& r, int root = 0);
00047   virtual void broadcast (int&  i, int root = 0);
00048   virtual void broadcast (String& s, int root = 0);
00049 
00050   
00051   virtual void broadcast (char* c, int size, int root = 0); 
00052 
00053   
00054   virtual void broadcast (String* s, int root = 0); 
00055 
00056   virtual void broadcast (VecSimple(int)& vec, int root = 0);
00057   virtual void broadcast (VecSimple(real)& vec, int root = 0);
00058 
00059   
00060 
00061   
00062   virtual void send (real& r, int to = 0, int tag = 0);       
00063   virtual void recv (real& r, int from, int tag);
00064 
00065   virtual void send (int& i, int to = 0, int tag = 0);  
00066   virtual void recv (int& i, int from, int tag);
00067 
00068   virtual void send (char& c, int to = 0, int tag = 0);  
00069   virtual void recv (char& c, int from, int tag);
00070 
00071   virtual void send (VecSimple(real)& vec, int to, int tag);
00072   virtual void recv (VecSimple(real)& vec, int from, int tag);
00073 
00074   virtual void send (VecSimple(int)& vec, int to, int tag);
00075   virtual void recv (VecSimple(int)& vec, int from, int tag);
00076 
00077   virtual void send (VecSimple(char)& vec, int to, int tag);
00078   virtual void recv (VecSimple(char)& vec, int from, int tag);
00079 
00080   
00081   virtual void startSend (real& r, int to = 0, int tag = 0);
00082   virtual void startRecv (real& r, int from, int tag);
00083 
00084   virtual void startSend (int& i, int to = 0, int tag = 0);
00085   virtual void startRecv (int& i, int from, int tag);
00086 
00087   virtual void startSend (char& c, int to = 0, int tag = 0);
00088   virtual void startRecv (char& c, int from, int tag);
00089 
00090   virtual void startSend (VecSimple(real)& vec, int to = 0, int tag = 0);
00091   virtual void startRecv (VecSimple(real)& vec, int from, int tag);
00092 
00093   virtual void startSend (VecSimple(int)& vec, int to = 0, int tag = 0);
00094   virtual void startRecv (VecSimple(int)& vec, int from, int tag);
00095 
00096   virtual void startSend (VecSimple(char)& vec, int to = 0, int tag = 0);
00097   virtual void startRecv (VecSimple(char)& vec, int from, int tag);
00098 
00099   virtual void finishSend ();
00100   virtual void finishRecv ();
00101 
00102   
00103   
00104 
00105   virtual void redimReqVec (int i); 
00106   virtual void initRepSend (real& r, int to = 0, int tag = 0); 
00107   virtual void initRepRecv (real& r, int from, int tag);
00108   virtual void initRepSend (int& i, int to = 0, int tag = 0); 
00109   virtual void initRepRecv (int& i, int from, int tag);
00110 
00111   virtual void initRepSend (VecSimple(real)& vec, int to = 0, int tag = 0);
00112   virtual void initRepRecv (VecSimple(real)& vec, int from, int tag); 
00113   virtual void initRepSend (VecSimple(int)& vec, int to = 0, int tag = 0);
00114   virtual void initRepRecv (VecSimple(int)& vec, int from, int tag); 
00115 
00116   virtual void startRepSend ();
00117   virtual void startRepRecv ();
00118 
00119   virtual void completeRepSend ();
00120   virtual void completeRepRecv ();
00121 
00122   virtual void freeRepSend();
00123   virtual void freeRepRecv();
00124 
00125   
00126 
00127   virtual void reduce (real& r_loc, real& r_glob, CommOperation op, 
00128                        int root = 0);
00129   virtual void reduce (int&  i_loc, int&  i_glob, CommOperation op, 
00130                        int root = 0);
00131   virtual void reduce (VecSimple(real)& r_loc, VecSimple(real)& r_glob, 
00132                        int length, CommOperation op, int root=0);
00133   virtual void reduce (VecSimple(int)&  i_loc, VecSimple(int)& i_glob, 
00134                        int length, CommOperation op, int root=0);
00135   virtual void allReduce (real& r_loc, real& r_glob, CommOperation op);
00136   virtual void allReduce (int&  i_loc, int&  i_glob, CommOperation op);
00137   virtual void allReduce (VecSimple(real)& r_loc, VecSimple(real)& r_glob, 
00138                           int length, CommOperation op);
00139   virtual void allReduce (VecSimple(int)&  i_loc, VecSimple(int)& i_glob, 
00140                           int length, CommOperation op);
00141 
00142   virtual void synchronize ();
00143   virtual real getTime     ();
00144 
00145   
00146 
00147   virtual void probe (int source, int tag);
00148   virtual int  getStatusSource ();
00149   virtual int  getStatusTag ();
00150   virtual int  getStatusError ();
00151   virtual int  getStatusSize ();
00152 
00153   virtual int  getCommConstant (CommConstant const_name); 
00154 
00155   CLASS_INFO
00156   DEF_VIRTUAL_CAST(DistrProcManagerMPI)
00157 };
00158 
00159 

Copyright © 2003 inuTech GmbH. All rights reserved.