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

Fab Tillier ftillier at microsoft.com
Mon Aug 29 13:58:31 CDT 2011


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...

-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
>




More information about the mpi-forum mailing list