Hello,
We are partitioning a two-dimensional Cartesian communicator into
two one-dimensional subgroups. In this situation we have found
that both one-dimensional communicators inherit the period
logical of the first dimension of the original two-dimensional
communicator when using Open MPI. Using MPICH each
one-dimensional communicator inherits the period corresponding to
the dimensions specified in REMAIN_DIMS, as expected. Could this
be a bug, or are we making a mistake? The relevant calls we make in a
Fortran code are
CALL MPI_CART_CREATE(MPI_COMM_WORLD, 2, (/ NDIMX, NDIMY /), (/ .True., .False. /), .TRUE.,
COMM_CART_2D, IERROR)
CALL MPI_CART_SUB(COMM_CART_2D, (/ .True., .False. /), COMM_CART_X, IERROR)
CALL MPI_CART_SUB(COMM_CART_2D, (/ .False., .True. /), COMM_CART_Y, IERROR)
Following these requests,
CALL MPI_CART_GET(COMM_CART_X, MAXDIM_X, DIMS_X, PERIODS_X, COORDS_X, IERROR)
CALL MPI_CART_GET(COMM_CART_Y, MAXDIM_Y, DIMS_Y, PERIODS_Y, COORDS_Y, IERROR)
will result in
PERIODS_X = T
PERIODS_Y = T
If, on the other hand we define the two-dimensional communicator
using PERIODS = (/ .False., .True. /), we find
PERIODS_X = F
PERIODS_Y = F
Your advice on the matter would be greatly appreciated.
Regards,
John.