Fixing crash on mpi-win-x86_64-smp for the Zerocopy Direct API 54/4454/3
authorNitin Bhat <nbhat4@illinois.edu>
Mon, 6 Aug 2018 19:46:02 +0000 (14:46 -0500)
committerNitin Bhat <nbhat4@illinois.edu>
Tue, 7 Aug 2018 14:42:58 +0000 (09:42 -0500)
Change-Id: Id788fca4bc8ba1280ad76b995c3bfdd750489434

src/arch/mpi/machine-onesided.h
src/arch/mpi/machine.C
src/ck-core/ckrdma.C

index a5b48b4b45389491b64bb732c01f34240c9c231b..654b782c8d34d4bcbdbb6e51bd704addaacb188d 100644 (file)
@@ -145,12 +145,6 @@ typedef struct _cmi_mpi_rzv_rdma_post_info {
   int destPe;
 }CmiMPIRzvRdmaPostInfo_t;
 
-// Structure used for the Nocopy Direct API for acknowledgement handling
-typedef struct _cmi_mpi_rzv_rdma_ack_info {
-  int pe;
-  int tag;
-}CmiMPIRzvRdmaAckInfo_t;
-
 // Set the machine specific information for a nocopy pointer (Empty method to maintain API consistency)
 void LrtsSetRdmaBufferInfo(void *info, const void *ptr, int size, unsigned short int mode){
 }
index 916196268967fb3ca3bb4746eeab45403b6795d8..9a17fdc78f637d18dd3f76916fcf338094f7669f 100644 (file)
@@ -1089,8 +1089,8 @@ static int SendMsgBuf(void) {
                 MPISendOrRecvOneBuffer(msg_tmp, rdmaRecvOpInfo->tag);
             }
             else if(msg_tmp->type == ONESIDED_BUFFER_DIRECT_RECV || msg_tmp->type == ONESIDED_BUFFER_DIRECT_SEND) {
-                CmiMPIRzvRdmaAckInfo_t *ack = (CmiMPIRzvRdmaAckInfo_t *)(msg_tmp->ref);
-                MPISendOrRecvOneBuffer(msg_tmp, ack->tag);
+                NcpyOperationInfo *ncpyOpInfo = (NcpyOperationInfo *)(msg_tmp->ref);
+                MPISendOrRecvOneBuffer(msg_tmp, ncpyOpInfo->tag);
             }
             else
 #endif
index 8636adeae32e049c76200b44a8096ade3eb320fb..e8d612428ce7eed9b206b32671f737379de1293b 100644 (file)
@@ -328,7 +328,7 @@ void CkRdmaDirectAckHandler(void *ack) {
     //Invoke the sender's callback
     CkNcpyAck srcAck(info->srcPtr, info->srcRef);
 
-#if CMK_SMP && CMK_IMMEDIATE_MSG
+#if CMK_SMP
     //call to callbackgroup to call the callback when calling from comm thread
     //this adds one more trip through the scheduler
     _ckcallbackgroup[info->srcPe].call(*(CkCallback *)(info->srcAck), sizeof(CkNcpyAck), (const char *)(&srcAck));
@@ -342,7 +342,7 @@ void CkRdmaDirectAckHandler(void *ack) {
     //Invoke the receiver's callback
     CkNcpyAck destAck(info->destPtr, info->destRef);
 
-#if CMK_SMP && CMK_IMMEDIATE_MSG
+#if CMK_SMP
     //call to callbackgroup to call the callback when calling from comm thread
     //this adds one more trip through the scheduler
     _ckcallbackgroup[info->destPe].call(*(CkCallback *)(info->destAck), sizeof(CkNcpyAck), (const char *)(&destAck));