Maxwell Pirtle [Wed, 3 May 2023 07:34:12 +0000 (09:34 +0200)]
Add tentatively-working SDPOR implementation
This commit introduces SDPOR into SimGrid
(well, mostly). The current implementation
will be improved upon by cleaning up some
of the code that was added to improve
its testability
Maxwell Pirtle [Tue, 2 May 2023 10:38:43 +0000 (12:38 +0200)]
Add initial outline of SDPOR implementation
The SDPOR algorithm is nearing an implementation
into SimGrid (sans a few technical details and
code clean ups that will be nice to add). The
algorithm largely builds off the existing
infrastructure of DFSExplorer fortunately.
Maxwell Pirtle [Tue, 2 May 2023 06:58:21 +0000 (08:58 +0200)]
Add Execution concept without ExecutionViews
The Execution is the key concept in ODPOR
and SDPOR for generating new traces. Executions
for the basis off of which new search paths are
created
Maxwell Pirtle [Thu, 27 Apr 2023 08:43:37 +0000 (10:43 +0200)]
Remove sdpor folder in favor of odpor only
Maxwell Pirtle [Wed, 26 Apr 2023 13:57:28 +0000 (15:57 +0200)]
Add `Execution` to represent series of transitions
The Execution class represents a series of transitions
taken by a process. An execution importantly also encodes
the happens-before relation among the series of steps
represented. The eventual implementation will leverage
clock vectors to compute the relation between events.
A more refined happens-before relation is left for
as a future (complicated) exercise...
Maxwell Pirtle [Mon, 24 Apr 2023 12:55:12 +0000 (14:55 +0200)]
Add class for eventual "happens-before" computations
Computing the "happens-before" relation over
a sequence of executions is an important step
in determining whether or not DPOR (and SDPOR
alike) needs to add a backtracking point.
This commit introduces the "ClockVector"
class which acts effectively as a light
wrapping around an `unordered_map` mapping
actor ids to integer values.
The essential component of the ClockVector
class is that its contents are "implicit"
in the sense that actors for which no
value is explicitly contained in the map
are assigned to the value `0` by default.
This allows clock vectors to be flexible
enough to support the creation of new
actors and the enabling/disabling of old
actors as they come and go.
Fred Suter [Thu, 11 May 2023 14:29:20 +0000 (10:29 -0400)]
add two more utility functions to the Operation plugin
Martin Quinson [Wed, 10 May 2023 21:35:25 +0000 (23:35 +0200)]
Fix make distcheck
Martin Quinson [Wed, 10 May 2023 21:27:34 +0000 (23:27 +0200)]
MC: Kill the now useless code State::get_recipe
Martin Quinson [Wed, 10 May 2023 21:22:28 +0000 (23:22 +0200)]
Merge branch 'master' of framagit.org:simgrid/simgrid
Martin Quinson [Wed, 10 May 2023 21:21:10 +0000 (23:21 +0200)]
DFS MC: Restore from system states even if we have to run some transitions out of it
This makes the model-check/checkpoint a bit more efficient by
increasing the amount of cases where we can reuse taken checkpoints.
It is still awfully slow because checkpoints are. The next step is to
implement model-check/checkpoint with forks.
Martin Quinson [Wed, 10 May 2023 11:08:09 +0000 (11:08 +0000)]
Merge branch 'dag-lab' into 'master'
Add dag scheduling lab to docs
See merge request simgrid/simgrid!150
Martin Quinson [Wed, 10 May 2023 11:07:36 +0000 (11:07 +0000)]
Merge branch 'changelog-operation-plugin' into 'master'
Add plugins operation and battery to changelog
See merge request simgrid/simgrid!149
Arnaud Giersch [Tue, 9 May 2023 14:46:08 +0000 (16:46 +0200)]
Use forwarding references with std::forward (sonar).
(hope I got it right this time)
Arnaud Giersch [Tue, 9 May 2023 14:27:35 +0000 (16:27 +0200)]
Use a std::vector as an underlying container for backtrack_points, so that maximal_subsets_iterator can have a noexcept move constructor by default.
Arnaud Giersch [Tue, 9 May 2023 13:57:50 +0000 (15:57 +0200)]
Use a static variable for empty_set, and allow default noexcept move constructor.
Adrien Gougeon [Tue, 9 May 2023 12:45:25 +0000 (14:45 +0200)]
add dag scheduling lab
Arnaud Giersch [Mon, 8 May 2023 19:27:14 +0000 (21:27 +0200)]
Plug memory leak.
Arnaud Giersch [Sat, 6 May 2023 11:48:33 +0000 (13:48 +0200)]
Use pointer-to-const for parameter (sonar).
Arnaud Giersch [Fri, 5 May 2023 08:38:39 +0000 (10:38 +0200)]
Fix sonar bug: attribute access on a value that can be 'None'.
Arnaud Giersch [Thu, 4 May 2023 13:13:45 +0000 (15:13 +0200)]
Misc Sonar issues.
* declare functions "const"
* use pointer-to-const or reference-to-const
* use structured bindings
* extract assignment from expression
* mark constructors "explicit"
* pass large object parameters by reference-to-const
* use default implementation constructor
* explicitly capture required variables in lambdas
Fred Suter [Fri, 5 May 2023 01:20:01 +0000 (21:20 -0400)]
mess up with operations
+ chainable setters
+ getters
+ boost instrusive pointers
Martin Quinson [Thu, 4 May 2023 14:14:54 +0000 (16:14 +0200)]
Rename Link::get_usage() to Link::get_load() for consistency with Host::
Adrien Gougeon [Thu, 4 May 2023 09:22:11 +0000 (11:22 +0200)]
add plugins operation and battery
Fred Suter [Wed, 3 May 2023 14:39:56 +0000 (10:39 -0400)]
further simplify this example
Martin Quinson [Fri, 28 Apr 2023 00:01:20 +0000 (02:01 +0200)]
One use less of get_recipe() that will soon die
Martin Quinson [Thu, 27 Apr 2023 23:25:04 +0000 (01:25 +0200)]
Factorize more code between DFSExplo and LivenessExplo, and UDPOR
Arnaud Giersch [Tue, 2 May 2023 14:32:11 +0000 (16:32 +0200)]
Kill useless empty function.
Arnaud Giersch [Tue, 2 May 2023 14:22:02 +0000 (16:22 +0200)]
Missing "override".
Arnaud Giersch [Tue, 2 May 2023 14:14:43 +0000 (16:14 +0200)]
Simplify expression.
Arnaud Giersch [Tue, 2 May 2023 14:12:18 +0000 (16:12 +0200)]
Fix use-after-free observed with the s4u-operation examples.
Arnaud Giersch [Tue, 2 May 2023 14:24:29 +0000 (16:24 +0200)]
Cosmetics (sonar).
Arnaud Giersch [Tue, 11 Apr 2023 09:13:59 +0000 (11:13 +0200)]
Define each identifier in a dedicated statement (sonar).
Arnaud Giersch [Sat, 29 Apr 2023 08:03:02 +0000 (10:03 +0200)]
Revert "Run mc-*-liveness tests serial, and hope to pass on CI."
This reverts commit
881507dc9fbeba0c63112dd0058d9c591b67419e.
In fact, it was just the CI infrastructure that was unusually slow these days.
Arnaud Giersch [Tue, 18 Apr 2023 09:39:48 +0000 (11:39 +0200)]
Whitespace cleanup (codefactor.io).
Martin Quinson [Thu, 27 Apr 2023 13:41:03 +0000 (15:41 +0200)]
Lazily compute the recipe of a state, on need only
This will be useful when leveraging intermediate states during
backtracks. In that case, we need to compute partial recipes, up to
the advanced restaure point.
Martin Quinson [Thu, 27 Apr 2023 12:09:03 +0000 (14:09 +0200)]
More automatic memory mgmt in MC
Martin Quinson [Thu, 27 Apr 2023 11:48:19 +0000 (13:48 +0200)]
MC: give each state an incoming transition too
Using the parent's outgoing transition is not reliable anymore now
that we don't always explore the tree in order, but rather following
the exploration strategies.
Martin Quinson [Tue, 18 Apr 2023 07:01:51 +0000 (09:01 +0200)]
Fix comment [no-ci]
Arnaud Giersch [Thu, 27 Apr 2023 12:57:19 +0000 (14:57 +0200)]
Run mc-*-liveness tests serial, and hope to pass on CI.
Arnaud Giersch [Thu, 27 Apr 2023 09:28:08 +0000 (11:28 +0200)]
Fix comment.
Arnaud Giersch [Thu, 27 Apr 2023 09:27:02 +0000 (11:27 +0200)]
There is no need to declare the default constructors here.
Arnaud Giersch [Thu, 27 Apr 2023 09:26:20 +0000 (11:26 +0200)]
Fix build error: exception specification of explicitly
defaulted move constructor does not match the calculated one.
Martin Quinson [Wed, 26 Apr 2023 12:45:40 +0000 (12:45 +0000)]
Merge branch 'operation-plugin' into 'master'
Operation plugin
See merge request simgrid/simgrid!145
Martin Quinson [Tue, 18 Apr 2023 07:08:17 +0000 (07:08 +0000)]
Merge branch 'udpor-phase7' into 'master'
Phase 7 of UDPOR Integration: Add specialized `ex(C)` computation for `Comm*` transitions
See merge request simgrid/simgrid!144
Martin Quinson [Mon, 17 Apr 2023 08:01:01 +0000 (10:01 +0200)]
sonar fixes
- Undefined return value (that would happen on a platform without any host)
- Local variable shadowing
- Automatic memory management
- const, explicit, etc.
Martin Quinson [Sun, 16 Apr 2023 16:45:59 +0000 (18:45 +0200)]
Let resource profiles finish their initialization by themselves and kill presolve
Martin Quinson [Sun, 16 Apr 2023 16:31:13 +0000 (18:31 +0200)]
No need to presolve the models to finish their initialization nowadays
I think that this was a leftover of the good old C times.
Martin Quinson [Sun, 16 Apr 2023 10:23:18 +0000 (12:23 +0200)]
Only fire on_platform_created after creating the platform, not after loading the deployment
Martin Quinson [Sun, 16 Apr 2023 09:03:31 +0000 (11:03 +0200)]
Add a target to recompile all ns3 tests (and only them)
Adrien Gougeon [Sun, 16 Apr 2023 08:41:16 +0000 (10:41 +0200)]
rename create to init. add init with name only. add setters
Martin Quinson [Sat, 15 Apr 2023 22:38:08 +0000 (00:38 +0200)]
Make sure that we never have a 0 transition at the end of the stack
Martin Quinson [Sat, 15 Apr 2023 21:50:48 +0000 (23:50 +0200)]
Also send the disabled transitions over: UDPOR needs it
Martin Quinson [Sat, 15 Apr 2023 21:40:11 +0000 (23:40 +0200)]
More informative message on system error
Martin Quinson [Fri, 14 Apr 2023 12:21:47 +0000 (14:21 +0200)]
More defensive programing style
Adrien Gougeon [Fri, 14 Apr 2023 10:37:41 +0000 (12:37 +0200)]
add missing '&' causing temporary value to be modified
Adrien Gougeon [Fri, 14 Apr 2023 09:24:00 +0000 (11:24 +0200)]
rename on_start/on_end functions call to on_this_start/on_this_end. add on_start_cb and on_end_cb
Martin Quinson [Thu, 13 Apr 2023 21:51:41 +0000 (23:51 +0200)]
Trust the config system to check that only valid values are used
Arnaud Giersch [Wed, 12 Apr 2023 20:02:34 +0000 (22:02 +0200)]
Disable coverage on circleci.
It seems that it is not used and it slows down the tests.
[ci-skip]
Martin Quinson [Wed, 12 Apr 2023 20:46:30 +0000 (22:46 +0200)]
Make this example valgrind-clean
Martin Quinson [Wed, 12 Apr 2023 19:37:05 +0000 (21:37 +0200)]
Further cosmetics in that example, adding a helper function to s4u on the way
Fred Suter [Wed, 12 Apr 2023 18:19:28 +0000 (14:19 -0400)]
simplify the example now that host can be set to serial
Martin Quinson [Wed, 12 Apr 2023 15:58:18 +0000 (17:58 +0200)]
Use host->set_concurrency_limit(1) in an example where it makes sense
Martin Quinson [Wed, 12 Apr 2023 15:49:30 +0000 (17:49 +0200)]
Document a bit the MC changes
Martin Quinson [Wed, 12 Apr 2023 15:43:10 +0000 (17:43 +0200)]
Allow to set a concurrency limit on disks and hosts
Arnaud Giersch [Wed, 12 Apr 2023 12:25:33 +0000 (14:25 +0200)]
Inline Exploration::system_error.
Arnaud Giersch [Wed, 12 Apr 2023 12:23:15 +0000 (14:23 +0200)]
Remove useless specialized exceptions from simgrid::mc.
Arnaud Giersch [Wed, 12 Apr 2023 12:08:34 +0000 (14:08 +0200)]
Use an exception on Exploration::system_exit().
The goal is to use RAII to free the memory on exit, and get cleaner valgrind reports.
Arnaud Giersch [Wed, 12 Apr 2023 09:38:20 +0000 (11:38 +0200)]
Sonar...
Adrien Gougeon [Wed, 12 Apr 2023 07:59:11 +0000 (09:59 +0200)]
missing virtual destructor
Adrien Gougeon [Tue, 11 Apr 2023 21:39:40 +0000 (23:39 +0200)]
fix distcheck
Adrien Gougeon [Tue, 11 Apr 2023 21:18:36 +0000 (23:18 +0200)]
missing lib
Adrien Gougeon [Tue, 11 Apr 2023 14:33:21 +0000 (16:33 +0200)]
clang-format
Adrien Gougeon [Tue, 11 Apr 2023 14:30:27 +0000 (16:30 +0200)]
add prog_ns3 to manifest
Adrien Gougeon [Tue, 11 Apr 2023 13:48:40 +0000 (15:48 +0200)]
add operation examples
Adrien Gougeon [Tue, 11 Apr 2023 13:48:13 +0000 (15:48 +0200)]
several updates to plugin operation
Adrien Gougeon [Tue, 11 Apr 2023 13:44:56 +0000 (15:44 +0200)]
add operation to plugin doc
Adrien Gougeon [Tue, 11 Apr 2023 13:43:43 +0000 (15:43 +0200)]
add operation to manifest
Adrien Gougeon [Fri, 7 Apr 2023 09:00:05 +0000 (11:00 +0200)]
fix bad type comparison
Adrien Gougeon [Wed, 5 Apr 2023 11:52:22 +0000 (13:52 +0200)]
add operation plugin
Arnaud Giersch [Tue, 11 Apr 2023 13:26:28 +0000 (15:26 +0200)]
Assignment operators should return non-"const" references (sonar).
Also enfore C++ "rule-of-three".
Arnaud Giersch [Tue, 11 Apr 2023 13:26:28 +0000 (15:26 +0200)]
Mark functions as "const" (sonar).
Arnaud Giersch [Tue, 11 Apr 2023 13:26:28 +0000 (15:26 +0200)]
Use std::string (sonar).
Arnaud Giersch [Tue, 11 Apr 2023 13:26:28 +0000 (15:26 +0200)]
Misc sonar issues.
Arnaud Giersch [Tue, 11 Apr 2023 13:26:28 +0000 (15:26 +0200)]
Reduce scope for variables (sonar).
Arnaud Giersch [Tue, 11 Apr 2023 13:26:28 +0000 (15:26 +0200)]
Pointer and reference should be "const" if the corresponding object is not modified (sonar).
Arnaud Giersch [Tue, 11 Apr 2023 13:26:28 +0000 (15:26 +0200)]
Fix bound checking in assert.
Arnaud Giersch [Tue, 11 Apr 2023 13:26:28 +0000 (15:26 +0200)]
Whitespace cleanup (codefactor.io).
Arnaud Giersch [Mon, 10 Apr 2023 20:03:39 +0000 (22:03 +0200)]
Use an intermediate variable to compute the sum and access c[i][j] only once.
May fix crash when built with Intel(R) oneAPI DPC++/C++ Compiler 2023.1.0 (2023.1.0.
20230320)
Probably an optimization bug!
Also clean up the function signature.
Arnaud Giersch [Wed, 5 Apr 2023 20:04:58 +0000 (22:04 +0200)]
Less low-level operations to manage receive buffer.
Martin Quinson [Fri, 7 Apr 2023 20:05:40 +0000 (22:05 +0200)]
Please don't fix this error reported by clang-static [no-ci]
Arnaud Giersch [Fri, 7 Apr 2023 16:52:53 +0000 (18:52 +0200)]
Define and use VALGRIND_NO_TRACE_CHILDREN for simgrid-mc tests.
There are two benefits. First, memory leaks are checked for the simgrid-mc process,
and then the tests run faster.
[ci-skip]
Arnaud Giersch [Fri, 7 Apr 2023 14:49:36 +0000 (16:49 +0200)]
Add $VALGRIND_NO_LEAK_CHECK in tesh files when simgrid-mc is used.
Too many memory leaks are detected in the MCed processes.
Arnaud Giersch [Fri, 7 Apr 2023 13:23:05 +0000 (15:23 +0200)]
Pass include and library directories to try_compile.
Arnaud Giersch [Fri, 7 Apr 2023 09:43:02 +0000 (11:43 +0200)]
Fix usage of option --cfg=path in tesh files.
Most of them reference a non-existent directory: examples/smpi/msg/.
Remove them.
Use the option in tests from basic-parsing-test.
Martin Quinson [Thu, 6 Apr 2023 16:08:07 +0000 (18:08 +0200)]
Make distcheck
Martin Quinson [Thu, 6 Apr 2023 15:48:05 +0000 (17:48 +0200)]
MC: Reap all zombie childs to avoid them to accumulate
Martin Quinson [Thu, 6 Apr 2023 14:58:39 +0000 (16:58 +0200)]
Remove the timings of another ns3 test to help older ns3 versions
Martin Quinson [Thu, 6 Apr 2023 14:28:33 +0000 (16:28 +0200)]
Allow ns3 to be idempotent if correctly patched
Maxwell Pirtle [Thu, 6 Apr 2023 11:52:50 +0000 (13:52 +0200)]
Rename `remove()` method on `Unfolding`
Since the events aren't ever removed from the
Unfolding and are instead simply displaced,
we change the name of the method to better
reflect what is going on