This code fails to run (runtime error on CkCallback::pup), but compiles fine.
CProxy_ArrayA proxy = CProxy_ArrayA::ckNew(20);
CProxySection_ArrayA sec = CProxySection_ArrayA::ckNew(proxy.ckGetArrayID(), 5, 10, 1);
CkCallback's to sections are still non-migratable, but at least work on the same PE they are created on now: https://charm.cs.illinois.edu/gerrit/#/c/charm/+/4567/
#17 Updated by Raghavendra Kanakagiri 10 months ago
There is a test case for which it seems to break.
A section proxy for a 2D array consisting of 1D elements [0, *]:
CProxySection_Check sec3Proxy = CProxySection_Check::ckNew(checkArray.ckGetArrayID(), 0, 0, 1, 0, numchares_y - 1, 1);
CkCallback cb(CkIndex_Check::recvCb(), sec3Proxy);
Breaks with an assertion (Reason: Assertion "idx.dimension == bounds.dimension" failed in file cklocation.C line 2842.)
The same section can be used in a multicast though
Also in a similar use case of creating 1D sections in 2D arrays, running into this error:
Reason: Array index length (nInts) is too long-- did you use bytes instead of integers?
Haven't been able to replicate the above error in a standalone code.