Re: [Mpi-22] determine if running in a heterogenous environment
I think that coming up with a precise definition for "heterogeneous" could be problematic... On Mar 2, 2008, at 7:01 AM, Dries Kimpe wrote:
Below: proposal for MPI-2.2 that adds support for querying if a communicator is heterogenous.
---------------------------------------------------------------------------- Proposal: ----------------------------------------------------------------------------
Provide some method to determine if a communicator is heterogenous.
There are a number of different possibilities to provide this capability:
1) Provide a predefined integer valued attribute which can be used to query a communicator. (for example MPI_HETEROGENOUS)
-- or --
2) Create a seperate function: MPI_Comm_is_heterogenous (MPI_Comm comm, int * flag);
---------------------------------------------------------------------------- Rationale: ----------------------------------------------------------------------------
Currently, MPI-2.0 does not provide a portable way for an application to determine if it is running in a heterogenous environment.
Some applications are not written with heterogenous environments in mind; They do not (always) use correct datatype descriptions when sending or receiving data, but instead treat the data as an array of bytes, relying on all datatypes having the same memory representation on both sender and receiver. Most often, this is done to avoid the added complexity of creating the correct datatypes.
Although the pack/unpack functions provide an alternative, the do not have the same memory requirements (need an extra buffer to receive the data) or performance characteristics (need an extra copy).
Adding a way for an application to test if it is currently running in a heterogenous environment enables it take appropriate action (aborting, switching to type-safe functions, ...)
The MPI implementation -- if it supports heterogenous environments -- already needs to determine this information because it is responsible for performing type conversions in heterogenous communicators.
Providing this information on a per-communicator base instead of returning it for the whole MPI_UNIVERSE / MPI_COMM_WORLD enables both the MPI implementation and the user application to avoid overhead in case of a homogenous communicator that is a subset of an inhomogenous MPI_COMM_WORLD.
---------------------------------------------------------------------------- Alternative ways to get the same information without modifying the standard: ----------------------------------------------------------------------------
* Store information about the architecture when compiling the application; Compare this information at runtime with all other members of the communicator.
* (not 100% correct): calculate at run time the size of a number of elementary datatypes, compare information with the other ranks in the communicator.
_______________________________________________ Mpi-22 mailing list Mpi-22_at_[hidden] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-22
-- Jeff Squyres Cisco Systems
participants (1)
-
unknown@example.com