Zerocopy Direct API: Simplify examples by removing unused CkDataMsg parameter in... 55/4255/4
authorNitin Bhat <nbhat4@illinois.edu>
Mon, 11 Jun 2018 16:57:16 +0000 (16:57 +0000)
committerNitin Bhat <nbhat4@illinois.edu>
Mon, 2 Jul 2018 22:26:03 +0000 (17:26 -0500)
The CkDataMsg is only retained in unreg/simple_get/ for illustrating the usage
of CkNcpyAck in the Zerocopy Direct API.

Change-Id: I77ff137069876417abb965b772c974b14090e9da

24 files changed:
doc/charm++/zerocopyapi.tex
examples/charm++/zerocopy/direct_api/prereg/get_put_pingpong/get_put_pingpong.C
examples/charm++/zerocopy/direct_api/prereg/get_put_pingpong/get_put_pingpong.ci
examples/charm++/zerocopy/direct_api/prereg/pingpong/pingpong.C
examples/charm++/zerocopy/direct_api/prereg/pingpong/pingpong.ci
examples/charm++/zerocopy/direct_api/prereg/simple_get/simple_get.C
examples/charm++/zerocopy/direct_api/prereg/simple_get/simple_get.ci
examples/charm++/zerocopy/direct_api/prereg/simple_put/simple_put.C
examples/charm++/zerocopy/direct_api/prereg/simple_put/simple_put.ci
examples/charm++/zerocopy/direct_api/reg/get_put_pingpong/get_put_pingpong.C
examples/charm++/zerocopy/direct_api/reg/get_put_pingpong/get_put_pingpong.ci
examples/charm++/zerocopy/direct_api/reg/pingpong/pingpong.C
examples/charm++/zerocopy/direct_api/reg/pingpong/pingpong.ci
examples/charm++/zerocopy/direct_api/reg/simple_get/simple_get.C
examples/charm++/zerocopy/direct_api/reg/simple_get/simple_get.ci
examples/charm++/zerocopy/direct_api/reg/simple_put/simple_put.C
examples/charm++/zerocopy/direct_api/reg/simple_put/simple_put.ci
examples/charm++/zerocopy/direct_api/unreg/get_put_pingpong/get_put_pingpong.C
examples/charm++/zerocopy/direct_api/unreg/get_put_pingpong/get_put_pingpong.ci
examples/charm++/zerocopy/direct_api/unreg/pingpong/pingpong.C
examples/charm++/zerocopy/direct_api/unreg/pingpong/pingpong.ci
examples/charm++/zerocopy/direct_api/unreg/simple_get/simple_get.C
examples/charm++/zerocopy/direct_api/unreg/simple_put/simple_put.C
examples/charm++/zerocopy/direct_api/unreg/simple_put/simple_put.ci

index 1bec4fcc6b0c7c79f8de903eb1481a93a22984d8..98378102973ac3106e7c4e2bdb2609629853126c 100644 (file)
@@ -192,6 +192,10 @@ void sourceDone(CkDataMsg *msg) \{
 \}
 \end{alltt}
 
+The usage of \texttt{CkDataMsg} and \texttt{setRef} in order to access the original
+pointer and the arbitrary reference pointer is illustrated in
+\examplerefdir{zerocopy/direct\textunderscore api/unreg/simple\textunderscore get}
+
 Both the source and destination buffers are of the same type i.e. \kw{CkNcpyBuffer}.
 What distinguishes a source buffer from a destination buffer is the way the \kw{get} or
 \kw{put} call is made. A valid \kw{get} call using two \kw{CkNcpyBuffer} objects \texttt{obj1} and
index 62edffb029549a3f310e274eee92e527fb79bcb3..4a7a8b5613569ca450181ce021e3f18abdea5f03 100644 (file)
@@ -76,8 +76,8 @@ public:
     assignValues(dArr1, size);
     assignCharValues(cArr1, size);
 
-    sendCb = CkCallback(CkIndex_Ping1::senderCallback(NULL), thisProxy[thisIndex]);
-    recvCb = CkCallback(CkIndex_Ping1::receiverCallback(NULL), thisProxy[thisIndex]);
+    sendCb = CkCallback(CkIndex_Ping1::senderCallback(), thisProxy[thisIndex]);
+    recvCb = CkCallback(CkIndex_Ping1::receiverCallback(), thisProxy[thisIndex]);
 
     otherIndex = (thisIndex + 1) % 2;
     sendCbCounter = 0;
@@ -104,7 +104,7 @@ public:
     thisProxy[otherIndex].recvNcpyInfo(mySrc1, mySrc2, mySrc3, myDest1, myDest2, myDest3);
   }
 
-  void senderCallback(CkDataMsg *m){
+  void senderCallback(){
     sendCbCounter++;
     if(sendCbCounter == 3) {
       // Release Resources for my sources
@@ -119,10 +119,9 @@ public:
         mainProxy.maindone();
       }
     }
-    delete m;
   }
 
-  void receiverCallback(CkDataMsg *m){
+  void receiverCallback(){
     recvCbCounter++;
     if(recvCbCounter == 3) {
 
@@ -155,7 +154,6 @@ public:
         mainProxy.maindone();
       }
     }
-    delete m;
   }
 
   // Executed on Index 1
index dd6c5eb94d2bd79feeed4dc14bcf5be2947f4451..a8e87981feb191aa084269aa1827e538ede3ba34 100644 (file)
@@ -10,8 +10,8 @@ mainmodule simple_direct {
   array [1D] Ping1 {
     entry Ping1(int size);
     entry void start();
-    entry void senderCallback(CkDataMsg *m);
-    entry void receiverCallback(CkDataMsg *m);
+    entry void senderCallback();
+    entry void receiverCallback();
     entry void recvNcpyInfo(CkNcpyBuffer src1, CkNcpyBuffer src2, CkNcpyBuffer src3, CkNcpyBuffer dest1, CkNcpyBuffer dest2, CkNcpyBuffer dest3);
   };
 
index 4ff7b23db8748878b9879e5b6a40bf77641dde33..5aacb6dfbd9455bbfd59bea20f34c2e206c7f6f4 100644 (file)
@@ -108,7 +108,7 @@ class Ping1 : public CBase_Ping1
     mySrc = CkNcpyBuffer(nocopyMsg, sizeof(char)*size, srcCb, CK_BUFFER_PREREG);
 
     // Destination callback and Ncpy object
-    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackGetGetPingpong(NULL), thisProxy[thisIndex]);
+    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackGetGetPingpong(), thisProxy[thisIndex]);
     myDest = CkNcpyBuffer(otherMsg, sizeof(char)*size, destCb, CK_BUFFER_PREREG);
 
     thisProxy[0].beginGetGetPingpong();
@@ -127,7 +127,7 @@ class Ping1 : public CBase_Ping1
     myDest.get(otherSrc);
   }
 
-  void callbackGetGetPingpong(CkDataMsg *m) {
+  void callbackGetGetPingpong() {
     if(thisIndex == 0) {
       // iteration completed
       niter++;
@@ -166,7 +166,7 @@ class Ping1 : public CBase_Ping1
     mySrc = CkNcpyBuffer(nocopyMsg, sizeof(char)*size, srcCb, CK_BUFFER_PREREG);
 
     // Destination callback and Ncpy object
-    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackPutPutPingpong(NULL), thisProxy[thisIndex]);
+    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackPutPutPingpong(), thisProxy[thisIndex]);
     myDest = CkNcpyBuffer(otherMsg, sizeof(char)*size, destCb, CK_BUFFER_PREREG);
 
     thisProxy[0].beginPutPutPingpong();
@@ -190,7 +190,7 @@ class Ping1 : public CBase_Ping1
     mySrc.put(otherDest);
   }
 
-  void callbackPutPutPingpong(CkDataMsg *m) {
+  void callbackPutPutPingpong() {
     if(thisIndex == 0) {
       // iteration completed
       niter++;
index 8a84d4f786994098f346d2d9d7129233d392f350..9ec18c77e839efc367c88d962463a738b904b4be 100644 (file)
@@ -22,7 +22,7 @@ mainmodule pingpong {
     // Methods for Get Get Pingpong using the Ncpy Direct API
     entry void setupGetGetPingpong(int size);
     entry void beginGetGetPingpong();
-    entry void callbackGetGetPingpong(CkDataMsg *m);
+    entry void callbackGetGetPingpong();
     entry void recvNcpySrcInfo(CkNcpyBuffer src);
     entry void endGetGetPingpong();
     entry void doneGetGetPingpong();
@@ -30,7 +30,7 @@ mainmodule pingpong {
     // Methods for Put Put Pingpong using the Ncpy Direct API
     entry void setupPutPutPingpong(int size);
     entry void beginPutPutPingpong();
-    entry void callbackPutPutPingpong(CkDataMsg *m);
+    entry void callbackPutPutPingpong();
     entry void askNcpyDestInfo();
     entry void recvNcpyDestInfo(CkNcpyBuffer dest);
     entry void endPutPutPingpong();
index 3b885c906a692035bc65f85b6dbf03714c61a5a0..2f48a6cb8fd4f7bf4648304cfa588b9536b30155 100644 (file)
@@ -75,13 +75,13 @@ public:
       assignValues(dArr1, size);
       assignCharValues(cArr1, size);
       // Set GET Sender callback
-      cb = CkCallback(CkIndex_Ping1::getSenderDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::getSenderDone(), thisProxy[thisIndex]);
     } else {
       iArr1 = (int *)CkRdmaAlloc(size * sizeof(int));
       cArr1 = (char *)CkRdmaAlloc(size * sizeof(char));
       dArr1 = (double *)CkRdmaAlloc(size * sizeof(double));
       // Set GET Receiver callback
-      cb = CkCallback(CkIndex_Ping1::getReceiverDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::getReceiverDone(), thisProxy[thisIndex]);
     }
 
     otherIndex = (thisIndex + 1) % 2;
@@ -103,7 +103,7 @@ public:
   }
 
   // Executed on Index 0
-  void getSenderDone(CkDataMsg *m){
+  void getSenderDone(){
     CkAssert(thisIndex == 0);
     cbCounter++;
     if(cbCounter == 3) {
@@ -114,11 +114,10 @@ public:
       CkPrintf("[%d][%d][%d] Get Source Done\n", thisIndex, CkMyPe(), CkMyNode());
       sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 1 (which receives data from get)
-  void getReceiverDone(CkDataMsg *m){
+  void getReceiverDone(){
     CkAssert(thisIndex == 1);
     cbCounter++;
     if(cbCounter == 3) {
@@ -129,7 +128,6 @@ public:
       CkPrintf("[%d][%d][%d] Get Destination Done\n", thisIndex, CkMyPe(), CkMyNode());
       thisProxy[otherIndex].sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 0
index 354820eeff3d3ebbfae9500dcf6872a5805cd177..75b9f836794939a32d030c073e67a08401115495 100644 (file)
@@ -10,8 +10,8 @@ mainmodule simple_get {
   array [1D] Ping1 {
     entry Ping1(int size);
     entry void start();
-    entry void getSenderDone(CkDataMsg *m);
-    entry void getReceiverDone(CkDataMsg *m);
+    entry void getSenderDone();
+    entry void getReceiverDone();
     entry void recvNcpyInfo(CkNcpyBuffer src1, CkNcpyBuffer src2, CkNcpyBuffer src3);
     entry void sendValidationData();
     entry void validateGetData(int iArr2[size], double dArr2[size], char cArr2[size], int size);
index 6565eacb934aec81d1f28fc53e4d1a0aea62c6f2..faefd1ff91937e6c51883e593a3a78eddbed28fe 100644 (file)
@@ -75,13 +75,13 @@ public:
       assignValues(dArr1, size);
       assignCharValues(cArr1, size);
       // Set PUT Sender callback
-      cb = CkCallback(CkIndex_Ping1::putSenderDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::putSenderDone(), thisProxy[thisIndex]);
     } else {
       iArr1 = (int *)CkRdmaAlloc(size * sizeof(int));
       cArr1 = (char *)CkRdmaAlloc(size * sizeof(char));
       dArr1 = (double *)CkRdmaAlloc(size * sizeof(double));
       // Set PUT Receiver callback
-      cb = CkCallback(CkIndex_Ping1::putReceiverDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::putReceiverDone(), thisProxy[thisIndex]);
     }
 
     otherIndex = (thisIndex + 1) % 2;
@@ -103,7 +103,7 @@ public:
   }
 
   // Executed on Index 0 (which calls put)
-  void putSenderDone(CkDataMsg *m){
+  void putSenderDone(){
     CkAssert(thisIndex == 0);
     cbCounter++;
     if(cbCounter == 3) {
@@ -114,11 +114,10 @@ public:
       CkPrintf("[%d][%d][%d] Put Source Done\n", thisIndex, CkMyPe(), CkMyNode());
       sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 1 (which receives data from put)
-  void putReceiverDone(CkDataMsg *m){
+  void putReceiverDone(){
     CkAssert(thisIndex == 1);
     cbCounter++;
     if(cbCounter == 3) {
@@ -129,7 +128,6 @@ public:
       CkPrintf("[%d][%d][%d] Put Destination Done\n", thisIndex, CkMyPe(), CkMyNode());
       thisProxy[otherIndex].sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 0
index 1ebd4b40d390cdff1b56b236df2fa77c03a57d0e..e41bbf3c15ff31be05d74a9885feba54b89274ed 100644 (file)
@@ -10,8 +10,8 @@ mainmodule simple_put {
   array [1D] Ping1 {
     entry Ping1(int size);
     entry void start();
-    entry void putSenderDone(CkDataMsg *m);
-    entry void putReceiverDone(CkDataMsg *m);
+    entry void putSenderDone();
+    entry void putReceiverDone();
     entry void recvNcpyInfo(CkNcpyBuffer dest1, CkNcpyBuffer dest2, CkNcpyBuffer dest3);
     entry void sendValidationData();
     entry void validatePutData(int iArr2[size], double dArr2[size], char cArr2[size], int size);
index a31dbfd81485a311c16227673f789eea4dddd0f1..c83384546acc86ac9b0bcddc812e53f10d1bcd1e 100644 (file)
@@ -74,8 +74,8 @@ public:
     assignValues(dArr1, size);
     assignCharValues(cArr1, size);
 
-    sendCb = CkCallback(CkIndex_Ping1::senderCallback(NULL), thisProxy[thisIndex]);
-    recvCb = CkCallback(CkIndex_Ping1::receiverCallback(NULL), thisProxy[thisIndex]);
+    sendCb = CkCallback(CkIndex_Ping1::senderCallback(), thisProxy[thisIndex]);
+    recvCb = CkCallback(CkIndex_Ping1::receiverCallback(), thisProxy[thisIndex]);
 
     otherIndex = (thisIndex + 1) % 2;
     sendCbCounter = 0;
@@ -102,7 +102,7 @@ public:
     thisProxy[otherIndex].recvNcpyInfo(mySrc1, mySrc2, mySrc3, myDest1, myDest2, myDest3);
   }
 
-  void senderCallback(CkDataMsg *m){
+  void senderCallback(){
     sendCbCounter++;
     if(sendCbCounter == 3) {
       // Release Resources for my sources
@@ -117,10 +117,9 @@ public:
         mainProxy.maindone();
       }
     }
-    delete m;
   }
 
-  void receiverCallback(CkDataMsg *m){
+  void receiverCallback(){
     recvCbCounter++;
     if(recvCbCounter == 3) {
 
@@ -153,7 +152,6 @@ public:
         mainProxy.maindone();
       }
     }
-    delete m;
   }
 
   // Executed on Index 1
index dd6c5eb94d2bd79feeed4dc14bcf5be2947f4451..a8e87981feb191aa084269aa1827e538ede3ba34 100644 (file)
@@ -10,8 +10,8 @@ mainmodule simple_direct {
   array [1D] Ping1 {
     entry Ping1(int size);
     entry void start();
-    entry void senderCallback(CkDataMsg *m);
-    entry void receiverCallback(CkDataMsg *m);
+    entry void senderCallback();
+    entry void receiverCallback();
     entry void recvNcpyInfo(CkNcpyBuffer src1, CkNcpyBuffer src2, CkNcpyBuffer src3, CkNcpyBuffer dest1, CkNcpyBuffer dest2, CkNcpyBuffer dest3);
   };
 
index 59dab9f965d7b3f2f2d5e9f67a5490859e677425..e60c34d20a544e0b41b41162a9ed43913caaeb8f 100644 (file)
@@ -108,7 +108,7 @@ class Ping1 : public CBase_Ping1
     mySrc = CkNcpyBuffer(nocopyMsg, sizeof(char)*size, srcCb); // CK_BUFFER_REG
 
     // Destination callback and Ncpy object
-    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackGetGetPingpong(NULL), thisProxy[thisIndex]);
+    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackGetGetPingpong(), thisProxy[thisIndex]);
     myDest = CkNcpyBuffer(otherMsg, sizeof(char)*size, destCb); // CK_BUFFER_REG
 
     thisProxy[0].beginGetGetPingpong();
@@ -127,7 +127,7 @@ class Ping1 : public CBase_Ping1
     myDest.get(otherSrc);
   }
 
-  void callbackGetGetPingpong(CkDataMsg *m) {
+  void callbackGetGetPingpong() {
     if(thisIndex == 0) {
       // iteration completed
       niter++;
@@ -166,7 +166,7 @@ class Ping1 : public CBase_Ping1
     mySrc = CkNcpyBuffer(nocopyMsg, sizeof(char)*size, srcCb); // CK_BUFFER_REG
 
     // Destination callback and Ncpy object
-    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackPutPutPingpong(NULL), thisProxy[thisIndex]);
+    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackPutPutPingpong(), thisProxy[thisIndex]);
     myDest = CkNcpyBuffer(otherMsg, sizeof(char)*size, destCb); // CK_BUFFER_REG
 
     thisProxy[0].beginPutPutPingpong();
@@ -190,7 +190,7 @@ class Ping1 : public CBase_Ping1
     mySrc.put(otherDest);
   }
 
-  void callbackPutPutPingpong(CkDataMsg *m) {
+  void callbackPutPutPingpong() {
     if(thisIndex == 0) {
       // iteration completed
       niter++;
index 8a84d4f786994098f346d2d9d7129233d392f350..9ec18c77e839efc367c88d962463a738b904b4be 100644 (file)
@@ -22,7 +22,7 @@ mainmodule pingpong {
     // Methods for Get Get Pingpong using the Ncpy Direct API
     entry void setupGetGetPingpong(int size);
     entry void beginGetGetPingpong();
-    entry void callbackGetGetPingpong(CkDataMsg *m);
+    entry void callbackGetGetPingpong();
     entry void recvNcpySrcInfo(CkNcpyBuffer src);
     entry void endGetGetPingpong();
     entry void doneGetGetPingpong();
@@ -30,7 +30,7 @@ mainmodule pingpong {
     // Methods for Put Put Pingpong using the Ncpy Direct API
     entry void setupPutPutPingpong(int size);
     entry void beginPutPutPingpong();
-    entry void callbackPutPutPingpong(CkDataMsg *m);
+    entry void callbackPutPutPingpong();
     entry void askNcpyDestInfo();
     entry void recvNcpyDestInfo(CkNcpyBuffer dest);
     entry void endPutPutPingpong();
index dc621812baf771c4706ddcf24ed8a05954afc6cb..13a030da466003dc92cb2c5182db14074ccbb1ac 100644 (file)
@@ -73,13 +73,13 @@ public:
       assignValues(dArr1, size);
       assignCharValues(cArr1, size);
       // Set GET Sender callback
-      cb = CkCallback(CkIndex_Ping1::getSenderDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::getSenderDone(), thisProxy[thisIndex]);
     } else {
       iArr1 = new int[size];
       cArr1 = new char[size];
       dArr1 = new double[size];
       // Set GET Receiver callback
-      cb = CkCallback(CkIndex_Ping1::getReceiverDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::getReceiverDone(), thisProxy[thisIndex]);
     }
 
     otherIndex = (thisIndex + 1) % 2;
@@ -101,7 +101,7 @@ public:
   }
 
   // Executed on Index 0
-  void getSenderDone(CkDataMsg *m){
+  void getSenderDone(){
     CkAssert(thisIndex == 0);
     cbCounter++;
     if(cbCounter == 3) {
@@ -112,11 +112,10 @@ public:
       CkPrintf("[%d][%d][%d] Get Source Done\n", thisIndex, CkMyPe(), CkMyNode());
       sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 1 (which receives data from get)
-  void getReceiverDone(CkDataMsg *m){
+  void getReceiverDone(){
     CkAssert(thisIndex == 1);
     cbCounter++;
     if(cbCounter == 3) {
@@ -127,7 +126,6 @@ public:
       CkPrintf("[%d][%d][%d] Get Destination Done\n", thisIndex, CkMyPe(), CkMyNode());
       thisProxy[otherIndex].sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 0
index 354820eeff3d3ebbfae9500dcf6872a5805cd177..75b9f836794939a32d030c073e67a08401115495 100644 (file)
@@ -10,8 +10,8 @@ mainmodule simple_get {
   array [1D] Ping1 {
     entry Ping1(int size);
     entry void start();
-    entry void getSenderDone(CkDataMsg *m);
-    entry void getReceiverDone(CkDataMsg *m);
+    entry void getSenderDone();
+    entry void getReceiverDone();
     entry void recvNcpyInfo(CkNcpyBuffer src1, CkNcpyBuffer src2, CkNcpyBuffer src3);
     entry void sendValidationData();
     entry void validateGetData(int iArr2[size], double dArr2[size], char cArr2[size], int size);
index 3b509a441e98a4261f1cf30178c8139eaf4a99d2..7fc3edddf93d363e6fa73c99b7bc7c7caa69c9c7 100644 (file)
@@ -73,13 +73,13 @@ public:
       assignValues(dArr1, size);
       assignCharValues(cArr1, size);
       // Set PUT Sender callback
-      cb = CkCallback(CkIndex_Ping1::putSenderDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::putSenderDone(), thisProxy[thisIndex]);
     } else {
       iArr1 = new int[size];
       cArr1 = new char[size];
       dArr1 = new double[size];
       // Set PUT Receiver callback
-      cb = CkCallback(CkIndex_Ping1::putReceiverDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::putReceiverDone(), thisProxy[thisIndex]);
     }
 
     otherIndex = (thisIndex + 1) % 2;
@@ -101,7 +101,7 @@ public:
   }
 
   // Executed on Index 0 (which calls put)
-  void putSenderDone(CkDataMsg *m){
+  void putSenderDone(){
     CkAssert(thisIndex == 0);
     cbCounter++;
     if(cbCounter == 3) {
@@ -112,11 +112,10 @@ public:
       CkPrintf("[%d][%d][%d] Put Source Done\n", thisIndex, CkMyPe(), CkMyNode());
       sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 1 (which receives data from put)
-  void putReceiverDone(CkDataMsg *m){
+  void putReceiverDone(){
     CkAssert(thisIndex == 1);
     cbCounter++;
     if(cbCounter == 3) {
@@ -127,7 +126,6 @@ public:
       CkPrintf("[%d][%d][%d] Put Destination Done\n", thisIndex, CkMyPe(), CkMyNode());
       thisProxy[otherIndex].sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 0
index 1ebd4b40d390cdff1b56b236df2fa77c03a57d0e..e41bbf3c15ff31be05d74a9885feba54b89274ed 100644 (file)
@@ -10,8 +10,8 @@ mainmodule simple_put {
   array [1D] Ping1 {
     entry Ping1(int size);
     entry void start();
-    entry void putSenderDone(CkDataMsg *m);
-    entry void putReceiverDone(CkDataMsg *m);
+    entry void putSenderDone();
+    entry void putReceiverDone();
     entry void recvNcpyInfo(CkNcpyBuffer dest1, CkNcpyBuffer dest2, CkNcpyBuffer dest3);
     entry void sendValidationData();
     entry void validatePutData(int iArr2[size], double dArr2[size], char cArr2[size], int size);
index c5dd04a2ecb0d19346f9bcfcf26df88f97de8a17..6df8507bd6ddbae111f9b540768fdce62bc37118 100644 (file)
@@ -18,7 +18,6 @@ public:
     }
     int size = atoi(m->argv[1]);
     mainProxy = thisProxy;
-    delete m;
     arr1 = CProxy_Ping1::ckNew(size, 2);
     count = 0;
     arr1[0].start();
@@ -74,8 +73,8 @@ public:
     assignValues(dArr1, size);
     assignCharValues(cArr1, size);
 
-    sendCb = CkCallback(CkIndex_Ping1::senderCallback(NULL), thisProxy[thisIndex]);
-    recvCb = CkCallback(CkIndex_Ping1::receiverCallback(NULL), thisProxy[thisIndex]);
+    sendCb = CkCallback(CkIndex_Ping1::senderCallback(), thisProxy[thisIndex]);
+    recvCb = CkCallback(CkIndex_Ping1::receiverCallback(), thisProxy[thisIndex]);
 
     otherIndex = (thisIndex + 1) % 2;
     sendCbCounter = 0;
@@ -102,7 +101,7 @@ public:
     thisProxy[otherIndex].recvNcpyInfo(mySrc1, mySrc2, mySrc3, myDest1, myDest2, myDest3);
   }
 
-  void senderCallback(CkDataMsg *m){
+  void senderCallback(){
     sendCbCounter++;
     if(sendCbCounter == 3) {
       // Release Resources for my sources
@@ -117,10 +116,9 @@ public:
         mainProxy.maindone();
       }
     }
-    delete m;
   }
 
-  void receiverCallback(CkDataMsg *m){
+  void receiverCallback(){
     recvCbCounter++;
     if(recvCbCounter == 3) {
 
@@ -153,7 +151,6 @@ public:
         mainProxy.maindone();
       }
     }
-    delete m;
   }
 
   // Executed on Index 1
index dd6c5eb94d2bd79feeed4dc14bcf5be2947f4451..a8e87981feb191aa084269aa1827e538ede3ba34 100644 (file)
@@ -10,8 +10,8 @@ mainmodule simple_direct {
   array [1D] Ping1 {
     entry Ping1(int size);
     entry void start();
-    entry void senderCallback(CkDataMsg *m);
-    entry void receiverCallback(CkDataMsg *m);
+    entry void senderCallback();
+    entry void receiverCallback();
     entry void recvNcpyInfo(CkNcpyBuffer src1, CkNcpyBuffer src2, CkNcpyBuffer src3, CkNcpyBuffer dest1, CkNcpyBuffer dest2, CkNcpyBuffer dest3);
   };
 
index 18f7998786a7a61975cd54c5548ae8332892e217..ff6f9f86a7558e94db741e51ef9bdab0f9733f6e 100644 (file)
@@ -108,7 +108,7 @@ class Ping1 : public CBase_Ping1
     mySrc = CkNcpyBuffer(nocopyMsg, sizeof(char)*size, srcCb, CK_BUFFER_UNREG);
 
     // Destination callback and Ncpy object
-    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackGetGetPingpong(NULL), thisProxy[thisIndex]);
+    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackGetGetPingpong(), thisProxy[thisIndex]);
     myDest = CkNcpyBuffer(otherMsg, sizeof(char)*size, destCb, CK_BUFFER_UNREG);
 
     thisProxy[0].beginGetGetPingpong();
@@ -127,7 +127,7 @@ class Ping1 : public CBase_Ping1
     myDest.get(otherSrc);
   }
 
-  void callbackGetGetPingpong(CkDataMsg *m) {
+  void callbackGetGetPingpong() {
     if(thisIndex == 0) {
       // iteration completed
       niter++;
@@ -166,7 +166,7 @@ class Ping1 : public CBase_Ping1
     mySrc = CkNcpyBuffer(nocopyMsg, sizeof(char)*size, srcCb, CK_BUFFER_UNREG);
 
     // Destination callback and Ncpy object
-    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackPutPutPingpong(NULL), thisProxy[thisIndex]);
+    CkCallback destCb = CkCallback(CkIndex_Ping1::callbackPutPutPingpong(), thisProxy[thisIndex]);
     myDest = CkNcpyBuffer(otherMsg, sizeof(char)*size, destCb, CK_BUFFER_UNREG);
 
     thisProxy[0].beginPutPutPingpong();
@@ -190,7 +190,7 @@ class Ping1 : public CBase_Ping1
     mySrc.put(otherDest);
   }
 
-  void callbackPutPutPingpong(CkDataMsg *m) {
+  void callbackPutPutPingpong() {
     if(thisIndex == 0) {
       // iteration completed
       niter++;
index 8a84d4f786994098f346d2d9d7129233d392f350..9ec18c77e839efc367c88d962463a738b904b4be 100644 (file)
@@ -22,7 +22,7 @@ mainmodule pingpong {
     // Methods for Get Get Pingpong using the Ncpy Direct API
     entry void setupGetGetPingpong(int size);
     entry void beginGetGetPingpong();
-    entry void callbackGetGetPingpong(CkDataMsg *m);
+    entry void callbackGetGetPingpong();
     entry void recvNcpySrcInfo(CkNcpyBuffer src);
     entry void endGetGetPingpong();
     entry void doneGetGetPingpong();
@@ -30,7 +30,7 @@ mainmodule pingpong {
     // Methods for Put Put Pingpong using the Ncpy Direct API
     entry void setupPutPutPingpong(int size);
     entry void beginPutPutPingpong();
-    entry void callbackPutPutPingpong(CkDataMsg *m);
+    entry void callbackPutPutPingpong();
     entry void askNcpyDestInfo();
     entry void recvNcpyDestInfo(CkNcpyBuffer dest);
     entry void endPutPutPingpong();
index 2a0b4e48cebce95814e3be19ee306d65b54d8fa6..effae23e22a0ca9e649fd42505e23a35e7d0b417 100644 (file)
@@ -1,6 +1,8 @@
 #include "simple_get.decl.h"
 #include <assert.h>
 
+#define ACK_DEBUG(x)  //CkPrintf x
+
 CProxy_main mainProxy;
 class main : public CBase_main
 {
@@ -92,9 +94,21 @@ public:
   void start()
   {
     CkAssert(thisIndex == 0);
+
+    // arbitrary pointer pointing to valCounter
+    const void *refPtr = &valCounter;
+
     mySrc1 = CkNcpyBuffer(iArr1, size*sizeof(int), cb, CK_BUFFER_UNREG);
+    ACK_DEBUG(("[%d][%d][%d] Setting source Ref: Buffer Ptr: %p, Reference Ptr: %p\n", thisIndex, CkMyPe(), CkMyNode(), iArr1, refPtr));
+    mySrc1.setRef(refPtr);
+
     mySrc2 = CkNcpyBuffer(dArr1, size*sizeof(double), cb, CK_BUFFER_UNREG);
+    ACK_DEBUG(("[%d][%d][%d] Setting source Ref: Buffer Ptr: %p, Reference Ptr: %p\n", thisIndex, CkMyPe(), CkMyNode(), dArr1, refPtr));
+    mySrc2.setRef(refPtr);
+
     mySrc3 = CkNcpyBuffer(cArr1, size*sizeof(char), cb, CK_BUFFER_UNREG);
+    ACK_DEBUG(("[%d][%d][%d] Setting source Ref: Buffer Ptr: %p, Reference Ptr: %p\n", thisIndex, CkMyPe(), CkMyNode(), cArr1, refPtr));
+    mySrc3.setRef(refPtr);
 
     // Send my sources to Index 1; Index 1 performs Gets from these sources
     thisProxy[otherIndex].recvNcpyInfo(mySrc1, mySrc2, mySrc3);
@@ -104,6 +118,25 @@ public:
   void getSenderDone(CkDataMsg *m){
     CkAssert(thisIndex == 0);
     cbCounter++;
+
+    // Cast m->data as (CkNcpyAck *)
+    CkNcpyAck *ack = (CkNcpyAck *)(m->data);
+    ACK_DEBUG(("[%d][%d][%d] In source callback : Buffer Ptr: %p, Reference Ptr: %p\n", thisIndex, CkMyPe(), CkMyNode(), ack->ptr, ack->ref));
+
+    void *srcPointer;
+    switch(cbCounter) {
+      case 1 : srcPointer = iArr1; break;
+      case 2 : srcPointer = dArr1; break;
+      case 3 : srcPointer = cArr1; break;
+      default: CkAbort("Invalid value of cbCounter\n"); break;
+    }
+
+    // Verify that source pointer is equal to the buffer pointer returned
+    CkAssert(srcPointer == ack->ptr);
+
+    // Verify that reference pointer is equal to the reference pointer returned
+    CkAssert(&valCounter == ack->ref);
+
     if(cbCounter == 3) {
       // Release Resources for my sources
       mySrc1.deregisterMem();
@@ -119,6 +152,27 @@ public:
   void getReceiverDone(CkDataMsg *m){
     CkAssert(thisIndex == 1);
     cbCounter++;
+
+    // Cast m->data as (CkNcpyAck *)
+    CkNcpyAck *ack = (CkNcpyAck *)(m->data);
+    ACK_DEBUG(("[%d][%d][%d] In destination callback : Buffer Ptr: %p, Reference Ptr: %p\n", thisIndex, CkMyPe(), CkMyNode(), ack->ptr, ack->ref));
+
+    void *destPointer;
+    switch(cbCounter) {
+      case 1 : destPointer = iArr1; break;
+      case 2 : destPointer = dArr1; break;
+      case 3 : destPointer = cArr1; break;
+      default: CkAbort("Invalid value of cbCounter\n"); break;
+    }
+
+    // Verify that destination pointer is equal to the buffer pointer returned
+    CkAssert(destPointer == ack->ptr);
+
+    // Verify that reference pointer is equal to the reference pointer returned
+    CkAssert(&valCounter == ack->ref);
+
+
+
     if(cbCounter == 3) {
       // Release Resources for my destinations
       myDest1.deregisterMem();
@@ -147,10 +201,22 @@ public:
   void recvNcpyInfo(CkNcpyBuffer src1, CkNcpyBuffer src2, CkNcpyBuffer src3)
   {
     CkAssert(thisIndex == 1);
+
+    // arbitrary pointer pointing to valCounter
+    const void *refPtr = &valCounter;
+
     // Create nocopy destination for me to Get into
     myDest1 = CkNcpyBuffer(iArr1, size*sizeof(int), cb, CK_BUFFER_UNREG);
+    ACK_DEBUG(("[%d][%d][%d] Setting destination Ref: Buffer Ptr: %p, Reference Ptr: %p\n", thisIndex, CkMyPe(), CkMyNode(), iArr1, refPtr));
+    myDest1.setRef(refPtr);
+
     myDest2 = CkNcpyBuffer(dArr1, size*sizeof(double), cb, CK_BUFFER_UNREG);
+    ACK_DEBUG(("[%d][%d][%d] Setting destination Ref: Buffer Ptr: %p, Reference Ptr: %p\n", thisIndex, CkMyPe(), CkMyNode(), dArr1, refPtr));
+    myDest2.setRef(refPtr);
+
     myDest3 = CkNcpyBuffer(cArr1, size*sizeof(char), cb, CK_BUFFER_UNREG);
+    ACK_DEBUG(("[%d][%d][%d] Setting destination Ref: Buffer Ptr: %p, Reference Ptr: %p\n", thisIndex, CkMyPe(), CkMyNode(), cArr1, refPtr));
+    myDest3.setRef(refPtr);
 
     // Perform Get from Index 0's sources into my destinations
     myDest1.get(src1);
index 60242e7fefb13029c56a151ed38342d46a83df2a..0bbd1f5de3dedb0bc2eb03bf407ece76886172f4 100644 (file)
@@ -73,13 +73,13 @@ public:
       assignValues(dArr1, size);
       assignCharValues(cArr1, size);
       // Set PUT Sender callback
-      cb = CkCallback(CkIndex_Ping1::putSenderDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::putSenderDone(), thisProxy[thisIndex]);
     } else {
       iArr1 = new int[size];
       cArr1 = new char[size];
       dArr1 = new double[size];
       // Set PUT Receiver callback
-      cb = CkCallback(CkIndex_Ping1::putReceiverDone(NULL), thisProxy[thisIndex]);
+      cb = CkCallback(CkIndex_Ping1::putReceiverDone(), thisProxy[thisIndex]);
     }
 
     otherIndex = (thisIndex + 1) % 2;
@@ -101,7 +101,7 @@ public:
   }
 
   // Executed on Index 0 (which calls put)
-  void putSenderDone(CkDataMsg *m){
+  void putSenderDone(){
     CkAssert(thisIndex == 0);
     cbCounter++;
     if(cbCounter == 3) {
@@ -112,11 +112,10 @@ public:
       CkPrintf("[%d][%d][%d] Put Source Done\n", thisIndex, CkMyPe(), CkMyNode());
       sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 1 (which receives data from put)
-  void putReceiverDone(CkDataMsg *m){
+  void putReceiverDone(){
     CkAssert(thisIndex == 1);
     cbCounter++;
     if(cbCounter == 3) {
@@ -127,7 +126,6 @@ public:
       CkPrintf("[%d][%d][%d] Put Destination Done\n", thisIndex, CkMyPe(), CkMyNode());
       thisProxy[otherIndex].sendValidationData();
     }
-    delete m;
   }
 
   // Executed on Index 0
index 1ebd4b40d390cdff1b56b236df2fa77c03a57d0e..e41bbf3c15ff31be05d74a9885feba54b89274ed 100644 (file)
@@ -10,8 +10,8 @@ mainmodule simple_put {
   array [1D] Ping1 {
     entry Ping1(int size);
     entry void start();
-    entry void putSenderDone(CkDataMsg *m);
-    entry void putReceiverDone(CkDataMsg *m);
+    entry void putSenderDone();
+    entry void putReceiverDone();
     entry void recvNcpyInfo(CkNcpyBuffer dest1, CkNcpyBuffer dest2, CkNcpyBuffer dest3);
     entry void sendValidationData();
     entry void validatePutData(int iArr2[size], double dArr2[size], char cArr2[size], int size);