Re: [mpi3-coll] Question on reduction operation in intercommunicators
Hi Adam, I think that in general, there should be no essential distinctions about requirements and restrictions on predefined and user-defined op's. The standard might need some clearing up in this respect, although I will not propose anything for now It would probably be reasonable for intercomms only to require that the same op is given between processes in the same local group (the intention of intercomms being (?) that as much as possible is done locally, and that communication between the two groups is applied parsimonously). However, a) it would complicate the semantics even more b) I'm not sure what really the benefit would be, if any (would be good if you could support with a strong example) c) it would disallow implementations where data would be communicated to the other group and (partly) reduced there So unless there's a really compelleing case for this, I'd rather leave as is (maybe the text needs clearing up?) best, jesper On Fri, Feb 13, 2009 at 12:57:10PM -0800, Adam Moody wrote:
Hi everyone, The spec is a bit fuzzy regarding the op parameter for reduction-type collectives on intercommunicators. There are a few lines in the intracommunicator text under MPI_REDUCE, which says:
page 161, lines 11-15:
"Furthermore, the datatype and op given for predefined operators must be the same on all processes." "Note, that it is possible for users to supply different user-defined operations to MPI_REDUCE in each process. MPI does not define which operations are used on which operands in this case."
However, nothing is explicitly said along such lines for intercommunicators. I assume by default the above statements must extend to intercommunicators as well.
I have two questions.
1) For intracommunicators, I understand the restriction on having the same op specified by all processes for predefined operators -- performance. I could see a similar argument being made that all processes (from both groups) in an intercomm also specify the same op for predefined ops. However, I also see utility in forcing all processes within a group to specify the same op, but allowing each group to specify different ops (e.g., one may want the maximum of values from group A and the minimum of values from group B). The downside in this case is that processes of one group don't know the operation used by processes in the other group without some communication. Also, we'd need to be precise in specifying what data the two ops apply to (i.e., do I apply the op specified in group A to the data from group A or the data from group B?).
2) A similar question arises for user-defined operators, since here the current spec says that different processes may specify different ops. It says MPI can apply which ever ops to which ever operands in such a case for intracommunicators. Again, I could see value in enabling the user to specify the same user-defined op within a group, but different ops across groups.
Any thoughts? -Adam _______________________________________________ mpi3-coll mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-coll
participants (1)
-
Jesper Larsson Traeff