
00001 00007 #ifndef BRAODCAST_STRATEGY 00008 #define BRAODCAST_STRATEGY 00009 00010 #define DEFAULT_BROADCAST_SPANNING_FACTOR 4 00011 00012 #include "ComlibManager.h" 00013 00026 class BroadcastStrategy : public Strategy, public CharmStrategy { 00027 00028 int _topology; //Topology to use Tree or Hypercube 00029 00030 //int handlerId; //broadcast handler id 00031 int spanning_factor; //the spanning factor of the tree 00032 00033 double logp; //ceil of log of number of processors 00034 00035 void initHypercube(); 00036 00037 void handleTree(void *msg); 00038 void handleHypercube(void *msg); 00039 00040 public: 00041 BroadcastStrategy(int topology = USE_HYPERCUBE); 00042 BroadcastStrategy(CkArrayID aid, int topology = USE_HYPERCUBE); 00043 BroadcastStrategy(CkMigrateMessage *m): Strategy(m), CharmStrategy(m) {} 00044 void insertMessage(MessageHolder *msg) {insertMessage((CharmMessageHolder*)msg);}; 00045 void insertMessage(CharmMessageHolder *msg); 00046 //void doneInserting(); 00047 00048 void handleMessage(void *msg); 00049 //void beginProcessing(int nelements); 00050 00051 virtual void pup(PUP::er &p); 00052 PUPable_decl(BroadcastStrategy); 00053 }; 00054 #endif 00055
1.5.5