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.

Reply via email to