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

Pavan Balaji balaji at mcs.anl.gov
Mon Aug 29 09:21:32 CDT 2011


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.

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

-- 
Pavan Balaji
http://www.mcs.anl.gov/~balaji



More information about the mpi-forum mailing list