Technical Report Number
This paper presents an architecture-independent method for performing BMMC permutations on multiprocessors with distributed memory. All interprocessor communication uses the MPI function MPI_Sendrecv_replace(). The number of elements and number of processors must be powers of 2, with at least one element per processor, and there is no inherent upper bound on the ratio of elements per processor. Our method transmits only data without transmitting any source or target indices, which conserves network bandwidth. When data is transmitted, the source and target processors implicitly agree on each other's identity and the indices of the elements being transmitted. A C-callable implementation of our method is available from Netlib. The implementation allows preprocessing (which incurs a modest cost) to be factored out for multiple runs of the same permutation, even if on different data. Data may be laid out in any one of several ways: processor-major, processor-minor, or anything in between.
Dartmouth Digital Commons Citation
Cormen, Thomas H., "Performing BMMC Permutations Efficiently on Distributed-Memory Multiprocessors with MPI" (1997). Computer Science Technical Report PCS-TR97-317. https://digitalcommons.dartmouth.edu/cs_tr/152