[mpich-discuss] [PATCH v2] test: add attrdeleteget, MPI_Attr_get called from delete_fn

Fab Tillier ftillier at microsoft.com
Mon May 20 17:54:38 CDT 2013


Pavan Balaji wrote on Mon, 20 May 2013 at 15:45:35

> 
> On 05/20/2013 11:16 AM US Central Time, Fab Tillier wrote:
>> In MPI-3, section 8.7.1 (page 363) states that delete callbacks are
>> invoked on MPI_COMM_SELF before anything else happens, and that
>> MPI_FINALIZED will return false from any of these delete callbacks.
>> There's no mention about attribute callbacks on other built-in
>> communicators, and no mention of behavior for built-in types.  Likely
>> they should be invoked too for consistency's sake.
> 
> I'd think not.  For built-in communicators, it makes sense since they
> cannot be freed by the user.  For other communicators, it's the user's
> responsibility to free them.  So the callbacks should be triggered at
> that time.

I meant for all built-in objects (communicators and types), not just MPI_COMM_SELF.  I agree that any user-allocated objects are the users's responsibility (just say no to automatic garbage collection).

>> What's interesting is that this section states that there is an
>> ordering enforced (reverse from the order in which they are set),
>> while MPI_COMM_FREE (page 248) states that the callbacks are invoked
>> in arbitrary order.
>> 
>> We should probably make that consistent, and to preserve backward
>> compatibility, the "arbitrary order" may have to become stricter for
>> implementations to match the finalize behavior.
> 
> Gross.  Yes, I agree it should be consistent.

I added some comments about the above to the ticket (https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/374), as well as raised an issue about the keyval parameter value to the callbacks when the keyval has been freed by the user.

Anyway, I think we're all converging on our opinions, which is always a good thing.

Cheers,
-Fab



More information about the discuss mailing list