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

Mohamad Chaarawi chaarawi at hdfgroup.org
Mon Aug 29 07:55:03 CDT 2011


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
>




More information about the mpi-forum mailing list