Hello list,
i get some erroneous results from calls to MPI_Comm_split with an
intercommunicator as communicator.
this is a brokendown testcase, the source is attached:
test_split.c:
mpi_comm_spwan(world, "test_split_client", 1, &inter)
for i=1:np
if rank < i
mpi_comm_split(inter, 0, 0, &inter2)
/* print new rank and size */
mpi_comm_free(&inter2)
else
mpi_comm_split(inter, MPI_UNDEFINED, 0, &inter2)
test_split_client.c:
mpi_comm_get_parent(&inter)
while true
mpi_comm_split(inter, 0, 0, &inter2)
/* print new remote size */
mpi_comm_free(&inter2)
mpi_comm_free(&inter)
first, my expected results:
np = 2:
test_split:0 test_split:1 test_split_client:0
i = 1:
new rank = 0 new remote size = 1
new size = 1
i = 2:
new rank = 0 new rank = 1 new remote size = 2
new size = 2 new size = 2
...
now some actually results:
a)
test_split:0 test_split:1 test_split_client:0
i = 1:
new rank = 0 new remote size = 1
new size = 2
i = 2:
new rank = 0 new rank = 1 new remote size = 2
new size = 2 new size = 2
b)
test_split:0 test_split:1 test_split_client:0
i = 1:
new rank = 0 new remote size = 1
new size = 1
i = 2:
new rank = 0 new rank = 1 new remote size = 2
new size = 1 new size = 2
c)
test_split:0 test_split:1 test_split_client:0
i = 1:
new rank = 0 new remote size = 1
new size = 2
i = 2:
new rank = 0 new rank = 1 new remote size = 2
new size = 1 new size = 2
something with the new size in rank 0 is wrong or the remote size
can someone please pointout if my code is wrong, or something with open-mpi?
greatings
bert wesarg
ps: these test were run on an dual smp machine and open-mpi 1.0.2
pps: i attached also an split test with intracommunicators, these results
are all expected
|