fix for SMP due tyo the change of using "mode" to LrtsSend
authorGengbin Zheng <gzheng@illinois.edu>
Tue, 4 Oct 2011 15:25:33 +0000 (10:25 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Tue, 4 Oct 2011 15:25:33 +0000 (10:25 -0500)
src/arch/mpi/machine.c
src/arch/util/machine-common-core.c

index 07450acf20d14a5d943f8d29fe8cb892ea044851..5d4f5c74da7f63255226e881a95dbf48724cdbe7 100644 (file)
@@ -178,7 +178,7 @@ static int idleblock = 0;
 typedef struct msg_list {
     char *msg;
     struct msg_list *next;
-    int size, destpe;
+    int size, destpe, mode;
 #if CMK_SMP_TRACE_COMMTHREAD
     int srcpe;
 #endif
@@ -226,7 +226,7 @@ static void PumpMsgsBlocking(void);
 static int MsgQueueEmpty();
 static int RecvQueueEmpty();
 static int SendMsgBuf();
-static  void EnqueueMsg(void *m, int size, int node);
+static  void EnqueueMsg(void *m, int size, int node, int mode);
 #endif
 
 /* The machine-specific send function */
@@ -276,13 +276,14 @@ static void MachinePostNonLocalForMPI();
 /* The machine specific msg-sending function */
 
 #if CMK_SMP
-static void EnqueueMsg(void *m, int size, int node) {
+static void EnqueueMsg(void *m, int size, int node, int mode) {
     SMSG_LIST *msg_tmp = (SMSG_LIST *) CmiAlloc(sizeof(SMSG_LIST));
     MACHSTATE1(3,"EnqueueMsg to node %d {{ ", node);
     msg_tmp->msg = m;
     msg_tmp->size = size;
     msg_tmp->destpe = node;
     msg_tmp->next = 0;
+    msg_tmp->mode = mode;
 
 #if CMK_SMP_TRACE_COMMTHREAD
     msg_tmp->srcpe = CmiMyPe();
@@ -301,10 +302,11 @@ static void EnqueueMsg(void *m, int size, int node) {
 #endif
 
 /* The function that calls MPI_Isend so that both non-SMP and SMP could use */
-static CmiCommHandle MPISendOneMsg(SMSG_LIST *smsg, int mode) {
+static CmiCommHandle MPISendOneMsg(SMSG_LIST *smsg) {
     int node = smsg->destpe;
     int size = smsg->size;
     char *msg = smsg->msg;
+    int mode = smsg->mode;
 
     MACHSTATE2(3,"MPI_send to node %d rank: %d{", node, CMI_DEST_RANK(msg));
 #if CMK_ERROR_CHECKING
@@ -380,7 +382,7 @@ static CmiCommHandle MachineSpecificSendForMPI(int destNode, int size, char *msg
 
     CmiAssert(destNode != CmiMyNode());
 #if CMK_SMP
-    EnqueueMsg(msg, size, destNode);
+    EnqueueMsg(msg, size, destNode, mode);
     return 0;
 #else
     /* non smp */
@@ -389,7 +391,8 @@ static CmiCommHandle MachineSpecificSendForMPI(int destNode, int size, char *msg
     msg_tmp->destpe = destNode;
     msg_tmp->size = size;
     msg_tmp->next = 0;
-    return MPISendOneMsg(msg_tmp, mode);
+    msg_tmp->mode = mode;
+    return MPISendOneMsg(msg_tmp);
 #endif
 }
 
index b2ec35c8988486a5bd73b70e40a4d2669c83f8c2..04661b83f8f28b3e704dde94670939223d28fb32 100644 (file)
@@ -72,8 +72,8 @@ static void processBcastQs();
  * should not be used in machine-specific implementations
  * except in some special occasions.
  */
-static void processProcBcastMsg(int size, char *msg);
-static void processNodeBcastMsg(int size, char *msg);
+static INLINE_KEYWORD void processProcBcastMsg(int size, char *msg);
+static INLINE_KEYWORD void processNodeBcastMsg(int size, char *msg);
 static void SendSpanningChildrenProc(int size, char *msg);
 static void SendHyperCubeProc(int size, char *msg);
 #if CMK_NODE_QUEUE_AVAILABLE