fix various bugs and memory leak
authorGengbin Zheng <gzheng@illinois.edu>
Thu, 29 Mar 2012 07:06:13 +0000 (02:06 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Thu, 29 Mar 2012 07:06:13 +0000 (02:06 -0500)
src/util/CrayNid.c
src/util/XTTorus.h

index e7a1f538a1b4214e20e20d3ac1e324b1213b9a41..53b001f290bb9793a6b64013f45d7827c3a0dd01 100644 (file)
@@ -77,12 +77,12 @@ int getXTNodeID(int mpirank, int nummpiranks) {
   #define MAXNID 4608
   #define TDIM 32
     /* JYC */
-  #define MAXNID 83
+  #define MAXNID 97
   #define TDIM 32
 #endif
   #endif
 
-int *pid2nid;                   /* rank to node ID */
+int *pid2nid = NULL;            /* rank to node ID */
 int nid2pid[MAXNID][TDIM];      /* node ID to rank */
 
 /** \function getMeshCoord
@@ -109,6 +109,7 @@ int getMeshCoord(int nid, int *x, int *y, int *z) {
  *  correspondingly also creates an array for nids to pids
  */
 void pidtonid(int numpes) {
+  if (pid2nid != NULL) return;          /* did once already */
 #if XT3_TOPOLOGY
   cnos_nidpid_map_t *nidpid; 
   int ierr, i, j, nid;
@@ -156,12 +157,12 @@ void pidtonid(int numpes) {
       nid2pid[i][l] = -1;
 
   for (i=0; i<numpes; i++) {
-    PMI_Get_nid(i, &nid);
+    PMI_Get_nid(CmiNodeOf(i), &nid);
     pid2nid[i] = nid;
+    CmiAssert(nid < MAXNID);
 
     l = 0;
-    while(nid2pid[nid][l] != -1)
-      l++;
+    while(nid2pid[nid][l] != -1) l++;
     nid2pid[nid][l] = i;
   }
 #endif
index 977b68210edbe55b08a957c2cb6df2e4d488f64a..bd3840ef9b329bc1d395a6d3f8f129c81bf4640a 100644 (file)
@@ -56,7 +56,7 @@
 #define ZDIM 24
 #define TDIM 32
 /* JYC */
-#define MAXNID 83
+#define MAXNID 97
 #define XDIM 1
 #define YDIM 6
 #define ZDIM 8
@@ -173,7 +173,7 @@ class XTTorusManager {
       torus[3] = 0;
     }
 
-    ~XTTorusManager() { }
+    ~XTTorusManager() { free(pid2coords); }
 
     inline int getDimX() { return dimX; }
     inline int getDimY() { return dimY; }