|
Boost-MPI : |
From: Mathieu Dutour (mathieu.dutour_at_[hidden])
Date: 2020-12-09 12:15:07
Dear all,
I understand that the forum is for development of mpi and my question
is more of a user having a problem. Yet I have extensive experience in MPI
and C++ and hope my question will be interesting to you.
I am doing the operation
------
mpi::request ereq = world.isend( .... );
boost::optional<mpi::status> stat = ereq.test();
if (stat)
if (stat->error() != MPI_SUCCESS) {
char error_string[10000];
int length_of_error_string;
MPI_Error_string(stat->error(), error_string,
&length_of_error_string);
fprintf(stderr, "err: %s\n", error_string);
}
------
What happens is that the error that occurs is
"MPI_T_ERR_CVAR_SET_NOT_NOW: The control variable cannot be set at this
moment."
It is the first time that I see that error.
As I understand it, the error means that the communication has not finished
yet.
The "control variable" is of course unknown, could it be the error message
itself?
The problem is two-fold:
1) First, I can see that the communication has finished since the
counterpart
of the isend has indeed received the data and done plenty of work with it
already.
2) The documentation for the "test()" operation says:
"Determine whether the communication associated with this request has
completed successfully. If so, returns the status object describing the
communication. Otherwise, returns an empty optional<> to indicate that the
communication has not completed
yet."
Thus as I can see, If the stat is nontrivial then it means that the
communication
has been done.
This occurred on a MacOS system with boost_mpi 1.74.0 installed via
homebrew.
On a Linux system with boost_mpi 1.71.0 the error does not occur. However,
there
may be problems as the use of
"mpirun -np 2 valgrind ./MyProg"
shows an error of the kind "Conditional jump or move depends on
uninitialised value()"
at "if (stat->error() != MPI_SUCCESS)"
All advice welcomed. Let me know if I can provide more information.
Mathieu
Boost-Commit list run by troyer at boostpro.com