mlaurent [Wed, 7 Jun 2023 15:03:32 +0000 (17:03 +0200)]
Fix CI tests
mlaurent [Wed, 7 Jun 2023 14:49:27 +0000 (16:49 +0200)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Wed, 7 Jun 2023 14:12:38 +0000 (16:12 +0200)]
Better strategy documentation
Arnaud Giersch [Wed, 7 Jun 2023 07:37:02 +0000 (09:37 +0200)]
Buffers should not be considered by CommWaitTransition::depends.
Update tesh files accordingly.
mlaurent [Wed, 7 Jun 2023 13:26:35 +0000 (15:26 +0200)]
Use xbt::random instead of rand and srand
mlaurent [Wed, 7 Jun 2023 12:39:42 +0000 (14:39 +0200)]
Better warning message for max-depth
mlaurent [Wed, 7 Jun 2023 10:46:36 +0000 (12:46 +0200)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid
Arnaud Giersch [Wed, 7 Jun 2023 09:44:02 +0000 (11:44 +0200)]
Remove unused parameters (sonar).
Arnaud Giersch [Wed, 7 Jun 2023 09:38:07 +0000 (11:38 +0200)]
Connect the right signal.
Arnaud Giersch [Wed, 7 Jun 2023 09:37:05 +0000 (11:37 +0200)]
Declare functions "const" (sonar).
Arnaud Giersch [Wed, 7 Jun 2023 09:03:12 +0000 (11:03 +0200)]
Another round of pointer-to-const for sonar.
Arnaud Giersch [Wed, 7 Jun 2023 08:44:40 +0000 (10:44 +0200)]
Use xbt_die instead of xbt_assert(false).
Arnaud Giersch [Wed, 7 Jun 2023 08:28:32 +0000 (10:28 +0200)]
Disable maybe throwing move constructor (sonar).
mlaurent [Tue, 6 Jun 2023 15:11:35 +0000 (17:11 +0200)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid
Arnaud Giersch [Tue, 6 Jun 2023 13:07:10 +0000 (15:07 +0200)]
Sort MANIFEST.in.
[ci-skip]
mlaurent [Tue, 6 Jun 2023 12:19:49 +0000 (14:19 +0200)]
Few more CI tesh fixing
mlaurent [Tue, 6 Jun 2023 12:06:18 +0000 (14:06 +0200)]
Fix stat order for CI tests
Arnaud Giersch [Tue, 6 Jun 2023 10:51:16 +0000 (12:51 +0200)]
Fix build without MC.
mlaurent [Tue, 6 Jun 2023 10:05:29 +0000 (12:05 +0200)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Tue, 6 Jun 2023 10:05:18 +0000 (12:05 +0200)]
Fix Manifest.in
Arnaud Giersch [Tue, 6 Jun 2023 10:02:17 +0000 (12:02 +0200)]
Clang-tidy: readability-qualified-auto.
Also add const qualifiers to pointers and references when possible.
Arnaud Giersch [Tue, 6 Jun 2023 09:59:15 +0000 (11:59 +0200)]
Define classes with "class".
Arnaud Giersch [Tue, 6 Jun 2023 09:48:30 +0000 (11:48 +0200)]
Postpone the destruction of Task::current_activity_.
Fixes heap-use-after-free spotted by ASan and valgrind.
Arnaud Giersch [Mon, 5 Jun 2023 20:42:27 +0000 (22:42 +0200)]
Various cleanups in Task plugin.
* reduce number of calls to simcall_answered
* use xbt::signal for the "on_this_*" signals
* reduce scope for static member "inited"
* remove intrusive_ptr_* function for derived classes
mlaurent [Tue, 6 Jun 2023 09:57:25 +0000 (11:57 +0200)]
Add factorisation for strategy and Use dynamic over static cast
mlaurent [Mon, 5 Jun 2023 18:56:26 +0000 (20:56 +0200)]
Merge branch 'master' of https://framagit.org/mwapl/simgrid
Martin Quinson [Mon, 5 Jun 2023 15:36:14 +0000 (17:36 +0200)]
Install package non-interactively on CI
Martin Quinson [Mon, 5 Jun 2023 15:18:25 +0000 (17:18 +0200)]
Another struct/class mismatch between forward declaration and actual use
Martin Quinson [Mon, 5 Jun 2023 14:12:43 +0000 (16:12 +0200)]
Enable the ODPOR/SDPOR tests in default builds also
Martin Quinson [Mon, 5 Jun 2023 14:02:13 +0000 (16:02 +0200)]
Please clang by not defaulting a constructor that it will delete
odpor_tests_private.hpp:24:3: error: explicitly defaulted default constructor is implicitly deleted [-Werror,-Wdefaulted-function-deleted]
DependentIfSameValueAction() = default;
^
odpor_tests_private.hpp:21:13: note: default constructor of 'DependentIfSameValueAction' is implicitly deleted because field 'value' of const-qualified type 'const int' would not be initialized
const int value;
^
mlaurent [Mon, 5 Jun 2023 14:09:11 +0000 (16:09 +0200)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Mon, 5 Jun 2023 14:08:39 +0000 (16:08 +0200)]
Fix stat missorder at the end of DFSexplorer
Arnaud Giersch [Mon, 5 Jun 2023 13:45:33 +0000 (15:45 +0200)]
Cosmetics: whitespace cleanup (codefactor.io).
Arnaud Giersch [Mon, 5 Jun 2023 07:55:07 +0000 (09:55 +0200)]
Call CommImpl::set_iface(nullptr) as soon as the comm is finished, and make TSan happy with s4u-app-masterworkers-parallel tests.
Martin Quinson [Mon, 5 Jun 2023 13:51:06 +0000 (13:51 +0000)]
Merge branch 'fix-sonar-task' into 'master'
Fix sonar task
See merge request simgrid/simgrid!160
Adrien Gougeon [Mon, 5 Jun 2023 13:14:09 +0000 (15:14 +0200)]
more sonar fix
Adrien Gougeon [Mon, 5 Jun 2023 12:55:57 +0000 (14:55 +0200)]
fix sonar warnings
Martin Quinson [Mon, 5 Jun 2023 12:46:11 +0000 (12:46 +0000)]
Merge branch 'odpor-clean-ups' into 'master'
Address Comments/Errors from ODPOR/SDPOR Integration
See merge request simgrid/simgrid!159
Arnaud Giersch [Mon, 5 Jun 2023 12:37:21 +0000 (14:37 +0200)]
Fix RuntimeError: pybind11::handle::inc_ref() PyGILState_Check() failure.
See commit
2c2d94471739d82e9cbd370711f73377e0b17717 for details.
Martin Quinson [Mon, 5 Jun 2023 12:33:15 +0000 (14:33 +0200)]
CI pages: try to use the Debian version of the python packages
Martin Quinson [Mon, 5 Jun 2023 12:24:30 +0000 (14:24 +0200)]
Remove a test that was indended to show that this branch is never used
Maxwell Pirtle [Mon, 5 Jun 2023 12:17:08 +0000 (14:17 +0200)]
Complete missing docs for WakeupTreeNode
Maxwell Pirtle [Mon, 5 Jun 2023 12:00:50 +0000 (14:00 +0200)]
Add more documentation and fix forward declaration
mlaurent [Mon, 5 Jun 2023 11:59:56 +0000 (13:59 +0200)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Mon, 5 Jun 2023 11:56:03 +0000 (13:56 +0200)]
Fix few typos and add random seed intializer
Martin Quinson [Mon, 5 Jun 2023 10:38:58 +0000 (12:38 +0200)]
Use Debian:12 for our build deps
Martin Quinson [Mon, 5 Jun 2023 10:26:59 +0000 (10:26 +0000)]
Merge branch 'rename-operation-task' into 'master'
rename operation to task
See merge request simgrid/simgrid!158
Martin Quinson [Mon, 5 Jun 2023 10:22:51 +0000 (10:22 +0000)]
Merge branch 'odpor-implementation' into 'master'
Introduce SDPOR and ODPOR into Simgrid
See merge request simgrid/simgrid!154
Fred Suter [Sun, 4 Jun 2023 18:52:18 +0000 (14:52 -0400)]
fire on_start for one-sided communication instead of on_send/recv
Fred Suter [Sun, 4 Jun 2023 18:37:18 +0000 (14:37 -0400)]
add Comm::on_this_send and Comm::on_this_recv
Fred Suter [Sun, 4 Jun 2023 16:22:46 +0000 (12:22 -0400)]
[no-ci] indicate which methods and signals are static in the doc
Fred Suter [Fri, 2 Jun 2023 21:17:22 +0000 (17:17 -0400)]
[no-ci] precise which methods of the Actor class are static
Arnaud Giersch [Fri, 2 Jun 2023 16:18:09 +0000 (18:18 +0200)]
This should be fixed now.
Arnaud Giersch [Fri, 2 Jun 2023 16:09:56 +0000 (18:09 +0200)]
A deleted Comm cannot be a valid iface anymore.
Adrien Gougeon [Fri, 2 Jun 2023 07:50:56 +0000 (09:50 +0200)]
rename operation to task. rename execute to fire.
Fred Suter [Thu, 1 Jun 2023 22:06:23 +0000 (18:06 -0400)]
properly remove the old signals and prevent MC to fire Comm::on_this_completion
Fred Suter [Thu, 1 Jun 2023 22:05:18 +0000 (18:05 -0400)]
react to the proper signals
Maxwell Pirtle [Thu, 1 Jun 2023 11:21:23 +0000 (13:21 +0200)]
Introduce ODPOR integration with multiple actions
Prior commits had missing integration with transitions
which could be executed multiple times in the form of
variants. This commit resolves those issues by making
two important modifications:
1. Determining the "current thing that actor X is
running" from a given state `s` has been modified
to reflect what we would expect if we asked the
question even after having exhausted all combinations;
the the case where all combinations have been executed,
the last variant is that which we would expect to be
considered the transition which were enabled at `s`.
This allows us to "fix" the spot in ODPOR where we
need to determine those actions enabled at a given
state `s`. We need to treat it as if only one variant
actually exists; for if there are differences in the
dependency structure for each variant, we wouldn't
want to erroneously deduce that an actor `X` were
a weak initial for some prefix `E'` of `E` and
for some extension `v` of `E'` based on what it
HAD run in the past.
2. In ODPOR, we now only insert members into the
sleep set when all variants of a transition have
been executed. This ensures that we are effectively
treating each variant in isolation from one another;
it is only when we reach the last variant that we
can finally go ahead and say "OK actor X you can
go into the sleep set now". Note that it's perfectly
possible for the actor to later end up in sleep sets
of states that occur *later on*; but for the sleep
set that is at *this* state, we'd want to be sure
only to add it after having explored the state space
with each variant. The reasoning is the same as in
point 1: we wouldn't want the sleep set to be based
on an action that the actor HAD run in the past as
the proxy representing what that actor is doing IN
THE PRESENT. If the dependencies were different among
the different variants, we'd have an issue if we
had previously added the other variants
Martin Quinson [Thu, 1 Jun 2023 11:20:43 +0000 (11:20 +0000)]
Merge branch 'python-repr' into 'master'
add repr for many simgrid objects
See merge request simgrid/simgrid!156
Adrien Gougeon [Thu, 1 Jun 2023 09:48:52 +0000 (11:48 +0200)]
switch repr to Class(objectname). fix python operation tests.
Maxwell Pirtle [Thu, 1 Jun 2023 09:10:18 +0000 (11:10 +0200)]
Add small test for insertions
Adrien Gougeon [Thu, 1 Jun 2023 08:49:52 +0000 (10:49 +0200)]
add repr for many simgrid objects. replace mailbox __str__ to match __repr__ of others objects. clang-format.
Maxwell Pirtle [Thu, 1 Jun 2023 07:16:30 +0000 (09:16 +0200)]
Add odpor_tests_private.hpp to MANIFEST.in
Arnaud Giersch [Thu, 1 Jun 2023 07:23:19 +0000 (09:23 +0200)]
ASan: yet another odr-violation to ignore.
Arnaud Giersch [Wed, 31 May 2023 08:48:26 +0000 (10:48 +0200)]
Add missing includes.
Arnaud Giersch [Wed, 31 May 2023 08:48:26 +0000 (10:48 +0200)]
Correct signature for deleted constructor.
Fred Suter [Wed, 31 May 2023 21:38:07 +0000 (17:38 -0400)]
firing on_this_completion breaks a lot of tests and I don't see how to fix this (@agiersch, any idea?)
Fred Suter [Wed, 31 May 2023 20:55:13 +0000 (16:55 -0400)]
add on_this_veto signal to Activities
Fred Suter [Wed, 31 May 2023 20:38:06 +0000 (16:38 -0400)]
forgot to fire signals
Fred Suter [Wed, 31 May 2023 20:27:26 +0000 (16:27 -0400)]
simplify example
Fred Suter [Wed, 31 May 2023 20:21:37 +0000 (16:21 -0400)]
add on_this_[suspend,resume] signals to Activities
Fred Suter [Wed, 31 May 2023 20:03:55 +0000 (16:03 -0400)]
add on_this_completion signal to Activities
Fred Suter [Wed, 31 May 2023 19:27:27 +0000 (15:27 -0400)]
add on_this_start signal to Activities
Fred Suter [Wed, 31 May 2023 14:10:41 +0000 (10:10 -0400)]
improve comment
Martin Quinson [Wed, 31 May 2023 15:11:10 +0000 (15:11 +0000)]
Merge branch 'doc-photovoltaic-plugin' into 'master'
add links to photovoltaic power/cost models in docs
See merge request simgrid/simgrid!155
Adrien Gougeon [Wed, 31 May 2023 14:18:34 +0000 (16:18 +0200)]
add links to power/cost models in docs
Maxwell Pirtle [Wed, 31 May 2023 13:18:31 +0000 (15:18 +0200)]
Add SDPOR backtracking simulation unit test
This commit adds a small unit test which
simulates the process of determining which
threads need to be added into the backtrack
set of a given state using SDPOR
Maxwell Pirtle [Wed, 31 May 2023 12:14:12 +0000 (14:14 +0200)]
Add more independence tests w.r.t a partial execution
Martin Quinson [Wed, 31 May 2023 12:30:47 +0000 (12:30 +0000)]
Merge branch 'operation-python' into 'master'
add python bindings for operations
See merge request simgrid/simgrid!153
Martin Quinson [Wed, 31 May 2023 12:23:45 +0000 (14:23 +0200)]
Merge branch 'simgrid-fork-plugin-photovoltaic'
Maxwell Pirtle [Wed, 31 May 2023 07:20:55 +0000 (09:20 +0200)]
Fix MANIFEST.in etc.
Fred Suter [Wed, 31 May 2023 01:38:16 +0000 (21:38 -0400)]
move on_start and on_completion from CommImpl to Comm
Maxwell Pirtle [Tue, 30 May 2023 14:11:45 +0000 (16:11 +0200)]
Force the use of sleep sets with ODPOR
Martin Quinson [Tue, 30 May 2023 14:06:16 +0000 (16:06 +0200)]
GitHub action: update to actions/checkout@v3
Maxwell Pirtle [Tue, 30 May 2023 13:49:26 +0000 (15:49 +0200)]
Adjust tesh tests according to changes in deps.
A number of tests were affected by the previous
additions that labeled transitions executed by
the same actor as dependent. The appropriate
modifications were made to the expected outputs
and a "sanity" check was performed before making
them
Maxwell Pirtle [Tue, 30 May 2023 11:46:37 +0000 (13:46 +0200)]
Mark transitions run by the same actor as dependent
This commit adds a missing component to a number of
transition classes. Transitions that are executed by
the same actor are inherently dependent; but only the
RandomTransition actually checked for this case! This
caused ODPOR to search traces incorrectly under the
assumption that transitions which were actually
dependent were independent
Maxwell Pirtle [Tue, 30 May 2023 11:42:32 +0000 (13:42 +0200)]
Fix subtle bug in ~_E computation
The computation for the action ~_E requires
that we compute whether `p` is independent with
some sequence of transitions `w` after an
execution `E`. The algorithm for computing
whether an equivalent trace was found works
to iteratively eliminate events from the
equivalent sequence, leaving behind only
the remaining "bits" that are needed for
insertion into a wakeup tree.
The bug involved a typo of `w` for `w_now`
:( :( which broke everything :/
Adrien Gougeon [Tue, 30 May 2023 10:57:58 +0000 (12:57 +0200)]
add python bindings for operations
Maxwell Pirtle [Fri, 26 May 2023 13:18:04 +0000 (15:18 +0200)]
Add remaining handlers to ReversibleRaceCalculator
This commit adds handlers for each type of transition
to ReversibleRaceCalculator which, as the name suggests,
determines whether a reversible race exists between two
events e1 and e2 based on the type of transition found
at e2. The full semantics have not been added for each
type of transition and will need to be added in the future
Maxwell Pirtle [Fri, 26 May 2023 13:12:42 +0000 (15:12 +0200)]
Resolve misconception with ODPOR pseudocode impl.
Like the SDPOR implementation before it, the ODPOR
implementation suffered from a similar fault in its
implementation. Determining whether an insertion was
necessary into a wakeup tree for some point in the
past requires determining whether the sleep set and
the set of weak initials overlap one another. If
their intersection is the empty set, THEN we attempt
to insert an actor. The prior implementation attempted
to find the first such actor that was not contained
in the sleep set, but this is semantically different
Maxwell Pirtle [Fri, 26 May 2023 12:45:09 +0000 (14:45 +0200)]
Resolve misconception with SDPOR pseudocode impl.
This commits fixes a semantics mismatch between
the implementation and the pseudocode in SDPOR.
The trouble was that we didn't stop searching
for an initial when we noticed that ANY initial
was contained in the backtrack set; instead, we
simply searched until we found ANY initial contained
OUTSIDE OF the backtrack set. The latter is not
equivalent to the former, so SDPOR was doing
more work than necessary.
A similar implementation issue is also present in
ODPOR which will be resolved in due time.
Maxwell Pirtle [Fri, 26 May 2023 08:07:57 +0000 (10:07 +0200)]
Fix subtle bug in Execution regeneration in DFSExplorer
Prior to this commit, during state regeneration,
we had used the state's `get_transition_out()`
method to refill the `Execution` instance bound
to DFSExplorer (`execution_seq_`). The trouble
is that this is an **unstable** source of truth:
it should not be trusted to regenerate an execution.
Instead, the `get_transition_in()` method should
be used on the state which follows. Intuitively,
both methods should be equivalent, which is why
the bug was overlooked for so long. Now that the
execution is correct and that SDPOR/ODPOR are
based on the correct sources of truth, things
are moving along more nicely and the two algorithms
appear to behave more sanely.
In addition to the above bug fix, this commit adds
a return value to the `insert()` function of the
`WakeupTree` class. This extra information is used
in debug logs to get a better idea of what ODPOR
is doing during its insertion. Similar debug information
will be added to SDPOR in subsequent phases.
Maxwell Pirtle [Thu, 25 May 2023 09:18:31 +0000 (11:18 +0200)]
Keep pointers to transitions instead of slices
Prior to this commit, sleep sets contained slices
Maxwell Pirtle [Thu, 25 May 2023 08:25:07 +0000 (10:25 +0200)]
Fix two minor bugs in the ODPOR implementation
This commit fixes the following two bugs:
1. When seeding a wakeup tree for the first
time, we forgot to add a `break` statement
to ensure that only one such enabled thread
were placed into the wakeup tree. Before
all such enabled threads were inserted which
amounted to what would have been a brute-force
search :(.
2. When determining whether a sequence is a
candidate for insertion into a wakeup tree,
we may need to check, for all enabled actors
in a given state, whether those actors'
next steps are independent with the sequence
theretofore constructed. This additional
step peforms the work needed to check whether
those actors are contained in the set of
*weak* initials. The method corresponds
to line 6 of the pseudocode of the ODPOR algorithm
Arnaud Giersch [Wed, 24 May 2023 12:38:50 +0000 (14:38 +0200)]
Please Sonar and scan-build.
Arnaud Giersch [Wed, 24 May 2023 12:34:42 +0000 (14:34 +0200)]
Make ASan ignore more odr-violations.
Arnaud Giersch [Wed, 24 May 2023 12:28:22 +0000 (14:28 +0200)]
Fix some sonar issues in includes, after upgrade to c++17.
Arnaud Giersch [Wed, 24 May 2023 16:18:15 +0000 (18:18 +0200)]
Disable implicit conversions in nlohmann/json.
See https://github.com/nlohmann/json#implicit-conversions
Maxwell Pirtle [Wed, 24 May 2023 12:04:32 +0000 (14:04 +0200)]
Add reversible race implementations for Comm actions
Maxwell Pirtle [Wed, 24 May 2023 11:09:05 +0000 (13:09 +0200)]
Add reversible race calculator
Determining whether or not a race between
two events is reversible is a critical component
of ODPOR. It turns out that we need to specialize
the race detection to the action types themselves.
Knowing the types of the transitions will help us
determine whether the race is reversible.