I could pinpoint the problem to the usage of MPI_ANY_SOURCE. When using a a loop over all communicator ranks instead of MPI_ANY_SOURCE, my program did work! Here is the minimal example: /* mpicc -Wall -std=c11 -o test-mpi mpi-probe-any-source-bug.c && mpirun ...
As fr now, the check would be at run time unless we turn it into a tag (struct any_source_t{} any_source;) so that the compiler can force a second tag. The use would still be able to use then value MPI_ANY_SOURCE directly but then we could warn. Member aminiussi commented Aug...
( 1, /* tag */ 1, MPI_COMM_WORLD, &flag, &status ); /* WORKS after <4s */ //rc = MPI_Iprobe( 1, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, &status ); /* WORKS after <4s */ //rc = MPI_Iprobe( MPI_ANY_SOURCE, /* tag */ 1, MPI_COMM_WORLD, &fla...
I could pinpoint the problem to the usage of MPI_ANY_SOURCE. When using a a loop over all communicator ranks instead of MPI_ANY_SOURCE, my program did work! Here is the minimal example: /* mpicc -Wall -std=c11 -o test-mpi mpi-probe-any-source-bug.c && mpirun...