Made a small fix to the locality usage, added a README.
authorTerry L. Wilmarth <wilmarth@uiuc.edu>
Fri, 19 Oct 2007 23:41:10 +0000 (23:41 +0000)
committerTerry L. Wilmarth <wilmarth@uiuc.edu>
Fri, 19 Oct 2007 23:41:10 +0000 (23:41 +0000)
examples/pose/PHOLD/Makefile
examples/pose/PHOLD/README [new file with mode: 0644]
examples/pose/PHOLD/Worker.C
examples/pose/PHOLD/Worker.h

index c5ed40ac3aa65d89725e9687b719ebdcf212903e..fe60cd7d1d75ff028b2b9d8207f42ff2676ac2f4 100644 (file)
@@ -52,6 +52,10 @@ $(PGM):      $(SIM_OBJECTS)
        $(CHARMC) $(SIM_OBJECTS) $(OTHER) $(LIBS) -o $(PGM) \
        -module pose -language charm++
 
+$(PGM).prof:   $(SIM_OBJECTS) 
+       $(CHARMC) $(SIM_OBJECTS) $(OTHER) $(LIBS) -o $(PGM) \
+       -module pose -language charm++ -pg
+
 $(PGM).seq: seqobjs
        $(CHARMC) $(SIM_OBJECTS) $(OTHER) $(LIBS) -o $(PGM).seq \
        -DSEQUENTIAL_POSE=1 -module seqpose -language charm++
diff --git a/examples/pose/PHOLD/README b/examples/pose/PHOLD/README
new file mode 100644 (file)
index 0000000..0765d8e
--- /dev/null
@@ -0,0 +1,36 @@
+Usage: phold <#LPs> <#initMsgs> <initMsgDist (RANDOM)> <timestampIncFn
+(RANDOM)> <moveFn (RANDOM)> [ -g[f|m|c|z] | -t<granularity> ]
+<spacialLocality ()> <timescale (>=100)>  
+
+This program creates a number of posers, i.e. PDES objects or LPs as specified by <#LPs>.
+
+Each object, known as a Worker, is created on the available processors
+according to a UNIFORM distribution.  As each Worker is created, it
+initiates <#initMsgs> "work" events on random Worker objects, at times scaled
+by <timescale> with distribution <initMsgDist>. <initMsgDist> is
+currently ignored and set to RANDOM.  Here <timescale> represents a range
+of acceptable times at which to generate messages, and should be at
+least 100.  Note that only 10^2 and higher digits are meaningful in
+this context (but the actual value is used later).
+
+<timestampIncFn> and <moveFn> are currently ignored and set to RANDOM.
+
+To specify grainsize, use -g or -t.  -g takes a single character arg,
+f, m, c, or z, representing fine, medium, coarse or mixed,
+respectively.  These represent busy-wait values of 0.000010, 0.001000,
+and 0.010000, or a mix of these, respectively.  Alternatively, -t can
+be used to specify a specific busy-wait value.
+
+When a Worker receives a work event, it busy-waits for the indicated
+grainsize.  Then if its current time is below <timescale> (here
+specifying a specific endtime), it
+generates another work message for a neighbor worker, where neighbor
+is defined by a percentage <spacialLocality>.  For example, 100%
+locality will send to the two Workers immediately above and below the current
+object (in numbering).  50% locality will consist of the neighborhood
+around the current Worker that contains 50% of all Workers.  These
+messages are specified with offsets similar to the initial messages
+--- randomly in the future within the timescale.
+
+The simulation terminates when all messages have been processed.
+
index a20312478abdc976669837d89e9ae0bc0ba49301..76b8ada023be4e45d664550d778efa008fd51e6f 100644 (file)
@@ -60,7 +60,8 @@ void worker::work(WorkMsg *m)
     wm->fromPE = myHandle;
     offset = 1 + POSE_rand() % (tscale/100);
     while ((nbr < 0) || (nbr >= numObjs)) {
-      away = (POSE_rand() % locality) + 1;
+      away = (POSE_rand() % (numObjs - ((int)((((float)locality)/100.0) * (float)numObjs)))) + 1;
+      away = away/2;
       sign = POSE_rand() % 2;
       if (sign) nbr = myHandle+away;
       else nbr = myHandle-away;
index 1d2ee3554c10ec44e081423d3c5c07bf87d346de..e24a06dc282626ffaef2d11a71810b7e033f2557 100644 (file)
@@ -56,7 +56,9 @@ class worker {
   }
 
   // Event methods
-  void terminus(){CkPrintf("called terminus\n");}
+  void terminus(){ 
+    //CkPrintf("called terminus\n");
+  }
   void work(WorkMsg *m);
   void work_anti(WorkMsg *m);
   void work_commit(WorkMsg *m);