Adding RefineTopoLB: a topology-based refiner
authorTarun Agarwal <tagarwal@uiuc.edu>
Fri, 29 Apr 2005 03:27:58 +0000 (03:27 +0000)
committerTarun Agarwal <tagarwal@uiuc.edu>
Fri, 29 Apr 2005 03:27:58 +0000 (03:27 +0000)
src/ck-ldb/EveryLB.ci
src/ck-ldb/Make.lb
src/ck-ldb/Makefile_lb.sh
src/ck-ldb/RefineTopoLB.C [new file with mode: 0644]
src/ck-ldb/RefineTopoLB.ci [new file with mode: 0644]
src/ck-ldb/RefineTopoLB.h [new file with mode: 0644]
src/scripts/Make.depends
src/scripts/Makefile

index cae66dc940c13166e3b6aa7fb60379b31998acb0..e7af4e5504d60ed56844f1b369d76ba74fdcf577 100644 (file)
@@ -21,5 +21,6 @@ module EveryLB {
    extern module WSLB;
    extern module HybridLB;
    extern module TopoLB;
+   extern module RefineTopoLB;
    initnode void initEveryLB(void);
 };
index d72041e66206b5171cef8b7552b97f329d580686..841a93665a28c4caf5c48656b8cd2f167b588ef1 100644 (file)
@@ -1,7 +1,7 @@
 # Automatically generated by script Makefile_lb.sh
 #  by uid=21499(tarun) gid=80(kale) groups=80(kale)
-#  at honesty
-#  on Tue Apr 19 21:50:43 CDT 2005
+#  at finesse
+#  on Thu Apr 28 22:19:17 CDT 2005
 LOADBALANCERS=\
    $(L)/libmoduleDummyLB.a \
    $(L)/libmoduleComboCentLB.a \
@@ -24,6 +24,7 @@ LOADBALANCERS=\
    $(L)/libmoduleWSLB.a \
    $(L)/libmoduleHybridLB.a \
    $(L)/libmoduleTopoLB.a \
+   $(L)/libmoduleRefineTopoLB.a \
    manager.o
 
 DummyLB.def.h: DummyLB.decl.h
@@ -215,6 +216,15 @@ $(L)/libmoduleTopoLB.a: TopoLB.o
        $(CHARMC) -o $(L)/libmoduleTopoLB.a TopoLB.o 
        
 
+RefineTopoLB.def.h: RefineTopoLB.decl.h
+
+RefineTopoLB.decl.h: RefineTopoLB.ci charmxi
+       $(CHARMXI) RefineTopoLB.ci
+
+$(L)/libmoduleRefineTopoLB.a: RefineTopoLB.o 
+       $(CHARMC) -o $(L)/libmoduleRefineTopoLB.a RefineTopoLB.o 
+       
+
 # used for make dependes
 LB_OBJ=EveryLB.o \
     DummyLB.o \
@@ -238,6 +248,7 @@ LB_OBJ=EveryLB.o \
     WSLB.o \
     HybridLB.o \
     TopoLB.o \
+    RefineTopoLB.o \
     manager.o
 
 EveryLB.def.h: EveryLB.decl.h
index 9862695ee31cbf374718bab5fd1757708e5d2ed7..98b8ce235d2fd0241729d2f1267825471771b941 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-LOADBALANCERS="DummyLB ComboCentLB RandCentLB RefineLB RefineKLB  RefineCommLB GreedyLB GreedyCommLB GreedyAgentLB GridCommLB Comm1LB OrbLB RecBisectBfLB MetisLB PhasebyArrayLB RotateLB NeighborLB NeighborCommLB WSLB HybridLB TopoLB"
+LOADBALANCERS="DummyLB ComboCentLB RandCentLB RefineLB RefineKLB  RefineCommLB GreedyLB GreedyCommLB GreedyAgentLB GridCommLB Comm1LB OrbLB RecBisectBfLB MetisLB PhasebyArrayLB RotateLB NeighborLB NeighborCommLB WSLB HybridLB TopoLB RefineTopoLB"
 
 out="Make.lb"
 
diff --git a/src/ck-ldb/RefineTopoLB.C b/src/ck-ldb/RefineTopoLB.C
new file mode 100644 (file)
index 0000000..5657d5e
--- /dev/null
@@ -0,0 +1,274 @@
+/**************************************************************************
+RefineTopoLB: 
+This is a topology-aware load balancer.
+Author: Tarun Agarwal (tarun)
+Date: 04/27/2005
+***************************************************************************/
+#include <math.h>
+#include <stdlib.h>
+#include "charm++.h"
+#include "cklists.h"
+#include "CentralLB.h"
+
+#include "RefineTopoLB.decl.h"
+
+#include "RefineTopoLB.h"
+
+#define alpha PER_MESSAGE_SEND_OVERHEAD_DEFAULT  /*Startup time per message, seconds*/
+#define beta PER_BYTE_SEND_OVERHEAD_DEFAULT     /*Long-message time per byte, seconds*/
+#define DEG_THRES 0.50
+#define EPSILON  -0.001
+
+#define _lb_debug_on 0
+#define _lb_debug2_on 1
+#define _make_new_grouping_ 1
+
+CreateLBFunc_Def(RefineTopoLB,"TopoLB: Balance objects based on the network topology");
+
+
+RefineTopoLB::RefineTopoLB(const CkLBOptions &opt) : TopoLB (opt)
+{
+  lbname = "RefineTopoLB";
+  if (CkMyPe () == 0) {
+    CkPrintf ("[%d] RefineTopoLB created\n",CkMyPe());
+  }
+}
+
+CmiBool RefineTopoLB::QueryBalanceNow (int _step)
+{
+  return CmiTrue;
+}
+
+void RefineTopoLB :: work(CentralLB::LDStats *stats,int count)
+{
+  if (_lb_args.debug() >= 2) 
+  {
+    CkPrintf("In TopoLB Strategy...\n");
+  }
+  
+  /****Make sure that there is at least one available processor.***/
+  int proc;
+  for (proc = 0; proc < count; proc++) 
+  {
+    if (stats->procs[proc].available)  
+      break;
+  }
+       
+  if (proc == count) 
+  {
+    CmiAbort ("TopoLB: no available processors!");
+  }
+  removeNonMigratable(stats,count);
+
+  if(_lb_debug_on)
+  {
+    CkPrintf("Num of procs: %d\n",count);
+    CkPrintf("Num of objs:  %d\n",stats->n_objs);
+  }
+
+  /**************Initialize Topology ****************************/
+  LBtopoFn topofn;
+  topofn = LBTopoLookup(_lbtopo);
+  if (topofn == NULL) 
+  {
+       char str[1024];
+    CmiPrintf("TopoLB> Fatal error: Unknown topology: %s. Choose from:\n", _lbtopo);
+    printoutTopo();
+    sprintf(str, "TopoLB> Fatal error: Unknown topology: %s", _lbtopo);
+    CmiAbort(str);
+  }
+  topo = topofn(count);
+  /**************************************************************/
+  if(_lb_debug_on)
+    CkPrintf("before computing partitions...\n");
+  
+  int *newmap = new int[stats->n_objs];
+  if(_make_new_grouping_)
+    computePartitions(stats,count,newmap);
+  else
+  {
+    for(int i=0;i<stats->n_objs;i++)
+    {
+      newmap[i]=stats->from_proc[i];
+    }
+  }
+  /***************** Fill Data Structures *************************/
+  if(_lb_debug_on)
+    CkPrintf("before allocating dataStructures...\n");
+  allocateDataStructures(count);
+  if(_lb_debug_on)
+    CkPrintf("before initizlizing dataStructures...\n");
+  initDataStructures(stats,count,newmap);
+  if(_lb_debug_on)
+    CkPrintf("After initizlizing dataStructures...\n");
+  for(int i=0;i<count;i++)
+    assign[i]=i;
+  if(_lb_debug_on)
+    printDataStructures(count, stats->n_objs,newmap);
+  /***************** Perform RefineMent *************************/
+  bool *swapdone=new bool[count];
+  for(int i=0;i<count;i++)
+    swapdone[i]=false;
+
+    
+  //double hbval=getHopBytes(stats,count,stats->from_proc);
+  double hbval=getInterMedHopBytes(stats,count,newmap);
+ // CkPrintf(" Before Mapping Original   hopBytes : %lf  Avg comm hops: %lf\n", hbval,hbval/total_comm);
+  //Perform ith swap
+  double totalGain=0;
+  for(int i=0;i<count;i++)
+  {
+    //select the cpart which is most communicating and hasn't been moved yet
+    int cpart=-1;
+    double maxComm=-1;
+    for(int j=0;j<count;j++)
+    {
+      if(swapdone[j]) continue;
+      if(commUA[j]>maxComm)
+      {
+        maxComm=commUA[j];
+        cpart=j;
+      }
+    }
+    CmiAssert(cpart!=-1);
+
+    //Next find a cpart for swap
+    int swapcpart=-1;
+    double gainMax=-1;
+    double gain=-1;;
+    double orig_value=getInterMedHopBytes(stats,count,newmap);
+    for(int j=0;j<count;j++)
+    {
+      if(j==cpart)
+        continue;
+
+      //Just a test
+      /*
+      int temp=assign[cpart];
+      assign[cpart]=assign[j];
+      assign[j]=temp;
+      gain=orig_value-getInterMedHopBytes(stats,count,newmap);
+      assign[j]=assign[cpart];
+      assign[cpart]=temp;
+      */
+      
+      gain=findSwapGain(j,cpart,count);
+      //CkPrintf("%lf : %lf\n",gain,findSwapGain(j,cpart,count));
+      if(gain>gainMax && gain>0)
+      {
+        gainMax=gain;
+        swapcpart=j;
+      }
+      //Just a test
+    }
+    if(swapcpart==-1)
+    {
+      swapdone[cpart]=true;
+      continue;
+    }
+    totalGain+=gainMax;
+    CmiAssert(swapcpart!=-1);
+    
+    //Just a test
+    //if(i==10)
+     // i=count;
+
+    //Actually swap
+    int temp=assign[cpart];
+    assign[cpart]=assign[swapcpart];
+    assign[swapcpart]=temp;
+    swapdone[cpart]=true;
+  //  CkPrintf("Gain: %lf  Total_Gain: %lf HopBytes: %lf\n ",gainMax,totalGain,getInterMedHopBytes(stats,count,newmap));
+ //   CkPrintf(" %lf  getInterMedHopBytes(stats,count,newmap);
+//    CkPrintf("Swap# %d:  %d and %d\n",i+1,cpart,swapcpart);
+  }
+  /******************* Assign mapping and print Stats*********/
+  for(int i=0;i<stats->n_objs;i++)
+  {
+    stats->to_proc[i]= assign[newmap[i]];
+  }
+  if(_lb_debug2_on)
+  {
+    double hbval=getHopBytes(stats,count,stats->from_proc);
+    CkPrintf(" Original   hopBytes : %lf  Avg comm hops: %lf\n", hbval,hbval/total_comm);
+  //  hbval=getHopBytes(stats,count,stats->to_proc);
+    //CkPrintf(" Resulting  hopBytes : %lf  Avg comm hops: %lf\n", hbval,hbval/total_comm);
+    hbval=getInterMedHopBytes(stats,count,newmap);
+    CkPrintf("Other Resulting  hopBytes : %lf  Avg comm hops: %lf\n", hbval,hbval/total_comm);
+  }
+  freeDataStructures(count);
+  delete[] newmap;
+  delete[] swapdone;
+}
+
+double RefineTopoLB::findSwapGain(int cpart1, int cpart2,int count)
+{
+  double oldvalue=0;
+  for(int i=0;i<count;i++)
+  {
+    oldvalue+=comm[cpart1][i]*dist[assign[cpart1]][assign[i]];
+    oldvalue+=comm[cpart2][i]*dist[assign[cpart2]][assign[i]];
+  }
+
+  int temp=assign[cpart1];
+  assign[cpart1]=assign[cpart2];
+  assign[cpart2]=temp;
+
+  for(int i=0;i<count;i++)
+  {
+    oldvalue-=comm[cpart1][i]*dist[assign[cpart1]][assign[i]];
+    oldvalue-=comm[cpart2][i]*dist[assign[cpart2]][assign[i]];
+  }
+
+  assign[cpart2]=assign[cpart1];
+  assign[cpart1]=temp;
+  return oldvalue;
+  
+  double old1=getCpartHopBytes(cpart1,assign[cpart1],count);
+  double old2=getCpartHopBytes(cpart2,assign[cpart2],count);
+  double new1=getCpartHopBytes(cpart1,assign[cpart2],count);
+  double new2=getCpartHopBytes(cpart2,assign[cpart1],count);
+  return(old1-new1+old2-new2);
+}
+
+double RefineTopoLB::getCpartHopBytes(int cpart, int proc, int count)
+{
+  double totalHB=0;
+  for(int i=0;i<count;i++)
+  {
+    if(assign[i]==proc)
+    {
+      totalHB+=comm[cpart][i]*dist[proc][assign[cpart]];
+    }
+    else
+    {
+      totalHB+=comm[cpart][i]*dist[proc][assign[i]];
+    }
+  }
+  return totalHB;
+}
+
+double RefineTopoLB::getInterMedHopBytes(CentralLB::LDStats *stats,int count, int *newmap)
+{
+  double totalHB=0;
+
+  for(int i=0;i<count;i++)
+  {
+    for(int j=0;j<count;j++)
+    {
+      totalHB+=comm[i][j]*dist[assign[i]][assign[j]];
+    }
+  }
+  return totalHB;
+  /*
+  CkVec<int> obj_to_proc;
+  for(int i=0;i<stats->n_objs;i++)
+  {
+    obj_to_proc.push_back(assign[newmap[i]]);
+  }
+  return getHopBytes(stats,count,obj_to_proc);
+  */
+}
+
+#include "RefineTopoLB.def.h"
diff --git a/src/ck-ldb/RefineTopoLB.ci b/src/ck-ldb/RefineTopoLB.ci
new file mode 100644 (file)
index 0000000..7d26a88
--- /dev/null
@@ -0,0 +1,9 @@
+module RefineTopoLB
+{
+  extern module CentralLB;
+  initnode void lbinit (void);
+  group [migratable] RefineTopoLB : CentralLB
+  {
+    entry void RefineTopoLB (const CkLBOptions &);
+  };
+};
diff --git a/src/ck-ldb/RefineTopoLB.h b/src/ck-ldb/RefineTopoLB.h
new file mode 100644 (file)
index 0000000..4bc7e98
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef _REFINETOPOLB_H_
+#define _REINETOPOLB_H_
+
+#include "CentralLB.h"
+#include "TopoLB.h"
+#include "topology.h"
+
+#ifndef INFTY
+#define INFTY 999999999
+#endif
+
+void CreateTopoLB ();
+
+class RefineTopoLB : public TopoLB
+{
+  public:
+    RefineTopoLB (const CkLBOptions &opt);
+    RefineTopoLB (CkMigrateMessage *m) : TopoLB (m) { };
+  
+    void work (CentralLB::LDStats *stats, int count);
+    void pup (PUP::er &p) { TopoLB::pup(p); }
+       
+    //LBTopology                       *topo;
+  
+  protected:
+    double getCpartHopBytes(int cpart,int proc, int count);
+    double findSwapGain(int cpart1, int cpart2,int count);
+    double getInterMedHopBytes(CentralLB::LDStats *stats,int count, int *newmap);
+    CmiBool QueryBalanceNow (int step);
+}; 
+
+
+#endif /* _TOPOLB_H_ */
index 68b9f0c2001b4d6951c88a146e496fd5f5cad4d8..197f6a57d9f4ceda3827d6ce0a801014476478e6 100644 (file)
@@ -603,12 +603,12 @@ waitqd.o: waitqd.C waitqd.h charm++.h charm.h converse.h conv-config.h \
 LBDatabase.o: LBDatabase.C converse.h conv-config.h conv-common.h \
   conv-mach.h conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h \
   conv-cpath.h conv-qd.h conv-random.h conv-lists.h conv-trace.h \
-  persistent.h debug-conv.h LBDatabase.h lbdb.h charm.h pup.h \
-  LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h \
-  LBDatabase.decl.h charm++.h middle.h middle-conv.h ckbitvector.h \
-  ckstream.h init.h ckhashtable.h debug-charm.h CkMarshall.decl.h \
-  cksection.h ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h \
-  ckobjQ.h ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
+  persistent.h debug-conv.h LBDatabase.h lbdb.h charm.h pup.h middle.h \
+  middle-conv.h LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h \
+  LBMachineUtil.h LBDatabase.decl.h charm++.h ckbitvector.h ckstream.h \
+  init.h ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h \
+  ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h \
+  ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
   CkArrayReductionMgr.decl.h ckmemcheckpoint.h CkMemCheckpoint.decl.h \
   readonly.h ckarray.h cklocation.h CkLocation.decl.h CkArray.decl.h \
   ComlibArrayListener.h ComlibStrategy.h convcomlibstrategy.h \
@@ -622,9 +622,9 @@ LBDatabase.o: LBDatabase.C converse.h conv-config.h conv-common.h \
 lbdb.o: lbdb.C converse.h conv-config.h conv-common.h conv-mach.h \
   conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h \
   conv-qd.h conv-random.h conv-lists.h conv-trace.h persistent.h \
-  debug-conv.h lbdb.h charm.h pup.h LBObj.h LBOM.h LBDatabase.h \
-  LBDBManager.h cklists.h LBComm.h LBMachineUtil.h LBDatabase.decl.h \
-  charm++.h middle.h middle-conv.h ckbitvector.h ckstream.h init.h \
+  debug-conv.h lbdb.h charm.h pup.h middle.h middle-conv.h LBObj.h LBOM.h \
+  LBDatabase.h LBDBManager.h cklists.h LBComm.h LBMachineUtil.h \
+  LBDatabase.decl.h charm++.h ckbitvector.h ckstream.h init.h \
   ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h ckcallback.h \
   conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h ckreduction.h \
   CkReduction.decl.h cknodegroupreduction.h CkArrayReductionMgr.decl.h \
@@ -695,11 +695,11 @@ LBAgent.o: LBAgent.C LBAgent.h CentralLB.h BaseLB.h LBDatabase.h lbdb.h \
   converse.h conv-config.h conv-common.h conv-mach.h conv-autoconfig.h \
   conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h conv-qd.h conv-random.h \
   conv-lists.h conv-trace.h persistent.h debug-conv.h charm.h pup.h \
-  LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h \
-  LBDatabase.decl.h charm++.h middle.h middle-conv.h ckbitvector.h \
-  ckstream.h init.h ckhashtable.h debug-charm.h CkMarshall.decl.h \
-  cksection.h ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h \
-  ckobjQ.h ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
+  middle.h middle-conv.h LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h \
+  LBMachineUtil.h LBDatabase.decl.h charm++.h ckbitvector.h ckstream.h \
+  init.h ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h \
+  ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h \
+  ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
   CkArrayReductionMgr.decl.h ckmemcheckpoint.h CkMemCheckpoint.decl.h \
   readonly.h ckarray.h cklocation.h CkLocation.decl.h CkArray.decl.h \
   ComlibArrayListener.h ComlibStrategy.h convcomlibstrategy.h \
@@ -713,11 +713,11 @@ LBProfit.o: LBProfit.C converse.h conv-config.h conv-common.h conv-mach.h \
   conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h \
   conv-qd.h conv-random.h conv-lists.h conv-trace.h persistent.h \
   debug-conv.h LBProfit.h BaseLB.h LBDatabase.h lbdb.h charm.h pup.h \
-  LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h \
-  LBDatabase.decl.h charm++.h middle.h middle-conv.h ckbitvector.h \
-  ckstream.h init.h ckhashtable.h debug-charm.h CkMarshall.decl.h \
-  cksection.h ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h \
-  ckobjQ.h ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
+  middle.h middle-conv.h LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h \
+  LBMachineUtil.h LBDatabase.decl.h charm++.h ckbitvector.h ckstream.h \
+  init.h ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h \
+  ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h \
+  ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
   CkArrayReductionMgr.decl.h ckmemcheckpoint.h CkMemCheckpoint.decl.h \
   readonly.h ckarray.h cklocation.h CkLocation.decl.h CkArray.decl.h \
   ComlibArrayListener.h ComlibStrategy.h convcomlibstrategy.h \
@@ -786,7 +786,7 @@ LBDBManager.o: LBDBManager.C charm++.h charm.h converse.h conv-config.h \
 LBComm.o: LBComm.C converse.h conv-config.h conv-common.h conv-mach.h \
   conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h \
   conv-qd.h conv-random.h conv-lists.h conv-trace.h persistent.h \
-  debug-conv.h LBComm.h lbdb.h charm.h pup.h
+  debug-conv.h LBComm.h lbdb.h charm.h pup.h middle.h middle-conv.h
        $(CHARMC) -c -I. LBComm.C
 
 LBObj.o: LBObj.C charm++.h charm.h converse.h conv-config.h conv-common.h \
@@ -811,11 +811,11 @@ LBMachineUtil.o: LBMachineUtil.C LBDatabase.h lbdb.h converse.h \
   conv-config.h conv-common.h conv-mach.h conv-autoconfig.h \
   conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h conv-qd.h conv-random.h \
   conv-lists.h conv-trace.h persistent.h debug-conv.h charm.h pup.h \
-  LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h \
-  LBDatabase.decl.h charm++.h middle.h middle-conv.h ckbitvector.h \
-  ckstream.h init.h ckhashtable.h debug-charm.h CkMarshall.decl.h \
-  cksection.h ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h \
-  ckobjQ.h ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
+  middle.h middle-conv.h LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h \
+  LBMachineUtil.h LBDatabase.decl.h charm++.h ckbitvector.h ckstream.h \
+  init.h ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h \
+  ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h \
+  ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
   CkArrayReductionMgr.decl.h ckmemcheckpoint.h CkMemCheckpoint.decl.h \
   readonly.h ckarray.h cklocation.h CkLocation.decl.h CkArray.decl.h \
   ComlibArrayListener.h ComlibStrategy.h convcomlibstrategy.h \
@@ -945,9 +945,9 @@ WSLB.o: WSLB.C charm++.h charm.h converse.h conv-config.h conv-common.h \
 ObjGraph.o: ObjGraph.C ObjGraph.h lbdb.h converse.h conv-config.h \
   conv-common.h conv-mach.h conv-autoconfig.h conv-mach-opt.h pup_c.h \
   conv-cpm.h conv-cpath.h conv-qd.h conv-random.h conv-lists.h \
-  conv-trace.h persistent.h debug-conv.h charm.h pup.h CentralLB.h \
-  BaseLB.h LBDatabase.h LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h \
-  LBMachineUtil.h LBDatabase.decl.h charm++.h middle.h middle-conv.h \
+  conv-trace.h persistent.h debug-conv.h charm.h pup.h middle.h \
+  middle-conv.h CentralLB.h BaseLB.h LBDatabase.h LBDBManager.h cklists.h \
+  LBObj.h LBOM.h LBComm.h LBMachineUtil.h LBDatabase.decl.h charm++.h \
   ckbitvector.h ckstream.h init.h ckhashtable.h debug-charm.h \
   CkMarshall.decl.h cksection.h ckcallback.h conv-ccs.h sockRoutines.h \
   ccs-server.h ckobjQ.h ckreduction.h CkReduction.decl.h \
@@ -970,9 +970,9 @@ graph.o: graph.c converse.h conv-config.h conv-common.h conv-mach.h \
 LButil.o: LButil.C elements.h converse.h conv-config.h conv-common.h \
   conv-mach.h conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h \
   conv-cpath.h conv-qd.h conv-random.h conv-lists.h conv-trace.h \
-  persistent.h debug-conv.h lbdb.h charm.h pup.h Set.h cklists.h heap.h \
-  BaseLB.h LBDatabase.h LBDBManager.h LBObj.h LBOM.h LBComm.h \
-  LBMachineUtil.h LBDatabase.decl.h charm++.h middle.h middle-conv.h \
+  persistent.h debug-conv.h lbdb.h charm.h pup.h middle.h middle-conv.h \
+  Set.h cklists.h heap.h BaseLB.h LBDatabase.h LBDBManager.h LBObj.h \
+  LBOM.h LBComm.h LBMachineUtil.h LBDatabase.decl.h charm++.h \
   ckbitvector.h ckstream.h init.h ckhashtable.h debug-charm.h \
   CkMarshall.decl.h cksection.h ckcallback.h conv-ccs.h sockRoutines.h \
   ccs-server.h ckobjQ.h ckreduction.h CkReduction.decl.h \
@@ -989,11 +989,11 @@ Refiner.o: Refiner.C Refiner.h CentralLB.h BaseLB.h LBDatabase.h lbdb.h \
   converse.h conv-config.h conv-common.h conv-mach.h conv-autoconfig.h \
   conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h conv-qd.h conv-random.h \
   conv-lists.h conv-trace.h persistent.h debug-conv.h charm.h pup.h \
-  LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h \
-  LBDatabase.decl.h charm++.h middle.h middle-conv.h ckbitvector.h \
-  ckstream.h init.h ckhashtable.h debug-charm.h CkMarshall.decl.h \
-  cksection.h ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h \
-  ckobjQ.h ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
+  middle.h middle-conv.h LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h \
+  LBMachineUtil.h LBDatabase.decl.h charm++.h ckbitvector.h ckstream.h \
+  init.h ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h \
+  ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h \
+  ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
   CkArrayReductionMgr.decl.h ckmemcheckpoint.h CkMemCheckpoint.decl.h \
   readonly.h ckarray.h cklocation.h CkLocation.decl.h CkArray.decl.h \
   ComlibArrayListener.h ComlibStrategy.h convcomlibstrategy.h \
@@ -1008,11 +1008,11 @@ RefinerApprox.o: RefinerApprox.C RefinerApprox.h CentralLB.h BaseLB.h \
   LBDatabase.h lbdb.h converse.h conv-config.h conv-common.h conv-mach.h \
   conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h \
   conv-qd.h conv-random.h conv-lists.h conv-trace.h persistent.h \
-  debug-conv.h charm.h pup.h LBDBManager.h cklists.h LBObj.h LBOM.h \
-  LBComm.h LBMachineUtil.h LBDatabase.decl.h charm++.h middle.h \
-  middle-conv.h ckbitvector.h ckstream.h init.h ckhashtable.h \
-  debug-charm.h CkMarshall.decl.h cksection.h ckcallback.h conv-ccs.h \
-  sockRoutines.h ccs-server.h ckobjQ.h ckreduction.h CkReduction.decl.h \
+  debug-conv.h charm.h pup.h middle.h middle-conv.h LBDBManager.h \
+  cklists.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h LBDatabase.decl.h \
+  charm++.h ckbitvector.h ckstream.h init.h ckhashtable.h debug-charm.h \
+  CkMarshall.decl.h cksection.h ckcallback.h conv-ccs.h sockRoutines.h \
+  ccs-server.h ckobjQ.h ckreduction.h CkReduction.decl.h \
   cknodegroupreduction.h CkArrayReductionMgr.decl.h ckmemcheckpoint.h \
   CkMemCheckpoint.decl.h readonly.h ckarray.h cklocation.h \
   CkLocation.decl.h CkArray.decl.h ComlibArrayListener.h ComlibStrategy.h \
@@ -1027,11 +1027,11 @@ RefinerComm.o: RefinerComm.C RefinerComm.h CentralLB.h BaseLB.h \
   LBDatabase.h lbdb.h converse.h conv-config.h conv-common.h conv-mach.h \
   conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h \
   conv-qd.h conv-random.h conv-lists.h conv-trace.h persistent.h \
-  debug-conv.h charm.h pup.h LBDBManager.h cklists.h LBObj.h LBOM.h \
-  LBComm.h LBMachineUtil.h LBDatabase.decl.h charm++.h middle.h \
-  middle-conv.h ckbitvector.h ckstream.h init.h ckhashtable.h \
-  debug-charm.h CkMarshall.decl.h cksection.h ckcallback.h conv-ccs.h \
-  sockRoutines.h ccs-server.h ckobjQ.h ckreduction.h CkReduction.decl.h \
+  debug-conv.h charm.h pup.h middle.h middle-conv.h LBDBManager.h \
+  cklists.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h LBDatabase.decl.h \
+  charm++.h ckbitvector.h ckstream.h init.h ckhashtable.h debug-charm.h \
+  CkMarshall.decl.h cksection.h ckcallback.h conv-ccs.h sockRoutines.h \
+  ccs-server.h ckobjQ.h ckreduction.h CkReduction.decl.h \
   cknodegroupreduction.h CkArrayReductionMgr.decl.h ckmemcheckpoint.h \
   CkMemCheckpoint.decl.h readonly.h ckarray.h cklocation.h \
   CkLocation.decl.h CkArray.decl.h ComlibArrayListener.h ComlibStrategy.h \
@@ -1048,13 +1048,15 @@ bitvecset.o: bitvecset.c bitvecset.h
 Set.o: Set.C Set.h elements.h converse.h conv-config.h conv-common.h \
   conv-mach.h conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h \
   conv-cpath.h conv-qd.h conv-random.h conv-lists.h conv-trace.h \
-  persistent.h debug-conv.h lbdb.h charm.h pup.h cklists.h
+  persistent.h debug-conv.h lbdb.h charm.h pup.h middle.h middle-conv.h \
+  cklists.h
        $(CHARMC) -c -I. Set.C
 
 heap.o: heap.C heap.h elements.h converse.h conv-config.h conv-common.h \
   conv-mach.h conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h \
   conv-cpath.h conv-qd.h conv-random.h conv-lists.h conv-trace.h \
-  persistent.h debug-conv.h lbdb.h charm.h pup.h Set.h cklists.h
+  persistent.h debug-conv.h lbdb.h charm.h pup.h middle.h middle-conv.h \
+  Set.h cklists.h
        $(CHARMC) -c -I. heap.C
 
 CommLBHeap.o: CommLBHeap.C CommLBHeap.h charm++.h charm.h converse.h \
@@ -1190,7 +1192,7 @@ EveryLB.o: EveryLB.C charm++.h charm.h converse.h conv-config.h \
   PhasebyArrayLB.decl.h RotateLB.decl.h NeighborLB.decl.h \
   NborBaseLB.decl.h NeighborLBMsg.h NeighborCommLB.decl.h WSLB.decl.h \
   HybridLB.decl.h HybridBaseLB.decl.h HybridLBMsg.h TopoLB.decl.h \
-  EveryLB.def.h
+  RefineTopoLB.decl.h EveryLB.def.h
        $(CHARMC) -c -I. EveryLB.C
 
 DummyLB.o: DummyLB.C charm++.h charm.h converse.h conv-config.h \
@@ -1586,15 +1588,35 @@ TopoLB.o: TopoLB.C charm++.h charm.h converse.h conv-config.h \
   TopoLB.decl.h TopoLB.h topology.h TopoLB.def.h
        $(CHARMC) -c -I. TopoLB.C
 
+RefineTopoLB.o: RefineTopoLB.C charm++.h charm.h converse.h conv-config.h \
+  conv-common.h conv-mach.h conv-autoconfig.h conv-mach-opt.h pup_c.h \
+  conv-cpm.h conv-cpath.h conv-qd.h conv-random.h conv-lists.h \
+  conv-trace.h persistent.h debug-conv.h pup.h middle.h middle-conv.h \
+  cklists.h ckbitvector.h ckstream.h init.h ckhashtable.h debug-charm.h \
+  CkMarshall.decl.h cksection.h ckcallback.h conv-ccs.h sockRoutines.h \
+  ccs-server.h ckobjQ.h ckreduction.h CkReduction.decl.h \
+  cknodegroupreduction.h CkArrayReductionMgr.decl.h ckmemcheckpoint.h \
+  CkMemCheckpoint.decl.h readonly.h ckarray.h cklocation.h LBDatabase.h \
+  lbdb.h LBDBManager.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h \
+  LBDatabase.decl.h NullLB.decl.h BaseLB.decl.h CkLocation.decl.h \
+  CkArray.decl.h ComlibArrayListener.h ComlibStrategy.h \
+  convcomlibstrategy.h ComlibLearner.h envelope.h CkFutures.decl.h \
+  charisma.h charisma.decl.h tempo.h tempo.decl.h waitqd.h waitqd.decl.h \
+  sdag.h ckcheckpoint.h CkCheckpoint.decl.h ckarrayreductionmgr.h trace.h \
+  trace-bluegene.h CentralLB.h BaseLB.h CentralLB.decl.h CentralLBMsg.h \
+  RefineTopoLB.decl.h RefineTopoLB.h TopoLB.h topology.h \
+  RefineTopoLB.def.h
+       $(CHARMC) -c -I. RefineTopoLB.C
+
 manager.o: manager.C manager.h CentralLB.h BaseLB.h LBDatabase.h lbdb.h \
   converse.h conv-config.h conv-common.h conv-mach.h conv-autoconfig.h \
   conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h conv-qd.h conv-random.h \
   conv-lists.h conv-trace.h persistent.h debug-conv.h charm.h pup.h \
-  LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h LBMachineUtil.h \
-  LBDatabase.decl.h charm++.h middle.h middle-conv.h ckbitvector.h \
-  ckstream.h init.h ckhashtable.h debug-charm.h CkMarshall.decl.h \
-  cksection.h ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h \
-  ckobjQ.h ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
+  middle.h middle-conv.h LBDBManager.h cklists.h LBObj.h LBOM.h LBComm.h \
+  LBMachineUtil.h LBDatabase.decl.h charm++.h ckbitvector.h ckstream.h \
+  init.h ckhashtable.h debug-charm.h CkMarshall.decl.h cksection.h \
+  ckcallback.h conv-ccs.h sockRoutines.h ccs-server.h ckobjQ.h \
+  ckreduction.h CkReduction.decl.h cknodegroupreduction.h \
   CkArrayReductionMgr.decl.h ckmemcheckpoint.h CkMemCheckpoint.decl.h \
   readonly.h ckarray.h cklocation.h CkLocation.decl.h CkArray.decl.h \
   ComlibArrayListener.h ComlibStrategy.h convcomlibstrategy.h \
@@ -1719,7 +1741,7 @@ ComlibManager.o: ComlibManager.C ComlibManager.h charm++.h charm.h \
   pup_cmialloc.h RingMulticastStrategy.h MultiRingMulticast.h \
   PipeBroadcastStrategy.h pipebroadcastconverse.h BroadcastStrategy.h \
   MeshStreamingStrategy.h PrioStreaming.h qd.h CentralLB.h BaseLB.h \
-  CentralLB.decl.h CentralLBMsg.h comlib.def.h pipelinestrategy.h
+  CentralLB.decl.h CentralLBMsg.h comlib.def.h
        $(CHARMC) -c -I. ComlibManager.C
 
 MPIStrategy.o: MPIStrategy.C MPIStrategy.h ComlibManager.h charm++.h \
@@ -1996,7 +2018,7 @@ PipeBroadcastStrategy.o: PipeBroadcastStrategy.C PipeBroadcastStrategy.h \
   charisma.h charisma.decl.h tempo.h tempo.decl.h waitqd.h waitqd.decl.h \
   sdag.h ckcheckpoint.h CkCheckpoint.decl.h ckarrayreductionmgr.h trace.h \
   trace-bluegene.h comlib.h router.h convcomlibmanager.h ComlibStats.h \
-  comlib.decl.h pipebroadcastconverse.h pipelinestrategy.h
+  comlib.decl.h pipebroadcastconverse.h
        $(CHARMC) -c -I. PipeBroadcastStrategy.C
 
 MeshStreamingStrategy.o: MeshStreamingStrategy.C MeshStreamingStrategy.h \
@@ -2244,8 +2266,8 @@ pipebroadcastconverse.o: pipebroadcastconverse.C pipebroadcastconverse.h \
   comlib.h router.h
        $(CHARMC) -c -I. pipebroadcastconverse.C
 
-pipelinestrategy.o: pipelinestrategy.C pipelinestrategy.h \
-  ckhashtable.h pup.h converse.h conv-config.h conv-common.h conv-mach.h \
+pipelinestrategy.o: pipelinestrategy.C pipelinestrategy.h ckhashtable.h \
+  pup.h converse.h conv-config.h conv-common.h conv-mach.h \
   conv-autoconfig.h conv-mach-opt.h pup_c.h conv-cpm.h conv-cpath.h \
   conv-qd.h conv-random.h conv-lists.h conv-trace.h persistent.h \
   debug-conv.h charm++.h charm.h middle.h middle-conv.h cklists.h \
index fe54c90c0ba3215347127df5e3c11829b8f49a38..960256fe1fa81722e378404e98cd60ae73e2224e 100644 (file)
@@ -184,7 +184,7 @@ CKHEADERS=ck.h ckstream.h envelope.h init.h qd.h charm.h charm++.h \
          BaseLB.h CentralLB.h CentralLBMsg.h RandCentLB.h RecBisectBfLB.h \
          RefineLB.h RefineKLB.h RefineCommLB.h OrbLB.h \
          GreedyLB.h GreedyCommLB.h GreedyAgentLB.h Comm1LB.h MetisLB.h \
-      TopoLB.h    PhasebyArrayLB.h RotateLB.h GridCommLB.h DummyLB.h  \
+      TopoLB.h RefineTopoLB.h   PhasebyArrayLB.h RotateLB.h GridCommLB.h DummyLB.h  \
          NborBaseLB.h HybridBaseLB.h HybridLB.h HybridLBMsg.h \
          NeighborLB.h NeighborCommLB.h NeighborLBMsg.h WSLB.h \
          BlueGene.h middle.h middle-conv.h middle-blue.h \
@@ -197,7 +197,7 @@ CKHEADERS=ck.h ckstream.h envelope.h init.h qd.h charm.h charm++.h \
           DummyLB.decl.h RotateLB.decl.h RefineLB.decl.h RefineKLB.decl.h  \
           RefineCommLB.decl.h OrbLB.decl.h GreedyLB.decl.h GreedyCommLB.decl.h \
           Comm1LB.decl.h GreedyAgentLB.decl.h GridCommLB.decl.h \
-         PhasebyArrayLB.decl.h TopoLB.decl.h\
+         PhasebyArrayLB.decl.h TopoLB.decl.h RefineTopoLB.decl.h\
           NborBaseLB.decl.h NeighborLB.decl.h NeighborCommLB.decl.h \
           HybridBaseLB.decl.h HybridLB.decl.h WSLB.decl.h EveryLB.decl.h \
           charisma.decl.h TraceSummary.decl.h BlueGene.decl.h \