<html><body>
<p>The real concern here is:<br>
<br>
Does the MPI implementation need to provide data conversion services between any pair of tasks in the communiator? If I have some tasks on a slow node and other tasks on a fast one we could debate whether that is heterogeneous.<br>
<br>
I think the proposal has merit but we need to be specific that only data representation conversion for data transfer routines is involved in the meaning of "heterogeneous". <br>
<br>
<br>
Dick Treumann - MPI Team/TCEM <br>
IBM Systems & Technology Group<br>
Dept 0lva / MS P963 -- 2455 South Road -- Poughkeepsie, NY 12601<br>
Tele (845) 433-7846 Fax (845) 433-8363<br>
<br>
<br>
<tt>mpi-22-bounces@lists.mpi-forum.org wrote on 03/03/2008 11:09:13 AM:<br>
<br>
> I think that coming up with a precise definition for "heterogeneous" <br>
> could be problematic...<br>
> <br>
> <br>
> On Mar 2, 2008, at 7:01 AM, Dries Kimpe wrote:<br>
> <br>
> > Below: proposal for MPI-2.2 that adds support for querying if a<br>
> > communicator is heterogenous.<br>
> ><br>
> > ----------------------------------------------------------------------------<br>
> > Proposal:<br>
> > ----------------------------------------------------------------------------<br>
> ><br>
> > Provide some method to determine if a communicator is heterogenous.<br>
> ><br>
> > There are a number of different possibilities to provide this <br>
> > capability:<br>
> ><br>
> > 1) Provide a predefined integer valued attribute which can be used <br>
> > to query a<br>
> > communicator. (for example MPI_HETEROGENOUS)<br>
> ><br>
> > -- or --<br>
> ><br>
> > 2) Create a seperate function: MPI_Comm_is_heterogenous (MPI_Comm <br>
> > comm,<br>
> > int * flag);<br>
> ><br>
> > ----------------------------------------------------------------------------<br>
> > Rationale:<br>
> > ----------------------------------------------------------------------------<br>
> ><br>
> > Currently, MPI-2.0 does not provide a portable way for an <br>
> > application to<br>
> > determine if it is running in a heterogenous environment.<br>
> ><br>
> > Some applications are not written with heterogenous environments in <br>
> > mind;<br>
> > They do not (always) use correct datatype descriptions when sending or<br>
> > receiving data, but instead treat the data as an array of bytes,<br>
> > relying on all datatypes having the same memory representation on both<br>
> > sender and receiver. Most often, this is done to avoid the added <br>
> > complexity<br>
> > of creating the correct datatypes.<br>
> ><br>
> > Although the pack/unpack functions provide an alternative, the do <br>
> > not have<br>
> > the same memory requirements (need an extra buffer to receive the <br>
> > data) or<br>
> > performance characteristics (need an extra copy).<br>
> ><br>
> > Adding a way for an application to test if it is currently running <br>
> > in a<br>
> > heterogenous environment enables it take appropriate action (aborting,<br>
> > switching to type-safe functions, ...)<br>
> ><br>
> > The MPI implementation -- if it supports heterogenous environments --<br>
> > already needs to determine this information because it is <br>
> > responsible for<br>
> > performing type conversions in heterogenous communicators.<br>
> ><br>
> > Providing this information on a per-communicator base instead of <br>
> > returning<br>
> > it for the whole MPI_UNIVERSE / MPI_COMM_WORLD enables both the MPI<br>
> > implementation and the user application to avoid overhead<br>
> > in case of a homogenous communicator that is a subset of an <br>
> > inhomogenous<br>
> > MPI_COMM_WORLD.<br>
> ><br>
> > ----------------------------------------------------------------------------<br>
> > Alternative ways to get the same information without modifying the <br>
> > standard:<br>
> > ----------------------------------------------------------------------------<br>
> ><br>
> > * Store information about the architecture when compiling the <br>
> > application;<br>
> > Compare this information at runtime with all other members of the<br>
> > communicator.<br>
> ><br>
> > * (not 100% correct): calculate at run time the size of a number of<br>
> > elementary datatypes, compare information with the other ranks in the<br>
> > communicator.<br>
> ><br>
> > _______________________________________________<br>
> > Mpi-22 mailing list<br>
> > Mpi-22@lists.mpi-forum.org<br>
> > <a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-22">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-22</a><br>
> <br>
> <br>
> -- <br>
> Jeff Squyres<br>
> Cisco Systems<br>
> <br>
> _______________________________________________<br>
> Mpi-22 mailing list<br>
> Mpi-22@lists.mpi-forum.org<br>
> <a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-22">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-22</a><br>
</tt></body></html>