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

Mohamad Chaarawi chaarawi at hdfgroup.org
Mon Aug 29 14:08:49 CDT 2011


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.

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




More information about the mpi-forum mailing list