A new method is presented for distributing data in sparse matrix-vector multiplication. The method is two-dimensional, tries to minimize the true communication volume, and also tries to spread the computation and communication work evenly over the processors. The method starts with a recursive bipartitioning of the sparse matrix, each time splitting a rectangular matrix into two parts with a nearly equal number of nonzeros. The communication volume caused by the split is minimized. After the matrix partitioning, the input and output vectors are partitioned with the objective of minimizing the maximum communication volume per processor. 1. Introduction. Sparse matrix-vector multiplication lies at the heart of many iterative solvers for linear systems and eigensystems. In these solvers, a multiplication u := Av has to be carried out repeatedly for the same m × n sparse matrix A, each time for a different input vector v. On a distributed-memory parallel computer, efficient multiplication requires a suitable distribution of the data and the associated work. In particular, this requires distributing the sparse matrix and the input and output vectors over the p processors of the parallel computer such that each processor has about the same number of nonzeros and such that the communication overhead is minimal. The natural parallel algorithm for sparse matrix-vector multiplication with an arbitrary distribution of the matrix and the vectors consists of the following four phases: 1. Each processor sends its components v j to those processors that possess a nonzero a ij in column j.
Vastenhouw and Bisseling REF propose recursive bipartitioning of the general sparse matrix, alternating between the row and column directions.
A two-dimensional data distribution method for parallel sparse matrix-vector multiplication
SIAM Review
Mathematics Computer Science