2022 · 20 citations · 20 references
ComputingComputer ScienceComputer SystemsDistributed SystemsParallel AlgorithmsParallel ComputingData LocalityData ParallelismData SynchronizationDistributed ComputingInterprocess CommunicationParallel Algorithm DesignBruck's AlgorithmComplexityLinear Complexity
In MPI, collective routines MPI_Alltoall and MPI_Alltoallv play an important role in facilitating all-to-all inter-process data exchange. MPI_Alltoallv is a generalization of MPI_Alltoall, supporting the exchange of non-uniform distributions of data. Popular implementations of MPI, such as MPICH and OpenMPI, implement MPI_Alltoall using a combination of techniques such as the Spread-out algorithm and the Bruck algorithm. Spread-out has a linear complexity in P, compared to Bruck's logarithmic complexity (P: process count); a selection between these two techniques is made at runtime based on the data block size. However, MPI_Alltoallv is typically implemented using only variants of the spread-out algorithm, and therefore misses out on the performance benefits that the log-time Bruck algorithm offers (especially for smaller data loads).
20
Performance analysis of MPI collective operations
Jelena Pješivac–Grbović, Thara Angskun, George Bosilca et al. · Cluster Computing · 2007 · 193 citations