Adding a flag to throttle broadcast.
authorSameer Kumar <skumar2@uiuc.edu>
Fri, 29 May 2009 04:47:41 +0000 (04:47 +0000)
committerSameer Kumar <skumar2@uiuc.edu>
Fri, 29 May 2009 04:47:41 +0000 (04:47 +0000)
src/arch/bluegenep/machine.c

index b12f811328218b00a3556ada8925be92fce7ce2e..119bd2c1ac8b8de8dde3b3dc2f197cb739cb938e 100644 (file)
@@ -47,7 +47,7 @@ CsvDeclare(CmiNodeLock, node_bcastLock);
 #define CMK_BROADCAST_HYPERCUBE        0
 #endif /* CMK_SMP */
 
 #define CMK_BROADCAST_HYPERCUBE        0
 #endif /* CMK_SMP */
 
-#define BROADCAST_SPANNING_FACTOR     4
+#define BROADCAST_SPANNING_FACTOR     2
 
 //The root of the message infers the type of the message
 // 1. root is 0, then it is a normal point-to-point message
 
 //The root of the message infers the type of the message
 // 1. root is 0, then it is a normal point-to-point message
@@ -78,7 +78,7 @@ extern unsigned char computeCheckSum(unsigned char *data, int len);
         if (checksum_flag)      \
           if (computeCheckSum((unsigned char*)msg, len) != 0)  { \
             printf("\n\n------------------------------\n\nReceiver %d size %d:", CmiMyPe(), len); \
         if (checksum_flag)      \
           if (computeCheckSum((unsigned char*)msg, len) != 0)  { \
             printf("\n\n------------------------------\n\nReceiver %d size %d:", CmiMyPe(), len); \
-            for(int count = 0; count < len; count++) { \
+            for(count = 0; count < len; count++) { \
                 printf("%2x", msg[count]);                 \
             }                                             \
             printf("------------------------------\n\n"); \
                 printf("%2x", msg[count]);                 \
             }                                             \
             printf("------------------------------\n\n"); \
@@ -1390,6 +1390,11 @@ void SendSpanningChildren(int size, char *msg) {
     //Step2: send to other cores (i.e. excluding myself cs->pe) on the same nodes (just a flat send)
     CmiSendChildrenPeers(thisRid, size, msg);
 
     //Step2: send to other cores (i.e. excluding myself cs->pe) on the same nodes (just a flat send)
     CmiSendChildrenPeers(thisRid, size, msg);
 
+#if !CMK_SMP
+#if ENABLE_BROADCAST_THROTTLE
+    SendMsgsUntil (0);
+#endif
+#endif
 }
 #else
 /* send msg to its spanning children in broadcast. G. Zheng */
 }
 #else
 /* send msg to its spanning children in broadcast. G. Zheng */
@@ -1412,7 +1417,7 @@ void SendSpanningChildren(int size, char *msg) {
 
         //printf ("%d [%d]: Sending Spanning Tree Msg to %d\n",  CmiMyPe(), CmiMyNode(), p);
         CmiSyncSendFn1(p, size, msg);
 
         //printf ("%d [%d]: Sending Spanning Tree Msg to %d\n",  CmiMyPe(), CmiMyNode(), p);
         CmiSyncSendFn1(p, size, msg);
-    }
+    }    
 }
 #endif
 
 }
 #endif
 
@@ -1561,7 +1566,17 @@ void AdvanceCommunications() {
 static void SendMsgsUntil(int targetm) {
 
     while (msgQueueLen>targetm) {
 static void SendMsgsUntil(int targetm) {
 
     while (msgQueueLen>targetm) {
-        AdvanceCommunications ();
+      //AdvanceCommunications ();
+#if CMK_SMP
+      DCMF_CriticalSection_enter (0);
+#endif
+      
+      while(DCMF_Messager_advance()>0);
+      //DCMF_Messager_advance();
+      
+#if CMK_SMP
+      DCMF_CriticalSection_exit (0);
+#endif
     }
 }
 
     }
 }