Hei,
I am currently using the odeint-solver for calculating the right hand
side of a non-linear equation. For speeding up the calculation of the
right hand side, I decided to test the MPI-implementation. Now, after I
would prefer to keep the code backwards compatible, I did not want to
replace state_type with mpi_state, and instead split up the initial
vector by hand before calling odeint without telling odeint that I am
operating within an MPI context. I take care of all communications which
involve the vectors, and therefore I assumed that this approach should
work (especially after it worked correctly in small test programs).
Nevertheless, I encountered the issue that after a certain amount of
steps the step size between the different threads starts to differ by a
small amount, even though I am in the same iteration. As example:
step number rank step size
n 1 0.00025
n 0 0.00025 //Ok
n + 1 1 0.00051152
n + 1 0 0.000511523 //Not ok
I checked my program with valgrind for possible memory leaks/corruption
which could overwrite something, but nothing relevant came up. The
problem is repeatable.
Therefore, is the general idea correct at all, or am I doing something
wrong here by neglecting a possible communication between the different
threads within odeint?
Thanks!
Regards,
Roland
_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users