Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add first "working" version of ODPOR
authorMaxwell Pirtle <maxwellpirtle@gmail.com>
Wed, 17 May 2023 11:46:20 +0000 (13:46 +0200)
committerMaxwell Pirtle <maxwellpirtle@gmail.com>
Wed, 17 May 2023 11:46:20 +0000 (13:46 +0200)
commitedc5c089fec77e74e39c8887a640fe03226d8a3f
treef560f65404facc0af2bc093ebf1e1f19b49bac17
parent1c06b6d1d79dd5c31b0711b845a3a3af87da0875
Add first "working" version of ODPOR

This commit introduces the first version of
ODPOR which detects a bug using the example
programs found in SimGrid's test suite! There
is still work to be done (e.g. dealing with
transitions that have multiple possible
paths of execution such as MCRandom() will
be non-trivial to resolve).

The key adjustments in this commit are
to the WakeupTree structure itself. Gone
are the days when each node in the tree
maintained a sequence of transitions to
execute; instead, each node contains only
a single transition, and its the paths between
a node and the root that describe the partial
executions that ODPOR needs to explore.
This resulted from a misconception I had about
the structure of wakeup trees. When an insertion
is made, potentially a *chain* of leaf nodes
are added into the tree. This ensures we always
have a single-process branch to pick (which
is what we expected) and greatly improves the
readability of some of the methods found in
State.cpp related to ODPOR
src/mc/api/State.cpp
src/mc/api/State.hpp
src/mc/explo/odpor/Execution.cpp
src/mc/explo/odpor/Execution.hpp
src/mc/explo/odpor/WakeupTree.cpp
src/mc/explo/odpor/WakeupTree.hpp