charm icon indicating copy to clipboard operation
charm copied to clipboard

Add refnum with CkCallback example that hangs

Open minitu opened this issue 4 years ago • 4 comments

Test command: jsrun -n2 -a1 -c1 -g1 ./test +ppn 1 +pemap L0,4

Hangs with both pamilrts-linux-ppc64le-smp and netlrts-linux-ppc64le-smp on OLCF Summit.

minitu avatar Nov 15 '20 23:11 minitu

Once [iter] (reference number matching) is removed from recv(), the code works fine.

minitu avatar Nov 15 '20 23:11 minitu

Doesn't examples/charm++/ckcallback work and do basically the same thing? What does this test do differently from that?

stwhite91 avatar Nov 19 '20 18:11 stwhite91

@stwhite91 Thanks for pointing that out, I'm not sure yet as to what's exactly different but that test passes and this one hangs.

minitu avatar Nov 19 '20 18:11 minitu

With this change, the example completes:

$ git diff -U2
diff --git a/examples/charm++/refnum/test.C b/examples/charm++/refnum/test.C
index 49d89b8f0..a099283fb 100644
--- a/examples/charm++/refnum/test.C
+++ b/examples/charm++/refnum/test.C
@@ -25,5 +25,5 @@ public:
   Array1() {
     iter = 0;
-    cb = CkCallback(CkIndex_Array1::recv(), thisProxy[thisIndex]);
+    cb = CkCallback(CkIndex_Array1::recv(nullptr), thisProxy[thisIndex]);
   }
 
diff --git a/examples/charm++/refnum/test.ci b/examples/charm++/refnum/test.ci
index 2c06ad807..b42c8f636 100644
--- a/examples/charm++/refnum/test.ci
+++ b/examples/charm++/refnum/test.ci
@@ -16,5 +16,5 @@ mainmodule test {
         }
 
-        when recv[iter]() serial {
+        when recv[iter](CkMessage* msg) serial {
           CkPrintf("[%d] recv for iter %d\n", thisIndex, iter);
         }
@@ -25,5 +25,5 @@ mainmodule test {
       }
     }
-    entry void recv();
+    entry void recv(CkMessage* msg);
   };
 };

I'm not sure what is going wrong with parameter marshalling that is causing the hang without this change.

evan-charmworks avatar Nov 23 '20 20:11 evan-charmworks