[MPICH] Implementation of MPI_Alltoallw
Gerard Gorman
g.gorman at imperial.ac.uk
Mon Sep 26 19:48:58 CDT 2005
The classic idea is that you let communication overlap computation but I
think you still need to think a bit more about Rajeev's point as most
people don't bring this up - when everyrank needs to communicate with
everyrank you can post isends&irecvs and let the system deal with it. I
remember some time ago it was popular to implement algorithms on the
application side to use blocking sends to try to optimize throughput.
Other than the fact that the benefits are not generally portable, you
don't know everything a priori. For example there may be congestion in
some of the switches due to other applications on the cluster and so it
might be better to complete other communications while the congestion is
reduced or your message gets through the bottle neck. Basically, outside
your bit of code anything could be happening. I would guess that
research into this is really on the OS/switch level.
Cheers
g
PS. the cost of initialising mpi data types is very small
Sudarshan Raghunathan wrote:
>Rajeev,
>
>Thank you for your response. I was under the impression that
>non-blocking sends and receives are most useful when one is
>overlapping communication and computation steps. This does not seem to
>be the case in the MPICH implementation of MPI_Alltoallw since there
>is no computation per se - all the information is know a priori.
>
>However, I would guess that if one were using custom data types (like
>vectors or sub arrays), then the creation of the data types could
>perhaps be overlapped with the communication steps (of course, one
>could then not call MPI_Alltoallw directly, but just post the isends
>and irecvs). I think that gives me something to experiment :-)
>
>Regards,
>Sudarshan
>
>
>
>
More information about the mpich-discuss
mailing list