Zcpy Bcast Send API: Guard ZC API macros for non-RDMA layers 76/5076/2
authorNitin Bhat <nbhat4@illinois.edu>
Thu, 11 Apr 2019 18:24:44 +0000 (13:24 -0500)
committerNitin Bhat <nbhat4@illinois.edu>
Thu, 11 Apr 2019 19:47:50 +0000 (14:47 -0500)
Change-Id: I7d97a948ce5fc8a3b4ee9be06f088fd06bd5f7ad

src/arch/netlrts/conv-common.h
src/ck-core/ck.C
src/ck-core/envelope.h
src/conv-core/converse.h
src/conv-core/cputopology.C

index c41d3d0e2083cc5ad39759e16225ad78fb108443..57c4a7b852a9844e85e5d514f08f933c9111ad4b 100644 (file)
@@ -23,7 +23,7 @@
 */
 #define CMK_MSG_HEADER_BASIC   CMK_MSG_HEADER_EXT
 
-#define CMK_MSG_HEADER_EXT_    CmiUInt2 d0,d1,d2,d3,hdl,type,xhdl,info,redID,rank; CmiInt4 root, size; CmiUInt1 zcMsgType:2; CmiUInt1 cmaMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt2 d0,d1,d2,d3,hdl,type,xhdl,info,redID,rank; CmiInt4 root, size; CmiUInt1 cmaMsgType:2;
 
 #define CMK_MSG_HEADER_EXT       { CMK_MSG_HEADER_EXT_ }
 #define CMK_MSG_HEADER_BIGSIM_  { CMK_MSG_HEADER_EXT_ CMK_BIGSIM_FIELDS }
index 6a1a6888a900f2394677d720894e96250e49732f..caca713a1744b571d775e8cb133181880ed7e240 100644 (file)
@@ -1665,9 +1665,11 @@ void CkSendMsg(int entryIdx, void *msg,const CkChareID *pCid, int opts)
   envelope *env = UsrToEnv(msg);
 #if CMK_ERROR_CHECKING
   //Allow rdma metadata messages marked as immediate to go through
-  if (opts & CK_MSG_IMMEDIATE && (CMI_ZC_MSGTYPE(env) == CMK_REG_NO_ZC_MSG)) {
-    CmiAbort("Immediate message is not allowed in Chare!");
-  }
+  if (opts & CK_MSG_IMMEDIATE)
+#if CMK_ONESIDED_IMPL
+    if (CMI_ZC_MSGTYPE(env) == CMK_REG_NO_ZC_MSG)
+#endif
+      CmiAbort("Immediate message is not allowed in Chare!");
 #endif
   int destPE=_prepareMsg(entryIdx,msg,pCid);
   // Before it traced the creation only if destPE!=-1 (i.e it did not when the
@@ -1857,9 +1859,14 @@ void CkSendMsgBranch(int eIdx, void *msg, int pe, CkGroupID gID, int opts)
   }
   envelope *env=UsrToEnv(msg);
   //Allow rdma metadata messages marked as immediate to go through
-  if (opts & CK_MSG_IMMEDIATE && (CMI_ZC_MSGTYPE(env) == CMK_REG_NO_ZC_MSG)) {
-    CkSendMsgBranchImmediate(eIdx,msg,pe,gID);
-    return;
+  if (opts & CK_MSG_IMMEDIATE) {
+#if CMK_ONESIDED_IMPL
+    if (CMI_ZC_MSGTYPE(env) == CMK_REG_NO_ZC_MSG)
+#endif
+    {
+      CkSendMsgBranchImmediate(eIdx,msg,pe,gID);
+      return;
+    }
   }
   _sendMsgBranch(eIdx, msg, gID, pe, opts);
   _STATS_RECORD_SEND_BRANCH_1();
@@ -1986,20 +1993,24 @@ void CkSendMsgNodeBranchImmediate(int eIdx, void *msg, int node, CkGroupID gID)
 extern "C"
 void CkSendMsgNodeBranchInline(int eIdx, void *msg, int node, CkGroupID gID, int opts)
 {
-  if (node==CkMyNode() && CMI_ZC_MSGTYPE((envelope *)(UsrToEnv(msg))) == CMK_REG_NO_ZC_MSG)
-  {
-    CmiImmediateLock(CksvAccess(_nodeGroupTableImmLock));
-    void *obj = CksvAccess(_nodeGroupTable)->find(gID).getObj();
-    CmiImmediateUnlock(CksvAccess(_nodeGroupTableImmLock));
-    if (obj!=NULL)
-    { //Just directly call the group:
+  if (node==CkMyNode()) {
+#if CMK_ONESIDED_IMPL
+    if (CMI_ZC_MSGTYPE(msg) == CMK_REG_NO_ZC_MSG)
+#endif
+    {
+      CmiImmediateLock(CksvAccess(_nodeGroupTableImmLock));
+      void *obj = CksvAccess(_nodeGroupTable)->find(gID).getObj();
+      CmiImmediateUnlock(CksvAccess(_nodeGroupTableImmLock));
+      if (obj!=NULL)
+      { //Just directly call the group:
 #if CMK_ERROR_CHECKING
-      envelope *env=_prepareMsgBranch(eIdx,msg,gID,ForNodeBocMsg);
+        envelope *env=_prepareMsgBranch(eIdx,msg,gID,ForNodeBocMsg);
 #else
-      envelope *env=UsrToEnv(msg);
+        envelope *env=UsrToEnv(msg);
 #endif
-      _deliverForNodeBocMsg(CkpvAccess(_coreState),eIdx,env,obj);
-      return;
+        _deliverForNodeBocMsg(CkpvAccess(_coreState),eIdx,env,obj);
+        return;
+      }
     }
   }
   //Can't inline-- send the usual way
index eea3b9f766b1962bb450d7e6263d6487fc905c21..b30ee28a344f8d969115617e11fefcfa969457eb 100644 (file)
@@ -353,7 +353,9 @@ public:
       env->setEpIdx(0);
       env->setIsVarSysMsg(0);
 
+#if CMK_ONESIDED_IMPL
       CMI_ZC_MSGTYPE(env) = CMK_REG_NO_ZC_MSG; // Set the default as CMK_REG_NO_ZC_MSG
+#endif
 
 #if USE_CRITICAL_PATH_HEADER_ARRAY
       env->pathHistory.reset();
index b858d31a2d505b83f0e1a012976b4dcdd2efbe4c..5ba28ceede0c3769c3d282b6c295d76064b9215b 100644 (file)
 
 #include "conv-header.h"
 
+#if CMK_ONESIDED_IMPL
 #define CMI_ZC_MSGTYPE(msg)                  ((CmiMsgHeaderBasic *)msg)->zcMsgType
 #define CMI_IS_ZC_BCAST(msg)                 (CMI_ZC_MSGTYPE(msg) == CMK_ZC_BCAST_SEND_MSG)
+#endif
 
 #define CMIALIGN(x,n)       (size_t)((~((size_t)n-1))&((x)+(n-1)))
 /*#define ALIGN8(x)        (size_t)((~7)&((x)+7)) */
index 29b25dd43546655d4c913d51efa8aa542a2a9295..5e8a22a338acecae8fc8df2313cb74acd8192c69 100644 (file)
@@ -266,7 +266,9 @@ static void cpuTopoHandler(void *m)
     int i;
     hostTable = CmmNew();
     topomsg = (nodeTopoMsg *)CmiAlloc(sizeof(nodeTopoMsg)+CmiNumPes()*sizeof(int));
+#if CMK_ONESIDED_IMPL
     CMI_ZC_MSGTYPE(topomsg) = CMK_REG_NO_ZC_MSG;
+#endif
     CmiSetHandler((char *)topomsg, CpvAccess(cpuTopoRecvHandlerIdx));
     topomsg->nodes = (int *)((char*)topomsg + sizeof(nodeTopoMsg));
     for (i=0; i<CmiNumPes(); i++) topomsg->nodes[i] = -1;
@@ -343,7 +345,9 @@ static void * combineMessage(int *size, void *data, void **remote, int count)
   for (i=0; i<count; i++) nprocs += ((hostnameMsg *)remote[i])->n;
   *size = sizeof(hostnameMsg)+sizeof(_procInfo)*nprocs;
   hostnameMsg *msg = (hostnameMsg *)CmiAlloc(*size);
+#if CMK_ONESIDED_IMPL
   CMI_ZC_MSGTYPE(msg) = CMK_REG_NO_ZC_MSG;
+#endif
   msg->procs = (_procInfo*)((char*)msg + sizeof(hostnameMsg));
   msg->n = nprocs;
   CmiSetHandler((char *)msg, CpvAccess(cpuTopoHandlerIdx));
@@ -372,7 +376,9 @@ static void *emptyReduction(int *size, void *data, void **remote, int count)
   }
   *size = sizeof(topoDoneMsg);
   topoDoneMsg *msg = (topoDoneMsg *)CmiAlloc(sizeof(topoDoneMsg));
+#if CMK_ONESIDED_IMPL
   CMI_ZC_MSGTYPE(msg) = CMK_REG_NO_ZC_MSG;
+#endif
   CmiSetHandler((char *)msg, CpvAccess(topoDoneHandlerIdx));
   return msg;
 }
@@ -604,7 +610,9 @@ extern "C" void LrtsInitCpuTopo(char **argv)
 
     /* prepare a msg to send */
   msg = (hostnameMsg *)CmiAlloc(sizeof(hostnameMsg)+sizeof(_procInfo));
+#if CMK_ONESIDED_IMPL
   CMI_ZC_MSGTYPE(msg) = CMK_REG_NO_ZC_MSG;
+#endif
   msg->n = 1;
   msg->procs = (_procInfo*)((char*)msg + sizeof(hostnameMsg));
   CmiSetHandler((char *)msg, CpvAccess(cpuTopoHandlerIdx));
@@ -625,7 +633,9 @@ extern "C" void LrtsInitCpuTopo(char **argv)
 
   if (CmiNumNodes() > 1) {
     topoDoneMsg *msg2 = (topoDoneMsg *)CmiAlloc(sizeof(topoDoneMsg));
+#if CMK_ONESIDED_IMPL
     CMI_ZC_MSGTYPE(msg2) = CMK_REG_NO_ZC_MSG;
+#endif
     CmiSetHandler((char *)msg2, CpvAccess(topoDoneHandlerIdx));
     CmiReduce(msg2, sizeof(topoDoneMsg), emptyReduction);
     if ((CmiMyPe() == 0) || (CmiNumSpanTreeChildren(CmiMyPe()) > 0)) {