Newsgroups: comp.parallel.mpi
From: ce107@hydra.cfm.brown.edu (C. Evangelinos)
Subject: Re: MPI_Alltoall() on Cray T3D
Organization: Brown University
Date: 26 Oct 1996 01:06:31 GMT
Message-ID: <CE107.96Oct25210631@hydra.cfm.brown.edu>

In article <54r57oINNa6k@crete.cis.ohio-state.edu>
sundar@crete.cis.ohio-state.edu (N Sundar) writes: 

>MPI provides a call called MPI_Alltoall() that performs complete
>(all-to-all personalized) exchange. We are using it on the Cray T3D,
>which has an MPI implementation from EPCC, Edinburg (sp?), U.K.  Does
>anybody out there know what algorithm is used by this implementation
>to perform all-to-all? Alternatively, are there any pointers to this?

A direct algorithm is used (ie. every processors sends a message to
everyone else:

(http://www.epcc.ed.ac.uk:80/t3dmpi/Product/Docs/mpi_t3d/subsection3_3_3.html)

"The initial implementation of the MPI_Alltoall function attempted to
minimise the number of data transfer operations by using the algorithm
represented in Figure 4 (wraparound communications are omitted for
clarity). On each step the amount of data transferred is doubled, but
there are only  steps. This was expected to be the most efficient
approach. However experimentation has shown that the nave approach of
having every process send directly to every other process is faster.
This is because the more sophisticated approach requires
synchronisation at each step to ensure data is not forwarded until it
has arrived. If the order of the communications in the nave approach
are arranged to ensure that two processes are not trying to send to
the same process at any time the whole operation tends towards
shmem_put bandwidth. "

The whole paper can be seen at:
http://www.epcc.ed.ac.uk:80/t3dmpi/Product/Docs/mpi_t3d/paper.html

Constantinos Evangelinos
Center for Fluid Mechanics
Brown University/Division of Applied Mathematics

