[petsc-dev] MPIX_Iallreduce()

Jed Brown jedbrown at mcs.anl.gov
Tue Mar 20 00:58:49 CDT 2012


On Tue, Mar 20, 2012 at 00:06, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> On Sun, Mar 18, 2012 at 11:55, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>>  Add a glance adding all these new complications to PETSc to chase an
>> impossible overlap of communication and computation sounds fine :-)
>
>
> /Q has a dedicated thread to drive asynchronous comm. I've added this, the
> call to PetscCommSplitReductionBegin() is entirely optional (does not alter
> program semantics), but will allow asynchronous progress to be made.
>
> On conventional systems, there are two choices for driving asynchronous
> progress:
>
> 1. Set the environment variable MPICH_ASYNC_PROGRESS=1. "Setting that
> environment variable will cause a cheesy form of background progress
> wherein the library will spawn an additional background thread per MPI
> process.  You'll have to play around with things, but I'd recommend cutting
> your number of processes per node in half to avoid nemesis oversubscription
> badness." -- Dave Goodell
>
> 2. Make any nontrivial calls into the MPI stack. This could specifically
> mean polling a request, but it could also just be your usual communication.
> I suspect that a standard MatMult() and PCApply() will be enough to drive a
> significant amount of progress on the reduction.
>
> http://petsc.cs.iit.edu/petsc/petsc-dev/rev/d2d98894cb5c
>

And here's some preliminary test output on 32 processes of cg.mcs. I ran a
handful of times with src/vec/vec/examples/tests/ex42.c and these results
seem reproducible.

VecScatterBegin      300 1.0 8.5473e-04 1.5 0.00e+00 0.0 9.6e+03 4.0e+01
0.0e+00  2  0 98 99  0   2  0 98 99  0     0
VecScatterEnd        300 1.0 1.1136e-02 7.6 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 18  0  0  0  0  18  0  0  0  0     0
VecReduceArith       100 1.0 1.4210e-04 1.5 9.00e+02 1.0 0.0e+00 0.0e+00
0.0e+00  0100  0  0  0   0100  0  0  0   203
VecReduceComm        100 1.0 2.1405e-02 1.8 0.00e+00 0.0 0.0e+00 0.0e+00
1.0e+02 60  0  0  0 89  60  0  0  0 90     0

VecScatterBegin      300 1.0 5.9962e-04 1.9 0.00e+00 0.0 9.6e+03 4.0e+01
0.0e+00  5  0 98 99  0   5  0 98 99  0     0
VecScatterEnd        300 1.0 1.6668e-03 4.3 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 12  0  0  0  0  12  0  0  0  0     0
VecReduceArith       100 1.0 1.1611e-04 2.5 9.00e+02 1.0 0.0e+00 0.0e+00
0.0e+00  1100  0  0  0   1100  0  0  0   248
VecReduceBegin       100 1.0 5.3430e-04 2.3 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00  4  0  0  0  0   4  0  0  0  0     0
VecReduceEnd         100 1.0 2.4858e-03 2.6 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 21  0  0  0  0  21  0  0  0  0     0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120320/7e612409/attachment.html>


More information about the petsc-dev mailing list