Add second dimension on command line
authorEric Bohm <ebohm@illinois.edu>
Tue, 25 Sep 2007 19:27:18 +0000 (19:27 +0000)
committerEric Bohm <ebohm@illinois.edu>
Tue, 25 Sep 2007 19:27:18 +0000 (19:27 +0000)
tests/charm++/startupTest/Makefile
tests/charm++/startupTest/README
tests/charm++/startupTest/startupTest.C
tests/charm++/startupTest/startupTest.ci
tests/charm++/startupTest/startupTest.h

index 13e34fa618c3e95dfcbde1392644f41ff45eee7d..f5ebeb4c15cb1cc6629456fcd36e0531145678ee 100644 (file)
@@ -20,7 +20,7 @@ startupTest.o: startupTest.C startupTest.decl.h startupTest.h
        $(CHARMC) -c startupTest.C
 
 test: all
-       ./charmrun ./startupTest 20 0.01 1 
+       ./charmrun ./startupTest 20 10 0.01 1 
 
 bgtest: all
-       ./charmrun ./startupTest 20 0.01 1 +p4 +x2 +y2 +z2
+       ./charmrun ./startupTest 20 10 0.01 1 +p4 +x2 +y2 +z2
index 7062ab02a84af461d4091cb71981b8c9e9442d80..073ff97f22fdd3b68e9075116f2fca2b752319ed 100644 (file)
@@ -12,9 +12,10 @@ Arrays constructed in array ID order.
 
 Arguments: arrSize WasteUnits validateBoundOrder
  Where:
-        arrsize       : representing the number of array elements per array
-        wasteunit     : >0.0 representing cputime to waste when doing work
-        validate      : is 1 or 0 to enable testing of construction order in bound arrays
+        arrsize   : representing the number of array elements per array
+        arrsize2  : representing the number of array elements in the second dimension
+        wasteunit : >0.0 representing cputime to waste when doing work
+        validate  : is 1 or 0 to enable testing of construction order in bound arrays
 
  Typically: startupTest 100 0.001 1
 
index acfc297fbf0f2f98b03316dda6af2955cd4b6609..0e01fd246c718f493935d469a0e0840bea1fd895 100644 (file)
@@ -18,6 +18,7 @@ CkVec <int> IntArrFour;
 CkVec <int> IntArrFive;
 CkHashtableT<intdual, int> mapSix;
 CkVec<CProxy_groupTest> groupProxy;
+CkVec<CProxy_groupTestX> groupProxyX;
 CProxy_main mainProxy;         
 CProxy_ReadArrZero zeroProxy;          
 CProxy_ReadArrOne oneProxy;            
@@ -34,15 +35,18 @@ main::main(CkArgMsg *msg)
   int reported;
   int validateBoundOrder=0;
   if(msg->argc<4)
-    CkAbort("Usage: startupTest arrSize WasteUnits validateBoundOrder\n Where arrsize is int >0 wasteunit is double >0 validateBoundOrder is 1 or 0\n");
+    CkAbort("Usage: startupTest arrSize1 arrSize2 WasteUnits validateBoundOrder\n Where arrsize is int >0 wasteunit is double >0 validateBoundOrder is 1 or 0\n");
   //get arrsize and wastetime from cmd line
   arrSize=atoi(msg->argv[1]);
-  sscanf(msg->argv[2],"%lg",&WasteUnits);
-  validateBoundOrder=atoi(msg->argv[3]);
+  int arrSize2=atoi(msg->argv[2]);
+  sscanf(msg->argv[3],"%lg",&WasteUnits);
+  validateBoundOrder=atoi(msg->argv[4]);
   mainProxy=thishandle;
+  if(arrSize<1 || arrSize2 < 1 || WasteUnits<=0 || (validateBoundOrder!=1 && validateBoundOrder!=0))
+    CkAbort("Usage: startupTest arrSize1 arrSize2 WasteUnits validateBoundOrder\n Where arrsize is int >0 wasteunit is double >0 validateBoundOrder is 1 or 0\n");
   doneCount=0;
   //init readonly values
-  CkPrintf("Nodes %d Cpus %d Using %d from %s %g from %s\n",CkNumNodes(), CkNumPes(),arrSize,msg->argv[1],WasteUnits, msg->argv[2]);
+  CkPrintf("Nodes %d Cpus %d Using %d %d from %s %s %g from %s\n",CkNumNodes(), CkNumPes(),arrSize,arrSize2,msg->argv[1],msg->argv[2],WasteUnits, msg->argv[3]);
   intOne=1;
   dOne=1.0;
   dTwo=2.0;
@@ -58,6 +62,10 @@ main::main(CkArgMsg *msg)
     {
       groupProxy.push_back(CProxy_groupTest::ckNew(i));
     }
+  for(int i=0;i<arrSize;i++)
+    {
+      groupProxyX.push_back(CProxy_groupTestX::ckNew(i));
+    }
   //create zero by default map
   zeroProxy  = CProxy_ReadArrZero::ckNew();  
   for(int i=0;i<arrSize;i++)
@@ -109,17 +117,17 @@ main::main(CkArgMsg *msg)
   // if you make six this way it may lose the race with seven 
   CProxy_SixMap sixMap = CProxy_SixMap::ckNew(WasteUnits);
   arrOpts.setMap(sixMap);
-  sixProxy  = CProxy_ReadArrSix::ckNew(arrSize, WasteUnits, arrOpts);  
+  sixProxy  = CProxy_ReadArrSix::ckNew(arrSize, arrSize2, WasteUnits, arrOpts);  
   for(int i=0;i<arrSize;i++)
-    for(int j=0;j<arrSize;j++)
-      sixProxy(i,j).insert(arrSize, WasteUnits);
+    for(int j=0;j<arrSize2;j++)
+      sixProxy(i,j).insert(arrSize,arrSize2, WasteUnits);
   sixProxy.doneInserting();
 #else
   // bulk build six
-  CkArrayOptions arrOptsSix(arrSize,arrSize);
+  CkArrayOptions arrOptsSix(arrSize,arrSize2);
   CProxy_SixMap sixMap = CProxy_SixMap::ckNew(WasteUnits);
   arrOptsSix.setMap(sixMap);
-  sixProxy  = CProxy_ReadArrSix::ckNew(arrSize, WasteUnits, arrOptsSix);  
+  sixProxy  = CProxy_ReadArrSix::ckNew(arrSize,arrSize2, WasteUnits, arrOptsSix);  
   sixProxy.doneInserting();
 
 #endif
@@ -130,17 +138,17 @@ main::main(CkArgMsg *msg)
 
   CkArrayOptions arrOptsBind6;
   arrOptsBind6.bindTo(sixProxy);
-  sevenProxy  = CProxy_ReadArrSeven::ckNew(arrSize, WasteUnits, validateBoundOrder,arrOptsBind6);  
+  sevenProxy  = CProxy_ReadArrSeven::ckNew(arrSize, arrSize2,WasteUnits, validateBoundOrder,arrOptsBind6);  
   for(int i=0;i<arrSize;i++)
-    for(int j=0;j<arrSize;j++)
-      sevenProxy(i,j).insert(arrSize, WasteUnits,validateBoundOrder);
+    for(int j=0;j<arrSize2;j++)
+      sevenProxy(i,j).insert(arrSize, arrSize2,WasteUnits,validateBoundOrder);
   sevenProxy.doneInserting();
 
 #else
 
-  CkArrayOptions arrOptsBind6(arrSize,arrSize);
+  CkArrayOptions arrOptsBind6(arrSize,arrSize2);
   arrOptsBind6.bindTo(sixProxy);
-  sevenProxy  = CProxy_ReadArrSeven::ckNew(arrSize, WasteUnits, validateBoundOrder,arrOptsBind6);  
+  sevenProxy  = CProxy_ReadArrSeven::ckNew(arrSize, arrSize2,WasteUnits, validateBoundOrder,arrOptsBind6);  
   sevenProxy.doneInserting();
 #endif  
 
index a910712a389feff7f4af74b4197922f6551881d2..33f491cce83a59da36934d62650f9315d7edfa17 100644 (file)
@@ -12,6 +12,7 @@ mainmodule startupTest {
   readonly CkVec<int> IntArrFour;
   readonly CkVec<int> IntArrFive;
   readonly CkVec<CProxy_groupTest> groupProxy;
+  readonly CkVec<CProxy_groupTestX> groupProxyX;
   readonly CkHashtableT<intdual, int> mapSix;
 
 
@@ -35,6 +36,10 @@ mainmodule startupTest {
     entry groupTest(int);
   }    
 
+  group groupTestX {
+    entry groupTestX(int);
+  }    
+
   array [1D] ReadArrZero {
     entry ReadArrZero(int, double);
     entry void dowork(void);   
@@ -66,12 +71,12 @@ mainmodule startupTest {
   };           
 
   array [2D] ReadArrSix {
-    entry ReadArrSix(int, double);
+    entry ReadArrSix(int, int, double);
     entry void dowork(void);   
   };           
 
   array [2D] ReadArrSeven {
-    entry ReadArrSeven(int, double, bool);
+    entry ReadArrSeven(int, int, double, bool);
     entry void dowork(void);   
   };           
 
index a15492aebee0f66a1dd669aa4b20e8ed9d43634d..58c6477d45c32af0fa5cacab1378253af4c08e2d 100644 (file)
@@ -7,6 +7,7 @@ extern double dTwo;
 extern CkVec<int> IntArrFour;
 extern CkVec<int> IntArrFive;
 extern CkVec<CProxy_groupTest> groupProxy;
+extern CkVec<CProxy_groupTestX> groupProxyX;
 
 bool CheckAllReadOnly();
 void WasteTime(double);
@@ -68,6 +69,26 @@ class groupTest : public Group
     }
 };
 
+class groupTestX : public Group
+{
+ public:
+  int order;
+  groupTestX(int order): order(order) 
+    {
+      // test that all lower order ids were created first
+      for(int i=order-1;i>0;i--)
+       {
+         //make a proxy
+         //get a branch
+         //test the order value in it
+         //      CkPrintf("[%d] test group id %d looking at %d\n",CkMyPe(),order,i);
+         CkAssert(groupProxy[i].ckLocalBranch()->order==i);
+         CkAssert(groupProxyX[i].ckLocalBranch()->order==i);
+
+       }
+    }
+};
+
 class ReadArrZero : public CBase_ReadArrZero
 {
  private:
@@ -245,9 +266,10 @@ class ReadArrSix : public CBase_ReadArrSix
  public:
   int *data;
   int size;
+  int size2;
   double units;
   
-  ReadArrSix(int arrSize, double WasteUnits) :size(arrSize), units(WasteUnits) 
+  ReadArrSix(int arrSize, int arrSize2, double WasteUnits) :size(arrSize), size2(arrSize2), units(WasteUnits) 
     {
       int a=1;
       data=new int[arrSize];
@@ -271,10 +293,11 @@ class ReadArrSeven : public CBase_ReadArrSeven
  public:
   int *data;
   int size;
+  int size2;
   double units;
   bool validate;
   
-  ReadArrSeven(int arrSize, double WasteUnits, bool validate) :size(arrSize), units(WasteUnits), validate(validate) 
+  ReadArrSeven(int arrSize, int arrSize2, double WasteUnits, bool validate) :size(arrSize), size2(arrSize2), units(WasteUnits), validate(validate) 
     {
       int a=1;
       // we shadow six, use its data member