charmplusplus / charm

The Charm++ parallel programming system. Visit https://charmplusplus.org/ for more information.
Apache License 2.0
206 stars 50 forks source link

Allow destroying Arrays, Groups, and NodeGroups #1386

Open stwhite91 opened 7 years ago

stwhite91 commented 7 years ago

Original issue: https://charm.cs.illinois.edu/redmine/issues/1386


Jozsef Bakosi pointed out on the charm mailing list that we currently do not support deleting Groups. ckDestroy is only defined for Chare Arrays.

ericjbohm commented 5 years ago

Original date: 2017-04-04 17:34:13


Retargetting this to a later version until someone makes a case for it being urgently required in 6.8.0.

stwhite91 commented 5 years ago

Original date: 2018-08-22 01:47:11


Re-assigning to Evan since Quinoa was originally the motivation for this.

evan-charmworks commented 5 years ago

Original date: 2018-08-27 22:03:27


For CProxy_MyChareArray array;, calling array.ckDestroy(); only serves to broadcast a call to ArrayElement::ckDestroy. This removes all the elements from the array but does not delete the array itself, if such a concept even exists. CkArray::ckDestroy is never called. In testing I was able to insert new elements into the array after such a ckDestroy broadcast completed. Groups and nodegroups do not allow insertion or removal of elements so ckDestroy does not make sense for them in light of this fact. We would need to redefine ckDestroy which is out of scope of this issue.

stwhite91 commented 5 years ago

Original date: 2018-08-28 15:06:46


Jozsef's original email to the Charm mailing list was IIRC more interested in how to best free the memory associated with a Group that is only transiently used. Even if it shouldn't be named ckDestroy() for semantic reasons, we should provide an API for freeing Groups, even if it's just a wrapper around 'delete this' for each element of the Group. We should also better document the semantics of ckDestroy(), the manual looks to be lacking here at the moment.

evan-charmworks commented 5 years ago

Reopening because as Sam mentioned, there may be a need for completely destroying Groups and NodeGroups, as well as Arrays, in addition to the current ckDestroy semantic of removing all array elements.

evan-charmworks commented 5 years ago

CkArray::ckDestroy is never called.

@epmikida pointed out that there may be a way to call this, and if so, it may be closer to what destroying groups and nodegroups would be like.