#include <hpc/matvec/print.h> #include <hpc/mpi/grid.h> #include <hpc/mpi/gematrix.h> #include <hpc/mpi/copy.h> #include <mpi.h> #include <cstdio> int main(int argc, char** argv) { MPI_Init(&argc, &argv); typedef std::size_t Index; hpc::mpi::Grid grid; Index numRows = 10; Index numCols = 10; hpc::matvec::GeMatrix<double, Index> A(numRows, numCols); hpc::matvec::GeMatrix<double, Index> B(numRows, numCols); hpc::mpi::GeMatrix<double, Index> dA(numRows, numCols, grid); if (grid.nodeRow==0 && grid.nodeCol==0) { for (Index i=0; i<numRows; ++i) { for (Index j=0; j<numCols; ++j) { A(i,j) = i + j*numRows; } } } if (grid.nodeRow==0 && grid.nodeCol==0) { hpc::matvec::print(A, "A"); } // scatter hpc::mpi::copy(A, dA); // gather hpc::mpi::copy(dA, B); if (grid.nodeRow==0 && grid.nodeCol==0) { hpc::matvec::print(B, "B"); } MPI_Finalize(); } |