use command xtprocadmin on cray XE to find max nid.
authorGengbin Zheng <gzheng@illinois.edu>
Fri, 3 Aug 2012 19:51:32 +0000 (14:51 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Fri, 3 Aug 2012 19:51:32 +0000 (14:51 -0500)
src/scripts/configure.in
src/util/CrayNid.c

index 1fba5735771b262ad2c3eef12eab8021d74c3ffd..9e139201914401b9a3ed940a64a25d85b1007abd 100644 (file)
@@ -1845,6 +1845,17 @@ EOT
 test_linkc "whether Cray rca library is available" "yes" "no" "-lrca"
 AC_DEFINE_UNQUOTED(CMK_HAS_RCALIB, $pass, [whether Cray rca library is available])
 
+#### query Cray machine max NID ####
+
+cmd=`which xtprocadmin 2>/dev/null`
+if test -n "$cmd"
+then
+    maxnid=`xtprocadmin  | tail -1  | awk '{print $1}'`
+    AC_MSG_CHECKING(Cray machine maxnid)
+    AC_MSG_RESULT("$maxnid")
+    AC_DEFINE_UNQUOTED(CMK_CRAY_MAXNID, $maxnid, [Cray MAXNID])
+fi
+
 fi
 
 #### test if it can build shared library ####
index b78772fee7a7404f071541247d284159a9a70ca6..ede20f8ecff541320f334b7bb06a8a1cd6917700 100644 (file)
@@ -221,6 +221,15 @@ void getDimension(int *maxnid, int *xdim, int *ydim, int *zdim)
   do {
       int x, y, z;
       ret = getMeshCoord(i, &x, &y, &z);
+      if (ret == -1) {
+#if CMK_CRAY_MAXNID
+          if (i<=CMK_CRAY_MAXNID) {
+              i++;
+              continue;
+          }
+#endif
+          break;
+      }
       if (x>*xdim) *xdim = x;
       if (y>*ydim) *ydim = y;
       if (z>*zdim) *zdim = z;
@@ -231,6 +240,7 @@ void getDimension(int *maxnid, int *xdim, int *ydim, int *zdim)
   maxY = *ydim = *ydim+1;
   maxZ = *zdim = *zdim+1;
   CmiUnlock(cray_lock2);
+  // printf("%d %d %d %d\n", *maxnid, *xdim, *ydim, *zdim);
 }
 
 void craynid_init()