ZC Direct API: Reset counter immediately in pingpong examples 46/5146/2
authorNitin Bhat <nbhat4@illinois.edu>
Mon, 29 Apr 2019 18:45:59 +0000 (13:45 -0500)
committerEvan Ramos <evan@hpccharm.com>
Mon, 29 Apr 2019 19:39:08 +0000 (14:39 -0500)
Previously, the counter was reset inside endGetGetPingpong and this
caused an occasional hang in the execution because the incremented counter
value never reached the desired value. This issue is fixed by resetting
the counter immediately inside the beginGetGetPingpong method. This
patch fixes the multicore-linux-x86_64 hang seen in last night's
autobuild(29th April, 2019).

Change-Id: Iedc460aeb11438f06945f3b2697879bf17cfcf86

examples/charm++/zerocopy/direct_api/prereg/pingpong/pingpong.C
examples/charm++/zerocopy/direct_api/reg/pingpong/pingpong.C
examples/charm++/zerocopy/direct_api/unreg/pingpong/pingpong.C

index 5bfaaf3329a729b667988e2800c9dfb5ccd0fdea..b5b17b215fe23ec9dbc931741056c58e1c47eb39 100644 (file)
@@ -119,6 +119,7 @@ class Ping1 : public CBase_Ping1
   void beginGetGetPingpong() {
     counter++;
     if(counter == 2) {
+      counter = 0;
       niter=0;
       start_time = CkWallTimer();
       thisProxy[1].recvNcpySrcInfo(mySrc);
@@ -147,7 +148,6 @@ class Ping1 : public CBase_Ping1
   }
 
   void endGetGetPingpong() {
-    counter = 0;
     mySrc.deregisterMem();
     myDest.deregisterMem();
     thisProxy[0].doneGetGetPingpong();
index b4ff015ac75d62320f4fecb9c54674fd8623c335..22312a6ac50bb945783d68012a8c02f9707315bd 100644 (file)
@@ -119,6 +119,7 @@ class Ping1 : public CBase_Ping1
   void beginGetGetPingpong() {
     counter++;
     if(counter == 2) {
+      counter = 0;
       niter=0;
       start_time = CkWallTimer();
       thisProxy[1].recvNcpySrcInfo(mySrc);
@@ -147,7 +148,6 @@ class Ping1 : public CBase_Ping1
   }
 
   void endGetGetPingpong() {
-    counter = 0;
     mySrc.deregisterMem();
     myDest.deregisterMem();
     thisProxy[0].doneGetGetPingpong();
index 03d4a49bdff1f240d403da1b26bf81df64098d65..d2f539297f65df8b65e4096967fa69c1725c4bb0 100644 (file)
@@ -119,6 +119,7 @@ class Ping1 : public CBase_Ping1
   void beginGetGetPingpong() {
     counter++;
     if(counter == 2) {
+      counter = 0;
       niter=0;
       start_time = CkWallTimer();
       thisProxy[1].recvNcpySrcInfo(mySrc);
@@ -147,7 +148,6 @@ class Ping1 : public CBase_Ping1
   }
 
   void endGetGetPingpong() {
-    counter = 0;
     mySrc.deregisterMem();
     myDest.deregisterMem();
     thisProxy[0].doneGetGetPingpong();