[Mpi-22] Another MPI-2.2 attribute ambiguity?

William Gropp wgropp at [hidden]
Thu May 21 15:41:37 CDT 2009



I'm not sure what "change the value" means in #1.  I think that you  
mean "if we interpret extra_data as a pointer to a Fortran data item,  
the MPI implementation will pass this pointer (by value) to the  
callback.  If the callback stores through this pointer, then  
(naturally) the afore mentioned data item will be changed.  If that's  
what #1 means, then yes, that's the right answer.  Note that the  
extra_data could be a pointer to an array of arbitrary size, and the  
call back could update any part of the array. Saving a copy of what  
extra_data points at (is that what #2 is doing?) is going to be  
tricky, since you don't know the size of the thing to copy (without a  
lot of help from the compiler in Fortran).

Bill

On May 19, 2009, at 7:55 PM, Jeff Squyres wrote:

> So then you're in favor of #1 from my original post, right?
>
>     http://lists.mpi-forum.org/mpi-22/2009/05/0407.php
>
>
> On May 19, 2009, at 4:39 PM, William Gropp wrote:
>
>> Silly me, I missed that.
>>
>> In Fortran (particularly thinking in terms of Fortran 77, since that
>> was the original design), the Fortran callback should be able to do
>> things like increment the "extra data" - i.e., if the extra data is a
>> counter, the Fortran callback should be able to increment it.  Since
>> Fortran 77 has no pointers (and pointers in Fortran 90 aren't the  
>> same
>> as addresses), having an address is worthless in a Fortran 77
>> program.  So if the MPI implementation stores the address of the  
>> extra
>> data and passes that to the call back (by value, so Fortran sees the
>> address of the extra data), users should get what they expect in
>> Fortran.
>>
>> Bill
>>
>> On May 19, 2009, at 12:22 PM, Iain Bason wrote:
>>
>>>
>>> On May 19, 2009, at 1:16 PM, William Gropp wrote:
>>>
>>>> MPICH2 passes the value of the extra_state that was saved in the
>>>> internal storage to the callback routine, which is case 2 (the copy
>>>> is implicit as the value is passed to the routine and C semantics
>>>> ensures that the value isn't changed).
>>>
>>> But this is the Fortran interface, not the C interface.
>>>
>>> Iain
>>>
>>
>> William Gropp
>> Deputy Director for Research
>> Institute for Advanced Computing Applications and Technologies
>> Paul and Cynthia Saylor Professor of Computer Science
>> University of Illinois Urbana-Champaign
>>
>>
>>
>>
>> _______________________________________________
>> mpi-22 mailing list
>> mpi-22_at_[hidden]
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-22
>>
>
>
> -- 
> Jeff Squyres
> Cisco Systems
>
> _______________________________________________
> mpi-22 mailing list
> mpi-22_at_[hidden]
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-22

William Gropp
Deputy Director for Research
Institute for Advanced Computing Applications and Technologies
Paul and Cynthia Saylor Professor of Computer Science
University of Illinois Urbana-Champaign



More information about the Mpi-22 mailing list