Using the “Distributed Array” (Darray) Datatype
int gsizes[2], distribs[2], dargs[2], psizes[2];
gsizes[0] = m; /* no. of rows in global array */
gsizes[1] = n; /* no. of columns in global array*/
distribs[0] = MPI_DISTRIBUTE_BLOCK;
distribs[1] = MPI_DISTRIBUTE_BLOCK;
dargs[0] = MPI_DISTRIBUTE_DFLT_DARG;
dargs[1] = MPI_DISTRIBUTE_DFLT_DARG;
psizes[0] = 2; /* no. of processes in vertical dimension
psizes[1] = 3; /* no. of processes in horizontal dimension