[mpich-discuss] Best way to do "Allgather to subcommunicator"?
Dave Goodell
goodell at mcs.anl.gov
Mon Sep 10 12:55:12 CDT 2012
Point-to-point (#1) is probably your best bet if you need memory scalability. I suspect that #2 would be faster under many existing implementations, but even faster algorithms should exist for a direct solution. I'm not sure where #3 would fall relative to the first two.
You might also be able to express this as a neighborhood collective operation with a graph topology (haven't thought hard about this yet), although those are obviously unoptimized right now. We could look at this as a motivating example for internal MPI optimization techniques.
Tom's DIY library may also implement this pattern in some way. And if it doesn't, you could see if it's a pattern he feels like supporting: http://www.mcs.anl.gov/~tpeterka/software.html
-Dave
On Sep 10, 2012, at 8:24 AM CDT, Jed Brown wrote:
> Given an original communicator of size P and S subcomms each of size P/S, I effectively want to do an "Allgather" with the result distributed over each of the S subcomms. Some options include
>
> 1. point-to-point
> 2. Allgather, then each process keeps the part that is most relevant to them (limited by memory)
> 3. Creating subcomms for each stratum in the S subcomms, Gather to leader, then Bcast along strata
>
> Are there better ways to do this? The simpler "Gather to subcomm" operation is also useful.
>
> Background: this redundant redistribution is one approach to relieving coarse grid bottlenecks in multigrid. Making it faster would definitely have a tangible impact on solver performance.
> _______________________________________________
> mpich-discuss mailing list mpich-discuss at mcs.anl.gov
> To manage subscription options or unsubscribe:
> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
More information about the mpich-discuss
mailing list