[Mpi-forum] MPI_Type_create_struct vs. other datatype creation routines

Fab Tillier ftillier at microsoft.com
Mon Aug 29 14:29:56 CDT 2011


Mohamad Chaarawi wrote on Mon, 29 Aug 2011 at 12:08:49

> Hi Fab,
> 
> On 08/29/2011 01:58 PM, Fab Tillier wrote:
>> Pavan Balaji wrote on Mon, 29 Aug 2011 at 07:21:32
>> 
>>> Great. We have a use case for this as well, and we are essentially doing
>>> exactly what you are doing. Are you planning to do a formal reading for
>>> it at the next meeting?
>>> 
>>> Btw, hindexed is not a real replacement for indexed as the MPI
>>> implementation can be better optimized for indexed than hindexed (e.g.,
>>> alignment checks). So the right solution would have been to allow
>>> indexed to take MPI_Aint arguments as well. But given that the
>>> performance difference would be so small, I'm not sure if we should
>>> create yet another set of routines for it.
>> IMO, there should be MPI_Count versions of all the datatype constructors,
>> and the existing ones deprecated.  I thought there was some work to that
>> effect going on.  That's not to say I wouldn't want to see hindexed_block in
>> the standard, I'd just rather it used MPI_Count than MPI_Aint...
>> 
> 
> I though datatype creation (and several other) functions that use int s
> for the count should have MPI_Count versions, but the H versions, that
> use byte displacements, should still use MPI_Aint, because it's not
> really a count of datatypes, but just an offset into memory.

Datatypes may represent data on a file, not just in memory.  How do you express an offset (byte displacement) in a file, when that offset can be larger than what can be represented by MPI_Aint?

Cheers,
-Fab

> 
> Mohamad
> 
>> -Fab
>> 
>>>    -- Pavan
>>> On 08/29/2011 07:55 AM, Mohamad Chaarawi wrote:
>>>> Hi Pavan,
>>>> 
>>>> actually I created a ticket for that about a month ago, #280 :)
>>>> https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/280
>>>> 
>>>> we have a usecase were we use hindexed for MPI_Aint displacement, but
>>>> we really need 1 block length, so we end up passing an array of 1s :(
>>>> 
>>>> Thanks,
>>>> Mohamad
>>>> 
>>>> On 08/27/2011 08:34 PM, Pavan Balaji wrote:
>>>>> Ok, that makes sense. It would have been good if the ones where
>>>>> offsets are specified in datatype lengths also took MPI_Aint, to allow
>>>>> for MPI_BOTTOM.
>>>>> 
>>>>> Using hindexed instead of indexed would have been OK, except the MPI
>>>>> implementation can optimize alignment checks for indexed (by
>>>>> checking only the first element), but can't do that for hindexed.
>>>>> 
>>>>> Also, are we missing hindexed_block in the standard?
>>>>> 
>>>>>    -- Pavan
>>>>> On 08/27/2011 10:04 AM, Rajeev Thakur wrote:
>>>>>> If the displacement is specified in multiples of the extent of
>>>>>> oldtype, it is defined as int. If the displacement is specified in
>>>>>> bytes it is defined as Aint.
>>>>>> 
>>>>>> Rajeev
>>>>>> 
>>>>>> 
>>>>>> On Aug 27, 2011, at 7:08 AM, William Gropp wrote:
>>>>>> 
>>>>>>> Look at the Fortran binding - to create Fortran interfaces that
>>>>>>> used MPI_ADDRESS_KIND, we first had to *have* an MPI_ADDRESS_KIND,
>>>>>>> which is possible in Fortran 90 and later.  MPI-1 could only
>>>>>>> provide a Fortran 77 binding.
>>>>>>> 
>>>>>>> Bill
>>>>>>> 
>>>>>>> On Aug 27, 2011, at 6:03 AM, Pavan Balaji wrote:
>>>>>>> 
>>>>>>>> No, that can't be right.
>>>>>>>> 
>>>>>>>> MPI_Type_hindexed was in MPI-1, and it had MPI_Aint for
>>>>>>>> displacement.
>>>>>>>> 
>>>>>>>> MPI_Type_indexed on the other hand uses int.
>>>>>>>> 
>>>>>>>> MPI_Type_struct in MPI-1 also used MPI_Aint.
>>>>>>>> 
>>>>>>>> MPI_Type_create_indexed_block was added in MPI-2.1 (or 2.2?) and
>>>>>>>> uses int.
>>>>>>>> 
>>>>>>>> It all seems arbitrary to me.
>>>>>>>> 
>>>>>>>> -- Pavan
>>>>>>>> 
>>>>>>>> On 08/27/2011 05:18 AM, Jeff Squyres wrote:
>>>>>>>>> An offhand guess: TYPE_CREATE_STRUCT was created in MPI-2,
>>>>>>>>> whereas the rest were created in MPI-1.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Aug 27, 2011, at 3:54 AM, Pavan Balaji wrote:
>>>>>>>>> 
>>>>>>>>>> Is there a reason why MPI_Type_create_struct was given the
>>>>>>>>>> special privilege of using MPI_Aint to store displacements, while
>>>>>>>>>> the remaining datatype creation routines use int? This would
>>>>>>>>>> essentially disallow creation of a datatype as an offset to
>>>>>>>>>> MPI_BOTTOM.
>>>>>>>>>> 
>>>>>>>>>> -- Pavan
>>>>>>>>>> 
>>>>>>>>>> --
>>>>>>>>>> Pavan Balaji
>>>>>>>>>> http://www.mcs.anl.gov/~balaji
>>>>>>>>>> _______________________________________________
>>>>>>>>>> mpi-forum mailing list
>>>>>>>>>> mpi-forum at lists.mpi-forum.org
>>>>>>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>>>>>>>>> 
>>>>>>>> --
>>>>>>>> Pavan Balaji
>>>>>>>> http://www.mcs.anl.gov/~balaji
>>>>>>>> _______________________________________________
>>>>>>>> mpi-forum mailing list
>>>>>>>> mpi-forum at lists.mpi-forum.org
>>>>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>>>>>>> William Gropp
>>>>>>> Director, Parallel Computing Institute
>>>>>>> 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-forum mailing list
>>>>>>> mpi-forum at lists.mpi-forum.org
>>>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>>>>>> 
>>>>>> _______________________________________________
>>>>>> mpi-forum mailing list
>>>>>> mpi-forum at lists.mpi-forum.org
>>>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>>>> _______________________________________________
>>>> mpi-forum mailing list
>>>> mpi-forum at lists.mpi-forum.org
>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>> _______________________________________________
>> mpi-forum mailing list
>> mpi-forum at lists.mpi-forum.org
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
> 
> _______________________________________________
> mpi-forum mailing list
> mpi-forum at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum




More information about the mpi-forum mailing list