m-a-d-n-e-s-s / madness

Multiresolution Adaptive Numerical Environment for Scientific Simulation
GNU General Public License v2.0
181 stars 62 forks source link

remote task submission (by `WorldObject::task` and `world.gop.broadcast`) is out of order by default #519

Closed evaleev closed 10 months ago

evaleev commented 10 months ago

follow-on to #516 , by default all WorldObject tasks are now out of order (which should eliminate the need to process tasks in-order that exposed issue #515 fixed in #516 ).

note that processing of active messages that do not spawn tasks, such as those involved in setting futures, still defaults to sequential order. This is done to guarantee for single-threaded programs (or for a thread in a multithreaded program) sequential consistency, i.e. doing

send(rank1, am1) send(rank1, am2)

cannot execute am1 before am2. Breaking this would make reasoning very difficult. Since setting future creates arbitrary changes to the state makes sense to use same rules for setting futures.

p.s. MPI has same semantics for p2p messages; at least the most recent standard states this explicitly: https://www.mpi-forum.org/docs/mpi-4.1/mpi41-report/node68.htm#Node68