Description
A thing I noticed (again) while looking at #504: All of the DASH reference types are container_compatible
, i.e., dash::GlobIter
, dash::GlobRef
, and dash::GlobPtr
. However, internally all but dash::GlobRef
contain local pointers so they should definitely not used in distributed data structures. The culprit is the pointer to the global memory manager and in the case of GlobIter
to the pattern. In the current implementation, it is really only safe to copy GlobRef
between units. For the other two types, we should prohibit the copying to avoid unintended side-effects until we have a fix for this.
I'd propose that all three types only really require a dart_gptr_t
as their sole argument and the information on the global memory type is stored in a central register on each unit to get rid of the local pointer in GlobPtr
. A similar fix could be done for the pattern pointer in GlobIter
. Both require some significant changes in the infrastructure of DASH.
This is on my list of open issues to be discussed at the F2F next week.