Re: [Mpi-forum] MPI_Type_create_struct vs. other datatype creation routines
Hi Fab, On 08/29/2011 02:29 PM, Fab Tillier wrote:
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?
yea ok.. so you're saying MPI_Count should be able to handle large counts of oldtype, and large addresses into memory (MPI_Aint) and file (MPI_Offset). I though MPI_Count was just to handle larger than 32 bit integer count of "oldtypes". Mohamad
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 [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum -- Pavan Balaji http://www.mcs.anl.gov/~balaji
mpi-forum mailing list [email protected] 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 [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
mpi-forum mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
mpi-forum mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
_______________________________________________ mpi-forum mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
mpi-forum mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
mpi-forum mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
participants (1)
-
Mohamad Chaarawi