move charm tcp socket-based CmiBarrier to be a common implementation that shared...
authorGengbin Zheng <gzheng@illinois.edu>
Tue, 16 Mar 2010 05:37:58 +0000 (00:37 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Tue, 16 Mar 2010 05:37:58 +0000 (00:37 -0500)
gm still uses its own CmiBarrier implementation that directly uses myrinet.
ibverbs now uses the default implementation.

src/arch/net-darwin-ppc/conv-mach-gm.h
src/arch/net-linux-ia64/conv-mach-gm.h
src/arch/net-linux/conv-mach-gm.h
src/arch/net-sol/conv-mach-gm.h
src/arch/net/conv-common.h
src/arch/net/machine-dgram.c
src/arch/net/machine-eth.c
src/arch/net/machine-ibverbs.c
src/arch/net/machine.c

index 68bb4199ea6a88d2c6d08a7bdab72fb47f261699..aa7321836826a0e69e2ba3c5bfd4ecca9d8705a1 100644 (file)
@@ -14,3 +14,6 @@
 #undef __ONESIDED_GM_HARDWARE
 #undef __ONESIDED_NO_HARDWARE
 #define __ONESIDED_GM_HARDWARE  1
+
+#undef CMK_BARRIER_USE_COMMON_CODE
+#define CMK_BARRIER_USE_COMMON_CODE                        0
index a0dc8324c32708b4c833cb8714b4dc5659880b9f..7ca2e0057a48528f16424922d446c085a458fd97 100644 (file)
@@ -13,3 +13,6 @@
 
 #undef __ONESIDED_GM_HARDWARE
 #define __ONESIDED_GM_HARDWARE  1
+
+#undef CMK_BARRIER_USE_COMMON_CODE
+#define CMK_BARRIER_USE_COMMON_CODE                        0
index 68bb4199ea6a88d2c6d08a7bdab72fb47f261699..aa7321836826a0e69e2ba3c5bfd4ecca9d8705a1 100644 (file)
@@ -14,3 +14,6 @@
 #undef __ONESIDED_GM_HARDWARE
 #undef __ONESIDED_NO_HARDWARE
 #define __ONESIDED_GM_HARDWARE  1
+
+#undef CMK_BARRIER_USE_COMMON_CODE
+#define CMK_BARRIER_USE_COMMON_CODE                        0
index f1e551ac95dbf0ba677f4e8f6a4c90374c885e41..40e8f5fc86114827a9dd3c082449fc1aedb54b01 100644 (file)
@@ -11,3 +11,6 @@
 #undef __ONESIDED_GM_HARDWARE
 #undef __ONESIDED_NO_HARDWARE
 #define __ONESIDED_GM_HARDWARE  1
+
+#undef CMK_BARRIER_USE_COMMON_CODE
+#define CMK_BARRIER_USE_COMMON_CODE                         0
index c10189ce23eb51dc03996fd921d041adefe67931..d26f341d79fe3d9273b4f174c991d0fc617ada19 100644 (file)
@@ -39,6 +39,8 @@
 #define CMK_BROADCAST_SPANNING_TREE                               0
 #define CMK_BROADCAST_HYPERCUBE                                   1
 
+#define CMK_BARRIER_USE_COMMON_CODE                        1
+
 #define CMK_MACHINE_PROGRESS_DEFINED                       1
 
 #define NODE_0_IS_CONVHOST                                 0
index 2bf3b731dda8d10b01911797a2d0922c9659895c..774ebf1a46bbab4fc777133f99cb6f4e384763f1 100644 (file)
@@ -803,17 +803,14 @@ void SendHypercube(OutgoingMsg ogm, int root, int size, char *msg, unsigned int
 #elif CMK_USE_AMMASSO
 
 #include "machine-ammasso.c"
-#define BARRIER_NULL           1
 
 #elif CMK_USE_TCP
 
 #include "machine-tcp.c"
-#define BARRIER_NULL           1
 
 #elif CMK_USE_IBVERBS
 
 #include "machine-ibverbs.c"
-/*#define BARRIER_NULL           1*/
 
 #elif CMK_USE_IBUD
 #include "machine-ibud.c"
@@ -832,17 +829,4 @@ void SendHypercube(OutgoingMsg ogm, int root, int size, char *msg, unsigned int
 #endif
 
 
-
-#if  BARRIER_NULL
-int CmiBarrier()
-{
-  return -1;
-}
-
-int CmiBarrierZero()
-{
-  return -1;
-}
-#endif
-
 /*@}*/
index 042bd2076778a0eb76a6aca0e4aaf018783149e3..e0acc3274bc6e261c0a8dd49fa2dbdfe362ae372 100644 (file)
@@ -826,159 +826,3 @@ void CmiMachineExit()
 {
 }
 
-static void sendBarrierMessage(int pe)
-{
-  char buf[32];
-  OtherNode  node = nodes + pe;
-  int retval = -1;
-  if (dataskt!=-1) {
-  buf[0] = 61; buf[1] = 31;
-  while (retval == -1) {
-     retval = sendto(dataskt, (char *)buf, 32, 0,
-        (struct sockaddr *)&(node->addr),
-        sizeof(struct sockaddr_in));
-  }
-  }
-}
-
-static void recvBarrierMessage()
-{
-  char buf[32];
-  int nreadable, ok, s;
-  
-  if (dataskt!=-1) {
-    retry:
-        do {
-        CMK_PIPE_DECL(10);
-       CMK_PIPE_ADDREAD(dataskt);
-          nreadable=CMK_PIPE_CALL();
-          if (nreadable == 0) continue;
-          s = CMK_PIPE_CHECKREAD(dataskt);
-          if (s) break;
-        } while (1);
-        ok = recv(dataskt,buf,32,0);
-        CmiAssert(ok >= 0);
-        if (buf[0]!=61 || buf[1]!=31) goto retry;
-  }
-}
-
-/* happen at node level */
-/* must be called on every PE including communication processors */
-int CmiBarrier()
-{
-  int len, size, i;
-  int status;
-  int numnodes = CmiNumNodes();
-  static int barrier_phase = 0;
-
-  if (Cmi_charmrun_fd == -1) return 0;                // standalone
-  if (numnodes == 1) {
-    CmiNodeAllBarrier();
-    return 0;
-  }
-
-  if (CmiMyRank() == 0) {
-    ctrl_sendone_locking("barrier",NULL,0,NULL,0);
-    while (barrierReceived != 1) {
-      CmiCommLock();
-      ctrl_getone();
-      CmiCommUnlock();
-    }
-    barrierReceived = 0;
-    barrier_phase ++;
-  }
-
-#if 0
-  /* unreliable */
-#if !CMK_SMP
-  if (Cmi_netpoll == 0) return -1;
-#endif
-
-  if (CmiMyRank() == 0) {
-    /* every one send to pe 0 */
-    if (CmiMyNode() != 0) {
-      sendBarrierMessage(0);
-    }
-    if (CmiMyNode() == 0) 
-    {
-      for (count = 1; count < numnodes; count ++) 
-      {
-        recvBarrierMessage();
-      }
-      /* pe 0 broadcast */
-      for (i=1; i<=BROADCAST_SPANNING_FACTOR; i++) {
-        int p = i;
-        if (p > numnodes - 1) break;
-        /* printf("[%d] BD => %d \n", CmiMyPe(), p); */
-        sendBarrierMessage(p);
-      }
-    }
-    /* non 0 node waiting */
-    if (CmiMyNode() != 0) 
-    {
-      recvBarrierMessage();
-      for (i=1; i<=BROADCAST_SPANNING_FACTOR; i++) {
-        int p = CmiMyNode();
-        p = BROADCAST_SPANNING_FACTOR*p + i;
-        if (p > numnodes - 1) break;
-        p = p%numnodes;
-        /* printf("[%d] RELAY => %d \n", CmiMyPe(), p);  */
-        sendBarrierMessage(p);
-      }
-    }
-  }
-#endif
-
-  CmiNodeAllBarrier();
-  /* printf("[%d] OUT of barrier %d \n", CmiMyPe(), barrier_phase); */
-  return 0;
-}
-
-
-int CmiBarrierZero()
-{
-  int i;
-  int numnodes = CmiNumNodes();
-  ChMessage msg;
-
-  if (Cmi_charmrun_fd == -1) return 0;                // standalone
-  if (numnodes == 1) {
-    CmiNodeAllBarrier();
-    return 0;
-  }
-
-  if (CmiMyRank() == 0) {
-    char str[64];
-    sprintf(str, "%d", CmiMyNode());
-    ctrl_sendone_locking("barrier0",str,strlen(str)+1,NULL,0);
-    if (CmiMyNode() == 0) {
-      while (barrierReceived != 2) {
-        CmiCommLock();
-        ctrl_getone();
-        CmiCommUnlock();
-      }
-      barrierReceived = 0;
-    }
-  }
-
-#if 0
-#if !CMK_SMP
-  if (Cmi_netpoll == 0) return -1;
-#endif
-
-  if (CmiMyRank() == 0) {
-    if (CmiMyNode()) {
-      sendBarrierMessage(0);
-    }
-    else {
-      for (i=0; i<CmiNumNodes()-1; i++)
-      {
-        recvBarrierMessage();
-      }
-    }
-  }
-#endif
-
-  CmiNodeAllBarrier();
-  return 0;
-}
index 924f5dc9cde4956a604d6d0a235d1db4771c7266..1e7570b66ff2134c90a1fc175a757ab0c59e442d 100644 (file)
@@ -3210,6 +3210,10 @@ void processDirectWC(struct infiRdmaPacket *rdmaPacket){
 };
 */
 
+#if 0
+
+// use the common one
+
 static void sendBarrierMessage(int pe)
 {
   /* we will only need one packet */
@@ -3397,3 +3401,5 @@ int CmiBarrierZero()
   processAllBufferedMsgs();
 }
 
+
+#endif
index b6cf7c430451896f3074fbb9cf5b38dee0e48ed1..51352cd1dfcb2db257f5e4fd3bde129f88d2ad3b 100644 (file)
@@ -2395,6 +2395,78 @@ void CmiMachineProgressImpl()
   CommunicationServer(0, COMM_SERVER_FROM_SMP);
 }
 
+/******************************************************************************
+ *
+ * Main code, Init, and Exit
+ *
+ *****************************************************************************/
+
+#if CMK_BARRIER_USE_COMMON_CODE
+
+/* happen at node level */
+/* must be called on every PE including communication processors */
+int CmiBarrier()
+{
+  int len, size, i;
+  int status;
+  int numnodes = CmiNumNodes();
+  static int barrier_phase = 0;
+
+  if (Cmi_charmrun_fd == -1) return 0;                // standalone
+  if (numnodes == 1) {
+    CmiNodeAllBarrier();
+    return 0;
+  }
+
+  if (CmiMyRank() == 0) {
+    ctrl_sendone_locking("barrier",NULL,0,NULL,0);
+    while (barrierReceived != 1) {
+      CmiCommLock();
+      ctrl_getone();
+      CmiCommUnlock();
+    }
+    barrierReceived = 0;
+    barrier_phase ++;
+  }
+
+  CmiNodeAllBarrier();
+  /* printf("[%d] OUT of barrier %d \n", CmiMyPe(), barrier_phase); */
+  return 0;
+}
+
+
+int CmiBarrierZero()
+{
+  int i;
+  int numnodes = CmiNumNodes();
+  ChMessage msg;
+
+  if (Cmi_charmrun_fd == -1) return 0;                // standalone
+  if (numnodes == 1) {
+    CmiNodeAllBarrier();
+    return 0;
+  }
+
+  if (CmiMyRank() == 0) {
+    char str[64];
+    sprintf(str, "%d", CmiMyNode());
+    ctrl_sendone_locking("barrier0",str,strlen(str)+1,NULL,0);
+    if (CmiMyNode() == 0) {
+      while (barrierReceived != 2) {
+        CmiCommLock();
+        ctrl_getone();
+        CmiCommUnlock();
+      }
+      barrierReceived = 0;
+    }
+  }
+
+  CmiNodeAllBarrier();
+  return 0;
+}
+
+#endif
+
 /******************************************************************************
  *
  * Main code, Init, and Exit