added testing of topology manager on BG/P
authorAbhinav S Bhatele <bhatele@login3.surveyor.alcf.anl.gov>
Fri, 8 Oct 2010 04:36:59 +0000 (23:36 -0500)
committerAbhinav S Bhatele <bhatele@login3.surveyor.alcf.anl.gov>
Fri, 8 Oct 2010 04:36:59 +0000 (23:36 -0500)
tests/charm++/topology/rtc.C

index 3fdc3d92dceb3b38d4097d69583e27159609acea..9a900c18ef6501d7833041f9c5ff184c5256c6b3 100644 (file)
@@ -1,8 +1,11 @@
 #include <stdio.h>
 #include "topo.decl.h"
 #include "TopoManager.h"
-#ifdef CMK_BLUEGENEL
+
+#if CMK_BLUEGENEL
 #include <bglpersonality.h>
+#elif CMK_BLUEGENEP
+#include <dcmf.h>
 #endif
 
 /*readonly*/ CProxy_Main mainProxy;
@@ -11,8 +14,7 @@
 class Main : public Chare
 {
   public:
-    Main(CkArgMsg* m)
-    {
+    Main(CkArgMsg* m) {
 #if CMK_BLUEGENEL
       BGLPersonality bgl_p;
       int i = rts_get_personality(&bgl_p, sizeof(BGLPersonality));
@@ -21,35 +23,51 @@ class Main : public Chare
       DCMF_Hardware(&bgp_hwt);
 #elif XT3_TOPOLOGY
       XT3TorusManager xt3tm;
-#elif XT4_TOPOLOGY
-      XT4TorusManager xt4tm;
+#elif XT4_TOPOLOGY || XT5_TOPOLOGY
+      XTTorusManager xttm;
 #endif
 
       mainProxy = thishandle;
       CkPrintf("Testing TopoManager .... \n");
       TopoManager tmgr;
       CkPrintf("Torus Size [%d] [%d] [%d] [%d]\n", tmgr.getDimNX(), tmgr.getDimNY(), tmgr.getDimNZ(), tmgr.getDimNT());
+
+#if CMK_BLUEGENEP
       CkPrintf("Torus Size [%d] [%d] [%d] [%d]\n", bgp_hwt.xSize, bgp_hwt.ySize, bgp_hwt.zSize, bgp_hwt.tSize);
+#endif
       int x, y, z, t;
-      if(CkMyPe()==0) {
-        for(int i=0; i<CkNumPes(); i++) {
-          tmgr.rankToCoordinates(i, x, y, z, t); 
-          CkPrintf("---- Processor %d ---> x %d y %d z %d t %d\n", i, x, y, z, t);
+
+      for(int i=0; i<CkNumPes(); i++) {
+       tmgr.rankToCoordinates(i, x, y, z, t);
+       CkPrintf("---- Processor %d ---> x %d y %d z %d t %d\n", i, x, y, z, t);
 #if CMK_BLUEGENEL
-         unsigned int tmp_t, tmp_x, tmp_y, tmp_z;
-         rts_coordinatesForRank(i, &tmp_x, &tmp_y, &tmp_z, &tmp_t);
-         CkPrintf("Real Processor %d ---> x %d y %d z %d t %d\n", i, tmp_x, tmp_y, tmp_z, tmp_t);
+       unsigned int tmp_t, tmp_x, tmp_y, tmp_z;
+       rts_coordinatesForRank(i, &tmp_x, &tmp_y, &tmp_z, &tmp_t);
+       CkPrintf("Real Processor %d ---> x %d y %d z %d t %d\n", i, tmp_x, tmp_y, tmp_z, tmp_t);
+#elif CMK_BLUEGENEP
+       unsigned int tmp_t, tmp_x, tmp_y, tmp_z;
+    #if (DCMF_VERSION_MAJOR >= 3)
+       DCMF_NetworkCoord_t nc;
+       DCMF_Messager_rank2network(i, DCMF_DEFAULT_NETWORK, &nc);
+       tmp_x = nc.torus.x;
+       tmp_y = nc.torus.y;
+       tmp_z = nc.torus.z;
+       tmp_t = nc.torus.t;
+    #else
+       DCMF_Messager_rank2torus(c, &tmp_x, &tmp_y, &tmp_z, &tmp_t);
+    #endif
+       CkPrintf("Real Processor %d ---> x %d y %d z %d t %d\n", i, tmp_x, tmp_y, tmp_z, tmp_t);
 #elif XT3_TOPOLOGY
-         int tmp_t, tmp_x, tmp_y, tmp_z;
-          xt3tm.realRankToCoordinates(i, tmp_x, tmp_y, tmp_z, tmp_t);
-         CkPrintf("Real Processor %d ---> x %d y %d z %d t %d\n", i, tmp_x, tmp_y, tmp_z, tmp_t);
-#elif XT4_TOPOLOGY
-         int tmp_t, tmp_x, tmp_y, tmp_z;
-          xt4tm.realRankToCoordinates(i, tmp_x, tmp_y, tmp_z, tmp_t);
-         CkPrintf("Real Processor %d ---> x %d y %d z %d t %d\n", i, tmp_x, tmp_y, tmp_z, tmp_t);
+       int tmp_t, tmp_x, tmp_y, tmp_z;
+       xt3tm.realRankToCoordinates(i, tmp_x, tmp_y, tmp_z, tmp_t);
+       CkPrintf("Real Processor %d ---> x %d y %d z %d t %d\n", i, tmp_x, tmp_y, tmp_z, tmp_t);
+#elif XT4_TOPOLOGY || XT5_TOPOLOGY
+       int tmp_t, tmp_x, tmp_y, tmp_z;
+       xttm.realRankToCoordinates(i, tmp_x, tmp_y, tmp_z, tmp_t);
+       CkPrintf("Real Processor %d ---> x %d y %d z %d t %d\n", i, tmp_x, tmp_y, tmp_z, tmp_t);
 #endif
-        }
-      }
+      } // end of for loop
+
       int size = tmgr.getDimNX() * tmgr.getDimNY() * tmgr.getDimNZ();
       CkPrintf("Torus Contiguity Metric %d : %d [%f] \n", size, CkNumPes()/tmgr.getDimNT(), (float)(CkNumPes())/(tmgr.getDimNT()*size) );
       CkExit();