Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
simgrid.git
14 months ago[ci skip] add lstdc++ to bigdft flags as well
Augustin Degomme [Sun, 26 Feb 2023 21:46:50 +0000 (22:46 +0100)]
[ci skip] add lstdc++ to bigdft flags as well

14 months agobigdft - attempt at fixing build error with new C++ file in futile
Augustin Degomme [Sun, 26 Feb 2023 21:04:27 +0000 (21:04 +0000)]
bigdft - attempt at fixing build error with new C++ file in futile

14 months agoAllow to control the problem size from the cmd line, and reduce the instance in MC
Martin Quinson [Sun, 26 Feb 2023 16:17:19 +0000 (17:17 +0100)]
Allow to control the problem size from the cmd line, and reduce the instance in MC

The previous instance size resulted in a timeout now that the DPOR
reduction is less efficient (because it's less buggy)

14 months agoRevalidate a tesh file (result of a merge error)
Martin Quinson [Sun, 26 Feb 2023 16:16:25 +0000 (17:16 +0100)]
Revalidate a tesh file (result of a merge error)

14 months agoUse bool for booleans
Martin Quinson [Sun, 26 Feb 2023 15:07:41 +0000 (16:07 +0100)]
Use bool for booleans

14 months agoKill a now useless field
Martin Quinson [Sun, 26 Feb 2023 13:15:14 +0000 (14:15 +0100)]
Kill a now useless field

14 months agoMerge branch 'master' into 'master'
Martin Quinson [Sun, 26 Feb 2023 15:07:08 +0000 (15:07 +0000)]
Merge branch 'master' into 'master'

Fixes on DPOR algorithm for MC SimGrid and sleep sets addition

See merge request simgrid/simgrid!128

14 months agoAlso detect the disk failures
Martin Quinson [Sun, 26 Feb 2023 11:30:26 +0000 (12:30 +0100)]
Also detect the disk failures

14 months agoFurther simplify the way host failures are detected
Martin Quinson [Sun, 26 Feb 2023 11:11:49 +0000 (12:11 +0100)]
Further simplify the way host failures are detected

Do as it's done in links and communications: when the resource is
turned off, simply mark the actions it hosts as FAILED.

That's much simpler than the convoluted existing code, which relied on
the Host::on_state_change signal. Each activity pushed a callback to
check whether it was its host which failed. Gosh, so convoluted...

The current change is not completely applied to CpuTI model, which
seems to have another way to mark the actions as failing. So I
override CpuTI::turn_off() to not mark the actions as failing to avoid
a segfault. It's a bit lame, but CpuTI is too different, I feel lazy.

14 months agoSimplify the way Execs detect host failures
Martin Quinson [Sat, 25 Feb 2023 17:40:49 +0000 (18:40 +0100)]
Simplify the way Execs detect host failures

Have the ExecImpl install the callback instead of having the s4u::Exec
do so, and then set an internal field of ExecImpl.

14 months agoRevert "Include the output of this test in the tesh file, because it's linked from...
Martin Quinson [Fri, 24 Feb 2023 17:51:13 +0000 (18:51 +0100)]
Revert "Include the output of this test in the tesh file, because it's linked from the doc now"

This reverts commit 0c5a9c80339933853647914ea9f716ef4fc8413c.

The output does not seem to be portable :(

14 months agoBummer :(
Martin Quinson [Fri, 24 Feb 2023 17:39:52 +0000 (18:39 +0100)]
Bummer :(

14 months agoClear timeout detectors on finish().
Arnaud Giersch [Fri, 24 Feb 2023 15:12:19 +0000 (16:12 +0100)]
Clear timeout detectors on finish().

Fixes transient errors seen with s4u-dht-chord-parallel tests.

14 months agoFill cmdline_ for each instance of EngimeImpl.
Arnaud Giersch [Fri, 24 Feb 2023 14:30:34 +0000 (15:30 +0100)]
Fill cmdline_ for each instance of EngimeImpl.

Even if there is only one instance!
Fixes a memory leak occurring when sg_config_init() exits early.

14 months agoUpdate sonar-project.properties [ci-skip]
Arnaud Giersch [Fri, 24 Feb 2023 13:48:59 +0000 (14:48 +0100)]
Update sonar-project.properties [ci-skip]

14 months agoTwo more random hints to contributors (and reindent the existing ones)
Martin Quinson [Fri, 24 Feb 2023 15:39:28 +0000 (16:39 +0100)]
Two more random hints to contributors (and reindent the existing ones)

14 months agoAdd some Noteworthy tests to the Contributor's doc
Martin Quinson [Fri, 24 Feb 2023 15:32:27 +0000 (16:32 +0100)]
Add some Noteworthy tests to the Contributor's doc

14 months agoWhen the chaos monkey is invoked with nothing to do, it tells a usage message and...
Martin Quinson [Fri, 24 Feb 2023 15:07:22 +0000 (16:07 +0100)]
When the chaos monkey is invoked with nothing to do, it tells a usage message and kills everything

14 months agoInclude the output of this test in the tesh file, because it's linked from the doc now
Martin Quinson [Fri, 24 Feb 2023 15:01:41 +0000 (16:01 +0100)]
Include the output of this test in the tesh file, because it's linked from the doc now

14 months agoAllow to specify the parameters on the command line, when the test is not run from...
Martin Quinson [Fri, 24 Feb 2023 15:00:57 +0000 (16:00 +0100)]
Allow to specify the parameters on the command line, when the test is not run from its favorite directory

14 months agoMerge branch 'udpor-phase2' into 'master'
Martin Quinson [Fri, 24 Feb 2023 14:58:44 +0000 (14:58 +0000)]
Merge branch 'udpor-phase2' into 'master'

Phase 2 of UDPOR Integration: Add topological sorting of events in a configuration

See merge request simgrid/simgrid!133

14 months agoMerge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Fri, 24 Feb 2023 14:42:51 +0000 (15:42 +0100)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid

14 months agofix the done marking of multiple times taken transitions
mlaurent [Fri, 24 Feb 2023 13:46:46 +0000 (14:46 +0100)]
fix the done marking of multiple times taken transitions

14 months agoAdd complicated topological sort test
Maxwell Pirtle [Thu, 23 Feb 2023 10:46:10 +0000 (11:46 +0100)]
Add complicated topological sort test

The test added ensures that for each element
in the sequence of events in the topological
sorting:

1. no event in the history of event `i` appears
in the list of events before event `i` (i.e.
events 0, ..., `i - 1`) in the case of the reverse
graph

2. every event in the history of event `i` (except
`e` itself) appears in the list of events before
`i` (i.e. events 0, ..., `i - 1`) in the case of
the event structure ordering

14 months agoAdd first unit tests for topological sorting
Maxwell Pirtle [Thu, 23 Feb 2023 10:17:27 +0000 (11:17 +0100)]
Add first unit tests for topological sorting

A few unit tests were added to support topological
sorting of events in a configuration. In the future,
a more robust test will be added which ensures that each
newly-discovered event in the reverse order has never
been discovered before

14 months agoAdd topological sort of configuration events
Maxwell Pirtle [Wed, 22 Feb 2023 14:36:18 +0000 (15:36 +0100)]
Add topological sort of configuration events

Topological sorting is an important first step
in determining which groups of events in a
configuration need to be tested together when
looking at all possible subsets of maximal events
of a configuration. The idea is that you first
build a compatability graph (soon to come) whose
elements represent "chains" of the event structure
that are mutually exslcusive and whose edges
describe which chains are mutually compatible
with one another. Then, you look for all possible
cliques within the graph to determine all possible
configurations of these chains. Each of the
major components of this process will be added in
subsequent commits

14 months agoDocument more changes, and update the Release Notes
Martin Quinson [Fri, 24 Feb 2023 00:27:35 +0000 (01:27 +0100)]
Document more changes, and update the Release Notes

14 months agoAdd a comment on why we need such a callback
Martin Quinson [Fri, 24 Feb 2023 00:19:09 +0000 (01:19 +0100)]
Add a comment on why we need such a callback

14 months agoMerge ActivityImpl::post() and ::finish()
Martin Quinson [Thu, 23 Feb 2023 22:59:27 +0000 (23:59 +0100)]
Merge ActivityImpl::post() and ::finish()

14 months agoDo not clean twice in Activity::post(), so that even test() can call it
Martin Quinson [Thu, 23 Feb 2023 22:16:03 +0000 (23:16 +0100)]
Do not clean twice in Activity::post(), so that even test() can call it

14 months agouniformization: call post that calls finish
Fred Suter [Thu, 23 Feb 2023 21:14:44 +0000 (16:14 -0500)]
uniformization: call post that calls finish

14 months agoRevert "Get ready for more versions of ns3"
Martin Quinson [Thu, 23 Feb 2023 21:36:16 +0000 (22:36 +0100)]
Revert "Get ready for more versions of ns3"

This reverts commit 1b8e178fc3f8b3339d25692dfb552f79d349f671.

Also, adds a small comment to avoid this trap in the future.

14 months agoSanitize the handling of timeouts in CommImpl, ExecImpl and IoImpl
Martin Quinson [Thu, 23 Feb 2023 21:21:47 +0000 (22:21 +0100)]
Sanitize the handling of timeouts in CommImpl, ExecImpl and IoImpl

There is no need for a timeout detector in ExecImpl and IoImpl, as
wait_for injects a Synchro to that extend on need.

Use a uniq_ptr on the CommImpl timeout detectors, so that the memory
is managed automatically. As it used to be for ExecImpl.

This kills the last occurrence of surf in the code. For real this time.

14 months agoFix distcheck.
Arnaud Giersch [Thu, 23 Feb 2023 20:33:28 +0000 (21:33 +0100)]
Fix distcheck.

14 months agoPrefer ActivityImpl::post() to ::finish() that should die
Martin Quinson [Thu, 23 Feb 2023 20:24:00 +0000 (21:24 +0100)]
Prefer ActivityImpl::post() to ::finish() that should die

14 months agoGet ready for more versions of ns3
Martin Quinson [Wed, 22 Feb 2023 21:58:45 +0000 (22:58 +0100)]
Get ready for more versions of ns3

14 months agoComment out unused private fields (fix compilation error).
Arnaud Giersch [Thu, 23 Feb 2023 20:18:18 +0000 (21:18 +0100)]
Comment out unused private fields (fix compilation error).

14 months agoMerge branch 'simgrid-udpor-integration' into 'master'
Arnaud Giersch [Thu, 23 Feb 2023 17:00:25 +0000 (18:00 +0100)]
Merge branch 'simgrid-udpor-integration' into 'master'

Phase 1 of Integration of UDPOR: Adding UDPOR Constructs

See merge request simgrid/simgrid!132

14 months agoUseless casts to (void*).
Arnaud Giersch [Thu, 23 Feb 2023 16:14:51 +0000 (17:14 +0100)]
Useless casts to (void*).

14 months agoComment is not relevant anymore.
Arnaud Giersch [Thu, 23 Feb 2023 15:48:28 +0000 (16:48 +0100)]
Comment is not relevant anymore.

[ci-skip]

14 months agoUse type aid_t for an actor's PID.
Arnaud Giersch [Thu, 23 Feb 2023 14:58:28 +0000 (15:58 +0100)]
Use type aid_t for an actor's PID.

14 months agoMore Sonar issues.
Arnaud Giersch [Thu, 23 Feb 2023 14:53:26 +0000 (15:53 +0100)]
More Sonar issues.

14 months agoUse normal strings instead of f-strings (Sonar).
Arnaud Giersch [Thu, 23 Feb 2023 14:37:40 +0000 (15:37 +0100)]
Use normal strings instead of f-strings (Sonar).

14 months agoUse C++17's std::scoped_lock where appropriate.
Arnaud Giersch [Thu, 23 Feb 2023 13:00:47 +0000 (14:00 +0100)]
Use C++17's std::scoped_lock where appropriate.

Stick to C++14's std::lock_guard in public headers.

14 months agoDon't access variable ouside of the critical section.
Arnaud Giersch [Thu, 23 Feb 2023 12:53:15 +0000 (13:53 +0100)]
Don't access variable ouside of the critical section.

TSan warned about a data race there.
Also use a std::scoped_lock to handle the mutexi (Sonar).

14 months agoVarious cleanups.
Arnaud Giersch [Tue, 21 Feb 2023 10:59:44 +0000 (11:59 +0100)]
Various cleanups.

Includes:
* prefer simpler overload for channel send/receive
* use direct-initialization for variables
* rename variable and avoid it to be shadowed later
* remove unnecessary casts

14 months agotransitions in the same actor are dependent
mlaurent [Wed, 22 Feb 2023 17:05:37 +0000 (18:05 +0100)]
transitions in the same actor are dependent

14 months agoPartially revert 2ad536e710c5936ff8e525e4bbb5e7046f292aac (Simplify the library initi...
Martin Quinson [Wed, 22 Feb 2023 15:55:44 +0000 (16:55 +0100)]
Partially revert 2ad536e710c5936ff8e525e4bbb5e7046f292aac (Simplify the library initialization) to fix a memleak

14 months agoImplement the semaphore functions in sthread
Martin Quinson [Wed, 22 Feb 2023 15:54:18 +0000 (16:54 +0100)]
Implement the semaphore functions in sthread

14 months agoMerge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Wed, 22 Feb 2023 15:35:29 +0000 (16:35 +0100)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid

14 months agofix a few test with dpor
mlaurent [Wed, 22 Feb 2023 15:34:19 +0000 (16:34 +0100)]
fix a few test with dpor

14 months agoAdd tests for adding events to configurations
Maxwell Pirtle [Wed, 22 Feb 2023 12:40:08 +0000 (13:40 +0100)]
Add tests for adding events to configurations

14 months agoAdd preliminary tests for Configuration
Maxwell Pirtle [Wed, 22 Feb 2023 12:09:50 +0000 (13:09 +0100)]
Add preliminary tests for Configuration

14 months agoprotect the dict initialization against multithreading
Martin Quinson [Wed, 22 Feb 2023 11:37:36 +0000 (12:37 +0100)]
protect the dict initialization against multithreading

14 months agoImplement adding events to configurations
Maxwell Pirtle [Wed, 22 Feb 2023 10:21:06 +0000 (11:21 +0100)]
Implement adding events to configurations

When adding an event to a configuration, we
assert that the configuration actually contains
all of the dependencies of that event within it;
otherwise, we would violate the property that a
configuration contains all of its dependencies.

Note that we do not assert whether or not the
configuration is actually conflict-free: we leave
that to the correctness of UDPOR and other tests which
will assert UDPOR is doing the right thing. But having
this assertion will certainly help catch bugs with the
UDPOR implementation more quickly (termination would
happen at the moment that the algorithm encounters
a spot where it chose an event incorrectly).

14 months agoAdd extensive tests for checking valid configurations
Maxwell Pirtle [Wed, 22 Feb 2023 09:36:33 +0000 (10:36 +0100)]
Add extensive tests for checking valid configurations

An example event structure was given and all
possible subsets of its events were tested for
completeness. Each subset was tested for whether
it was a maximal subset of events (i.e. one for
which no element causes any of the others) and
for whether the set of events qualified for being
a configuration.

An additional observation was made concerning the determination of
whether or not a set of events is maximal. To compute
the maximal events of a given set of events, it suffices
to search the entire history of the events and eliminate
events from the original set as they appear. Note that only
events in the set itself can ever be maximal, as all other
events discovered in the search must have come from one
of these event's dependencies, or one of their dependencies'
dependencies, and so on.

14 months agoCosmetics
Martin Quinson [Tue, 21 Feb 2023 21:08:45 +0000 (22:08 +0100)]
Cosmetics

- Rename xbt_main.cpp -> xbt_misc.cpp to reflect its content
- Stick to our naming schema (Engine::pimpl -> Engine::pimpl_)
- Don't say the loop iterator is const to then const_cast it
- Kill the leftover xbt::binary_name and xbt::cmdline local vars

14 months agologs: protect finalization against multiple calls
Martin Quinson [Tue, 21 Feb 2023 17:21:57 +0000 (18:21 +0100)]
logs: protect finalization against multiple calls

14 months agoLet the xbt_log module register its finalizer itself
Martin Quinson [Tue, 21 Feb 2023 15:00:06 +0000 (16:00 +0100)]
Let the xbt_log module register its finalizer itself

And kill an internal header file that is now empty

14 months agoAdd method to check if an EventSet is a config
Maxwell Pirtle [Tue, 21 Feb 2023 14:53:53 +0000 (15:53 +0100)]
Add method to check if an EventSet is a config

A method was added that determines whether or not
some set of events (i.e. an `EventSet`) are actually
a valid configuration or not. The question of choosing
valid configurations is up to UDPOR, so while enforcing
that each and every event added to a configuration
be checked to ensure that the configuration remains
as such, it is not strictly necessary. However, it
will help us identify bugs with configurations if
and when they arise.

The key idea behind checking whether a set of events
forms a configuration is to again leverage the power
of History. If while searching through the history
of a set of events you stumble upon an event that is
not part of the original group, then you know that
said group cannot be a configuration since at least
one of the member's dependencies are not part of the
group.

14 months agoKill simgrid::xbt::cmdline and simgrid::xbt::binary_name
Martin Quinson [Tue, 21 Feb 2023 14:53:00 +0000 (15:53 +0100)]
Kill simgrid::xbt::cmdline and simgrid::xbt::binary_name

14 months agoSimplify the library initialization + deprecate 2 XBT functions
Martin Quinson [Mon, 20 Feb 2023 14:46:02 +0000 (15:46 +0100)]
Simplify the library initialization + deprecate 2 XBT functions

Work toward making EngineImpl::initialize() the only entry point of
the library initialization. It's now impossible to initialize xbt
separately of EngineImpl.

It should help reducing the mess in that code, which results from the
many ways of initializing the library. simgrid-mc, unit-tests, smpi
and others each have their own way of initializing everything,
resulting in a spagetthi and fragile code. It's a bit of a waste to
initialize an EngineImpl even when you don't want to actually run a
simulation, but easier code is always better.

This commit also includes another one because I git amended locally by
error, sorry for the mess. The other commit was about the deprecation
of xbt_procname and xbt_getpid that were xbt functions relying on S4U.

14 months agoRemove a useless lib constructor (simpler is better)
Martin Quinson [Mon, 20 Feb 2023 09:00:22 +0000 (10:00 +0100)]
Remove a useless lib constructor (simpler is better)

14 months agoInitialize the dict module on need, w/o relying on lib constructors
Martin Quinson [Mon, 20 Feb 2023 08:51:18 +0000 (09:51 +0100)]
Initialize the dict module on need, w/o relying on lib constructors

14 months agoAdd first batch of tests for History class
Maxwell Pirtle [Tue, 21 Feb 2023 13:47:40 +0000 (14:47 +0100)]
Add first batch of tests for History class

14 months agoAdd first implementations of History class
Maxwell Pirtle [Tue, 21 Feb 2023 13:08:54 +0000 (14:08 +0100)]
Add first implementations of History class

14 months agoIntroduce extrinsic equivalence between events
Maxwell Pirtle [Tue, 21 Feb 2023 12:19:39 +0000 (13:19 +0100)]
Introduce extrinsic equivalence between events

Extrinsic equivalence between two UnfoldingEvents
simply means that we consider to events to be
"the same". This equivalence is used when UDPOR
creates a new event to determine if in fact that
event has already been created. This requires determining
the equivalence between the transitions associated with
those events as well as the dependencies of each of
the events.

14 months agoAdd tests for the Unfolding object
Maxwell Pirtle [Tue, 21 Feb 2023 09:35:37 +0000 (10:35 +0100)]
Add tests for the Unfolding object

The Unfolding object currently doesn't have much functionality,
so there is not much that needs to be tested with it. It is
effectively a wrapper around a collection of std::unique_ptr.
Eventually, more functionality may be added when more of the
implementation of UDPOR is added, although its use will still
be quite limited even later

14 months agoAdd set operator tests for EventSet
Maxwell Pirtle [Tue, 21 Feb 2023 09:22:42 +0000 (10:22 +0100)]
Add set operator tests for EventSet

This commit introduces test cases for the
common set operators, viz. set union, set
difference, and testing subsets.

14 months agoAdd tests for EventSet equality
Maxwell Pirtle [Mon, 20 Feb 2023 15:31:58 +0000 (16:31 +0100)]
Add tests for EventSet equality

14 months agoAdd History object skeleton
Maxwell Pirtle [Mon, 20 Feb 2023 13:58:51 +0000 (14:58 +0100)]
Add History object skeleton

The History class represents the entire
history of a collection of events "lazily",
i.e. without needing to compute the entire
history if it is not actually needed

14 months agoRemove StateManager
Maxwell Pirtle [Mon, 20 Feb 2023 12:54:05 +0000 (13:54 +0100)]
Remove StateManager

The StateManager class was created to wrap
some of the functionality used in tiny_simgrid,
but it turns out that this functionality isn't
actually needed. States are managed entirely
by the UdporChecker/UDPOR in what is
effectively a stack, and it doesn't make sense
for events to talk about states when states
are associated with configurations

14 months agoAdd first batch of tests for UDPOR
Maxwell Pirtle [Mon, 20 Feb 2023 12:38:02 +0000 (13:38 +0100)]
Add first batch of tests for UDPOR

This commit adds tests for the UDPOR constructs
that will be used when UDPOR is finally implemented.
UDPOR will rely heavily on the correctness of
the methods herein and hereafter (in subsequent
commits) tested, so it is important that each function
be tested to the maximum extent possible

14 months ago"Finalize" interface to UnfoldingEvent
Maxwell Pirtle [Fri, 17 Feb 2023 12:59:59 +0000 (13:59 +0100)]
"Finalize" interface to UnfoldingEvent

The interface to the UnfoldingEvent was carried over
from the previous implementation of UDPOR in the
"tiny_simgrid" repository. However, the implementation
needed to be adjusted to better suit how SimGrid is
going to implement UDPOR. Instead of holding a string
tag identifying a transition, each UnfoldingEvent now
directly holds a reference to the transition from the
state prior.

This caused some changes to need to be made in the
UdporChecker.cpp. These changes have moved the pseudocode
of UDPOR one large step closer to the actual implementation
that will be brought to life over the next few weeks

14 months agoAllow actor transitions to be shared
Maxwell Pirtle [Fri, 17 Feb 2023 10:47:50 +0000 (11:47 +0100)]
Allow actor transitions to be shared

Transitions that were stored in `ActorState`
prior to this commit were stored as `std::unique_ptr`
instances. But UDPOR events need to hold
references to the transitions that they are
"associated with". While UDPOR will discard events
at the appropriate time, we want to make sure the
reference to the transition in some `ActorState`
(ultimately in some `State` instance) remains
valid event after UDPOR discard the State object.
This could e.g. be helpful while debugging

14 months agoAdd Unfolding data structure
Maxwell Pirtle [Thu, 16 Feb 2023 09:32:42 +0000 (10:32 +0100)]
Add Unfolding data structure

The Unfolding data structure is used to
house all of the events UDPOR needs to maintain
as it searches through the unfolding. The
Unfolding may eventually also be used to store
and maintain state, although this technically
only needs to be delegated to the checker itself
as it performs its exploration

14 months agoAdd implementations for EventSet + Configurations
Maxwell Pirtle [Thu, 16 Feb 2023 09:10:01 +0000 (10:10 +0100)]
Add implementations for EventSet + Configurations

14 months agoAdd xbt_assert() for state handle overflow
Maxwell Pirtle [Thu, 16 Feb 2023 08:10:23 +0000 (09:10 +0100)]
Add xbt_assert() for state handle overflow

With the StateManager, the current implementation
vends out integer handles that are referred to by
each UnfoldingEvent to map it to the appropriate
State.

A better API, however, may be to have a each event
manage its own state. We should verify first that
each UnfoldingEvent object corresponds to a unique
State object, but this may be the best option

14 months agoUse std::unordered_set instead of std::set for EventSet
Maxwell Pirtle [Tue, 14 Feb 2023 14:04:40 +0000 (15:04 +0100)]
Use std::unordered_set instead of std::set for EventSet

The ordering of the events in the set does not
matter in an EventSet. The std::unordered_set construct
is thus a better fit (std::set orders its elements).
While this disallows the use of the nice functions
in the standard library for forming unions etc.,
it is trivial to implement the functions `make_union()`
etc.

14 months agoMove UDPOR constructs out of udpor_global.cpp
Maxwell Pirtle [Tue, 14 Feb 2023 13:53:44 +0000 (14:53 +0100)]
Move UDPOR constructs out of udpor_global.cpp

The udpor_global.hpp/cpp have been removed in
favor of seperate files for the primary
constructs that will be used in UDPOR. The source
files have been adjusted as necessary to allow
for a complete compilation

14 months agoAdd `udpor` directory under `mc/explo`
Maxwell Pirtle [Tue, 14 Feb 2023 13:20:10 +0000 (14:20 +0100)]
Add `udpor` directory under `mc/explo`

The `udpor` directory was created to better
house/separate all of the functionality that will
eventually be required by the UDPOR algorithm.
Currently, the files are not used as part of the
compilation process. Subsequent commits will remove
the `udpor_global.cpp` file and adjust the compilation
as necessary

14 months agoRemove currently unused methods from udpor_globals
Maxwell Pirtle [Tue, 14 Feb 2023 12:57:40 +0000 (13:57 +0100)]
Remove currently unused methods from udpor_globals

The udpor_globals.cpp file contained many currently
unused functions that were remove with this commit.
Subsequent commits will move the globals into more
relevant files under `explo`

14 months agoAdd minor clean ups
Maxwell Pirtle [Tue, 14 Feb 2023 12:21:43 +0000 (13:21 +0100)]
Add minor clean ups

14 months agoAdd implementation for state management
Maxwell Pirtle [Tue, 7 Feb 2023 14:04:09 +0000 (15:04 +0100)]
Add implementation for state management

14 months agoAdd incomplete implementations of udpor_globals.cpp
Maxwell Pirtle [Tue, 7 Feb 2023 12:47:05 +0000 (13:47 +0100)]
Add incomplete implementations of udpor_globals.cpp

The classes EventSet, Configuration, and StateManager
have implementations added in order to allow SimGrid
to link properly. Future commits will provide actual
implementations for many of the TODOs that remain

14 months agoAdd `udpor` namespace
Maxwell Pirtle [Mon, 6 Feb 2023 15:13:31 +0000 (16:13 +0100)]
Add `udpor` namespace

14 months agoBegin porting implementation from tiny_simgrid
Maxwell Pirtle [Mon, 6 Feb 2023 14:30:44 +0000 (15:30 +0100)]
Begin porting implementation from tiny_simgrid

More of the structure of the current implementation
of the UDPOR algorithm was imported into SimGrid
with minor alterations to better fit the EventSet
class paradigm, along with some other cleaning up.

The next phase will be two-fold:

1. Importantly, state management will need to be
added into SimGrid. This shouldn't be too difficult,
assuming that we can follow a similar strategy as
The Pham had in tiny_simgrid of mapping State
objects to state id's and using those ids to later
manipulate the state. In SimGrid, the state will be
be used to manipulate the remote process to which
the Exploration has access, instead of manipulating
what's effectively a dummy object

2. Implementing most of the TODO functions
in EventSet etc. This functionality will come
in future commits.

Eventually, we'll want to make an iterative version
of UDPOR to prevent stack overflows, as it is likely
that the unfoldings of programs of any significant size
can get quite deep. For now, though, this is not
strictly necessary to get a first draft implemented

14 months agoAdd methods between EventSet and Configuration
Maxwell Pirtle [Mon, 6 Feb 2023 10:54:40 +0000 (11:54 +0100)]
Add methods between EventSet and Configuration

The distinction between a Configuration and an
EventSet is a subtle one. Indeed, a configuration
in UDPOR is merely a set. There may be the opportunity
perhaps even to replace the Configuration class
with a typedef, although this may not be possible or
improve readability.

14 months agoConvert EventSet into class from typedef
Maxwell Pirtle [Mon, 6 Feb 2023 08:37:54 +0000 (09:37 +0100)]
Convert EventSet into class from typedef

The EventSet object was simply typedef-ed to
a std::deque<UnfoldingEvent *>. While this
worked, it caused a lot of the code in tiny-simgrid
to be a bit more difficult to read since it
required the use of a more C-like idiom of passing
`this` as an explicit argument in EvtSetTools.

Effectively, the idea to absorb all of the EvtSetTools
methods into the EventSet class directly. This will
give a more natural C++ (instead of C) look to the
resulting code in the UDPOR algorithm

14 months agoMerge branch 'master' of https://framagit.org/simgrid/simgrid
mlaurent [Mon, 20 Feb 2023 09:41:27 +0000 (10:41 +0100)]
Merge branch 'master' of https://framagit.org/simgrid/simgrid

14 months agoRevert "Upgrade embedded xxhash (-> v0.8.1)."
Arnaud Giersch [Mon, 20 Feb 2023 09:37:04 +0000 (10:37 +0100)]
Revert "Upgrade embedded xxhash (-> v0.8.1)."

It doesn't compile on arm64

This reverts commit 4127fe802ff334591a6ba5b315190523fc2a660e.

14 months agoMerge branch 'fix-probe' into 'master'
Arnaud Giersch [Mon, 20 Feb 2023 09:25:44 +0000 (09:25 +0000)]
Merge branch 'fix-probe' into 'master'

Send actor action probes one at a time

See merge request simgrid/simgrid!131

14 months agoSend actor action probes one at a time
Maxwell Pirtle [Mon, 20 Feb 2023 08:41:16 +0000 (09:41 +0100)]
Send actor action probes one at a time

To avoid the scenario whereby the AppSide
delivers a message larger than the maximum
datagram side allowed by the application,
we instead send a single message for each actor.
This prevents us from needing to complicate the
sending logic in Channel.cpp, which would have
been made more complicated should we have wanted
to send variable-sized messages between the
checker and the application side

14 months agoRemove more occurences of 'surf' with uppercases
Martin Quinson [Sun, 19 Feb 2023 21:34:31 +0000 (22:34 +0100)]
Remove more occurences of 'surf' with uppercases

14 months agoDocument that surf is gone
Martin Quinson [Sun, 19 Feb 2023 15:09:01 +0000 (16:09 +0100)]
Document that surf is gone

14 months agoUpgrade embedded xxhash (-> v0.8.1).
Arnaud Giersch [Sun, 19 Feb 2023 14:48:56 +0000 (15:48 +0100)]
Upgrade embedded xxhash (-> v0.8.1).

Taken from
https://github.com/RedSpah/xxhash_cpp/commit/d21e37c34c4ad4ad562e4ec01ec036e342c422e3

14 months agoUpgrade embedded catch2 (-> v2.13.10).
Arnaud Giersch [Sun, 19 Feb 2023 14:37:48 +0000 (15:37 +0100)]
Upgrade embedded catch2 (-> v2.13.10).

Taken from
https://github.com/catchorg/Catch2/releases/tag/v2.13.10

14 months agoFinally kill surf_interface.hpp watched_host was actually useless
Martin Quinson [Sun, 19 Feb 2023 14:45:51 +0000 (15:45 +0100)]
Finally kill surf_interface.hpp watched_host was actually useless

14 months agorename another file with had 'surf' in its name
Martin Quinson [Sun, 19 Feb 2023 11:53:23 +0000 (12:53 +0100)]
rename another file with had 'surf' in its name

14 months agoKill a file with 'surf' in its name, and further empty surf_interface.cpp
Martin Quinson [Sun, 19 Feb 2023 11:49:24 +0000 (12:49 +0100)]
Kill a file with 'surf' in its name, and further empty surf_interface.cpp