Change CmiUInt2 msgType to CmiUInt1 cmaMsgType:2 in conv-common.h 24/4924/8
authorNitin Bhat <nbhat4@illinois.edu>
Fri, 25 Jan 2019 21:18:04 +0000 (15:18 -0600)
committerEvan Ramos <evan@hpccharm.com>
Wed, 10 Apr 2019 17:28:26 +0000 (12:28 -0500)
msgType was used to identify messages for usage of CMA in SHM transport
for regular Charm++ messages. This patch reduces the size of msgType to
a 2 bit sized unsigned integer field and renames the field to cmaMsgType.

Change-Id: I77547f5bf4d0e15ee61315093632a8c0bfddca2c

src/arch/gni/conv-common.h
src/arch/mpi/conv-common.h
src/arch/mpi/machine.C
src/arch/netlrts/conv-common.h
src/arch/ofi/conv-common.h
src/arch/pamilrts/conv-common.h
src/arch/util/lrts-common.h
src/arch/util/machine-cma.c
src/arch/util/machine-common-core.C
src/arch/verbs/conv-common.h

index af1a0c30111cb1529106c445c55f4a1dc9583217..2a7024f555804c9d03b279b5478308d1642b27fd 100644 (file)
 
 #if DELTA_COMPRESS
 #if CMK_ERROR_CHECKING
-#define CMK_MSG_HEADER_EXT_    CmiUInt4 size; CmiUInt2 seq; unsigned char cksum, magic; CmiUInt2 rank,hdl,xhdl,info,type,redID; CmiInt4 root; CmiUInt4 compressStart; CmiUInt2 compress_flag,xxhdl; CmiUInt8 persistRecvHandler; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt4 size; CmiUInt2 seq; unsigned char cksum, magic; CmiUInt2 rank,hdl,xhdl,info,redID; CmiInt4 root; CmiUInt4 compressStart; CmiUInt2 compress_flag,xxhdl; CmiUInt8 persistRecvHandler; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #else
-#define CMK_MSG_HEADER_EXT_    CmiUInt4 size; CmiUInt4 seq; CmiUInt2 rank,hdl,xhdl,info,type,redID; CmiInt4 root; CmiUInt4 compressStart; CmiUInt2 compress_flag,xxhdl; CmiUInt8 persistRecvHandler; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt4 size; CmiUInt4 seq; CmiUInt2 rank,hdl,xhdl,info,redID; CmiInt4 root; CmiUInt4 compressStart; CmiUInt2 compress_flag,xxhdl; CmiUInt8 persistRecvHandler; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #endif
 #else 
 #if CMK_ERROR_CHECKING
-#define CMK_MSG_HEADER_EXT_    CmiUInt4 size; CmiUInt2 seq; unsigned char cksum, magic; CmiUInt2 rank,hdl,xhdl,info,type,redID; CmiInt4 root; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt4 size; CmiUInt2 seq; unsigned char cksum, magic; CmiUInt2 rank,hdl,xhdl,info,redID; CmiInt4 root; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #else
-#define CMK_MSG_HEADER_EXT_    CmiUInt4 size; CmiUInt4 seq; CmiUInt2 rank,hdl,xhdl,info,type,redID; CmiInt4 root; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt4 size; CmiUInt4 seq; CmiUInt2 rank,hdl,xhdl,info,redID; CmiInt4 root; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #endif
 #endif
 
index 3ebc52277b568786b562f1c99465ee327b23cef8..a0ec47ae19cd89b0e9330b9905c86b98d5b50995 100644 (file)
@@ -15,9 +15,9 @@
 #define CMK_HANDLE_SIGUSR                                  1
 
 #if CMK_ERROR_CHECKING
-#define CMK_MSG_HEADER_EXT_    CmiUInt2 rank, hdl,xhdl,info, type, redID; CmiInt4 root; unsigned char cksum, magic, msgType; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt2 rank, hdl,xhdl,info, redID; CmiInt4 root; unsigned char cksum, magic, mpiMsgType; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #else
-#define CMK_MSG_HEADER_EXT_    CmiUInt2 rank, hdl,xhdl,info, type, redID; CmiInt4 root; unsigned char msgType; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt2 rank, hdl,xhdl,info, redID; CmiInt4 root; unsigned char mpiMsgType; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #endif
 
 #define CMK_MSG_HEADER_BASIC  CMK_MSG_HEADER_EXT
index 216bf9de7ad9d9d49363d810fe8ac9f8fcdffa9e..33f943762d8dc18592db62114a9b933f384f4dc7 100644 (file)
@@ -50,7 +50,7 @@ static char* strsignal(int sig) {
  * POST_DIRECT_SEND            - Metadata message with Direct Send buffer information
  * */
 
-#define CMI_MSGTYPE(msg)            ((CmiMsgHeaderBasic *)msg)->msgType
+#define CMI_MSGTYPE(msg)            ((CmiMsgHeaderBasic *)msg)->mpiMsgType
 enum mpiMsgTypes { REGULAR, ONESIDED_BUFFER_SEND, ONESIDED_BUFFER_RECV, ONESIDED_BUFFER_DIRECT_RECV, ONESIDED_BUFFER_DIRECT_SEND, POST_DIRECT_RECV, POST_DIRECT_SEND};
 
 /* =======Beginning of Definitions of Performance-Specific Macros =======*/
index 63c7a26c016ef27efd0246f50ce9f16c5b0802e4..c41d3d0e2083cc5ad39759e16225ad78fb108443 100644 (file)
 /* the first 4 fields of the header are defined in machine-dgram.c
    and are used for the udp retransmission protocol implementation.
    The parameter root is for the communication library and is used in
-   broadcast. Stratid was a field used previously for the strategy id
-   and was replaced with type. The type field is used to distinguish
+   broadcast. The cmaMsgType field is used to distinguish
    between a REG, CMA_MD and CMA_ACK message
 */
 #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;
+
+#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       { CMK_MSG_HEADER_EXT_ }
 #define CMK_MSG_HEADER_BIGSIM_  { CMK_MSG_HEADER_EXT_ CMK_BIGSIM_FIELDS }
 
index c14b576676d07e9385b59c2255a71aaebab187f2..4b130bdc7fdb78e7d6cb23c303b75766040dce47 100644 (file)
@@ -23,7 +23,7 @@
  * - startid, redID
  * - rank is needed by broadcast
  */
-#define CMK_MSG_HEADER_UNIQUE    CmiUInt4 size; CmiUInt2 rank,hdl,xhdl,info,type,redID; CmiInt4 root; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_UNIQUE    CmiUInt4 size; CmiUInt2 rank,hdl,xhdl,info,redID; CmiInt4 root; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 
 #define CMK_MSG_HEADER_BASIC  CMK_MSG_HEADER_EXT
 #define CMK_MSG_HEADER_EXT            { CMK_MSG_HEADER_UNIQUE }
index 9f1e95e2fde20478e3ae8de6be1ff1ec3c5f5482..e7d97685b01fc5e706e1421851d7d0faba53e08a 100644 (file)
@@ -11,9 +11,9 @@
 
 //#define  DELTA_COMPRESS                                     1
 #if DELTA_COMPRESS
-#define CMK_MSG_HEADER_EXT_    CmiUInt2 rank, hdl,xhdl,info, type; unsigned char cksum, magic; int root, size; CmiUInt2 redID, padding; CmiUInt4 compressStart; CmiUInt2 compress_flag,xxhdl; CmiUInt8 persistRecvHandler; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt2 rank, hdl,xhdl,info; unsigned char cksum, magic; int root, size; CmiUInt2 redID, padding; CmiUInt4 compressStart; CmiUInt2 compress_flag,xxhdl; CmiUInt8 persistRecvHandler; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #else
-#define CMK_MSG_HEADER_EXT_    CmiUInt2 rank, hdl,xhdl,info, type; unsigned char cksum, magic; int root, size; CmiUInt2 redID, padding; CmiUInt1 zcMsgType:2;
+#define CMK_MSG_HEADER_EXT_    CmiUInt2 rank, hdl,xhdl,info; unsigned char cksum, magic; int root, size; CmiUInt2 redID, padding; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #endif
 
 #define CMK_MSG_HEADER_BASIC  CMK_MSG_HEADER_EXT
index 46e7a9a5b6edd0a2249ad5f0bc34238e452695e3..3705dfce7431bb8b933c03029fc433762c02e185 100644 (file)
@@ -18,9 +18,9 @@
 #endif // end of CMK_USE_CMA
 
 // Converse Message header contains msgtype which is set to one of these message types
-enum MsgType {
-  // CMK_REG_MSG refers to a message which contains the payload being sent
-  CMK_REG_MSG=0,
+enum cmiCMAMsgType {
+  // CMK_REG_NOCMA_MSG refers to a message which contains the payload being sent
+  CMK_REG_NO_CMA_MSG=0,
 
   // CMK_CMA_MD_MSG refers to a message which contains payload metadata (pe, pid, address, size) without the payload
   // This message is used by the receiving process (running on the same physical host) to perform a CMA read operation
index 32709778ea58d33faae299c80172c9168aeff70d..6a0078900bfde456b8c3796129c57088dfac17aa 100644 (file)
@@ -114,7 +114,7 @@ void handleOneCmaMdMsg(int *sizePtr, char **msgPtr) {
 
   // Send the buffer md msg back as an ack msg to signal CMA read completion in order to free buffers
   // on the source process
-  CMI_SET_MSG_TYPE(*msgPtr, CMK_CMA_ACK_MSG);
+  CMI_CMA_MSGTYPE(*msgPtr) = CMK_CMA_ACK_MSG;
 
   CmiInterSendNetworkFunc(bufInfo->srcPE,
                           CmiMyPartition(),
@@ -158,7 +158,7 @@ void CmiSendMessageCma(char **msgPtr, int *sizePtr) {
   bufInfo->size    = *sizePtr;
 
   // Tag this message as a CMA buffer md message
-  CMI_SET_MSG_TYPE(cmaBufMdMsg, CMK_CMA_MD_MSG);
+  CMI_CMA_MSGTYPE(cmaBufMdMsg) = CMK_CMA_MD_MSG;
 
   // Reassign *sizePtr to store the size of the buffer md msg
   *sizePtr = CmiMsgHeaderSizeBytes + sizeof(CmaSrcBufferInfo_t);
index d39ecf0dee5d74b824cb61edb23670e8293faacc..57e22cf6ddf1141f4bf8dee803b2918ba2a2260a 100644 (file)
@@ -14,8 +14,7 @@ FILE *debugLog = NULL;
 #endif
 
 // Macro for message type
-#define CMI_MSG_TYPE(msg)            ((CmiMsgHeaderBasic *)msg)->type
-#define CMI_SET_MSG_TYPE(msg, type)  CMI_MSG_TYPE(msg) = (type);
+#define CMI_CMA_MSGTYPE(msg)         ((CmiMsgHeaderBasic *)msg)->cmaMsgType
 
 /******* broadcast related  */
 #ifndef CMK_BROADCAST_SPANNING_TREE
@@ -539,9 +538,9 @@ static INLINE_KEYWORD void handleOneRecvedMsg(int size, char *msg) {
 
 #if CMK_USE_CMA
     // If CMA message, perform CMA read to get the payload message
-    if(cma_reg_msg && CMI_MSG_TYPE(msg) == CMK_CMA_MD_MSG) {
+    if(cma_reg_msg && CMI_CMA_MSGTYPE(msg) == CMK_CMA_MD_MSG) {
       handleOneCmaMdMsg(&size, &msg);  // size & msg are modififed
-    } else if(cma_reg_msg && CMI_MSG_TYPE(msg) == CMK_CMA_ACK_MSG) {
+    } else if(cma_reg_msg && CMI_CMA_MSGTYPE(msg) == CMK_CMA_ACK_MSG) {
       handleOneCmaAckMsg(size, msg);
       return;
     }
@@ -625,7 +624,7 @@ CpvExtern(int, _urgentSend);
 //that handles sending to any partition
 INLINE_KEYWORD CmiCommHandle CmiSendNetworkFunc(int destPE, int size, char *msg, int mode) {
   // Set the message as a regular message (defined in lrts-common.h)
-  CMI_SET_MSG_TYPE(msg, CMK_REG_MSG);
+  CMI_CMA_MSGTYPE(msg) = CMK_REG_NO_CMA_MSG;
   return CmiInterSendNetworkFunc(destPE, CmiMyPartition(), size, msg, mode);
 }
 //the generic function that replaces the older one
@@ -637,7 +636,7 @@ CmiCommHandle CmiInterSendNetworkFunc(int destPE, int partition, int size, char
 
 #if CMK_USE_CMA
         if(cma_reg_msg && partition == CmiMyPartition() && CmiPeOnSamePhysicalNode(CmiMyPe(), destPE)) {
-          if(CMI_MSG_TYPE(msg) == CMK_REG_MSG && cma_min_threshold <= size && size <= cma_max_threshold) {
+          if(CMI_CMA_MSGTYPE(msg) == CMK_REG_NO_CMA_MSG && cma_min_threshold <= size && size <= cma_max_threshold) {
             CmiSendMessageCma(&msg, &size); // size & msg are modififed
           }
         }
@@ -694,7 +693,7 @@ void CmiInterFreeSendFn(int destPE, int partition, int size, char *msg) {
     CMI_SET_BROADCAST_ROOT(msg, 0);
 
     // Set the message as a regular message (defined in lrts-common.h)
-    CMI_SET_MSG_TYPE(msg, CMK_REG_MSG);
+    CMI_CMA_MSGTYPE(msg) = CMK_REG_NO_CMA_MSG;
 #if CMI_QD
     CQdCreate(CpvAccess(cQdState), 1);
 #endif
@@ -791,7 +790,7 @@ void CmiInterFreeNodeSendFn(int destNode, int partition, int size, char *msg) {
 #endif
     CMI_SET_BROADCAST_ROOT(msg, 0);
     // Set the message as a regular message (defined in lrts-common.h)
-    CMI_SET_MSG_TYPE(msg, CMK_REG_MSG);
+    CMI_CMA_MSGTYPE(msg) = CMK_REG_NO_CMA_MSG;
     if (destNode == CmiMyNode() && CmiMyPartition() == partition) {
         CmiSendNodeSelf(msg);
     } else {
index d9c4594c3edd35b72c025e89f6cd760ebe4529f9..4d7803b59d95e72045d29abf27dbc57da6662e08 100644 (file)
 /* the first 4 fields of the header are defined in machine-dgram.c
    and are used for the udp retransmission protocol implementation.
    The root parameter is for the communication library and is used in
-   broadcast operations. The type parameter is used to identify the type
+   broadcast operations. The cmaMsgType parameter is used to identify the type
    of the message and used in the LRTS based CMA implementaion.
 */
 #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;
+#define CMK_MSG_HEADER_EXT_    CmiUInt2 d0,d1,d2,d3,hdl,xhdl,info,redID,rank; CmiInt4 root, size; CmiUInt1 zcMsgType:2, cmaMsgType:2;
 #define CMK_MSG_HEADER_EXT       { CMK_MSG_HEADER_EXT_ }
 #define CMK_MSG_HEADER_BIGSIM_  { CMK_MSG_HEADER_EXT_ CMK_BIGSIM_FIELDS }