include examples/cpp/network-ns3/s4u-network-ns3.cpp
include examples/cpp/network-wifi/s4u-network-wifi.cpp
include examples/cpp/network-wifi/s4u-network-wifi.tesh
- include examples/cpp/task-io/s4u-task-io.cpp
- include examples/cpp/task-io/s4u-task-io.tesh
- include examples/cpp/task-simple/s4u-task-simple.cpp
- include examples/cpp/task-simple/s4u-task-simple.tesh
- include examples/cpp/task-switch-host/s4u-task-switch-host.cpp
- include examples/cpp/task-switch-host/s4u-task-switch-host.tesh
- include examples/cpp/task-variable-load/s4u-task-variable-load.cpp
- include examples/cpp/task-variable-load/s4u-task-variable-load.tesh
include examples/cpp/photovoltaic-simple/s4u-photovoltaic-simple.cpp
include examples/cpp/photovoltaic-simple/s4u-photovoltaic-simple.tesh
include examples/cpp/platform-comm-serialize/s4u-platform-comm-serialize.cpp
include examples/cpp/synchro-semaphore/s4u-mc-synchro-semaphore.tesh
include examples/cpp/synchro-semaphore/s4u-synchro-semaphore.cpp
include examples/cpp/synchro-semaphore/s4u-synchro-semaphore.tesh
+ include examples/cpp/task-io/s4u-task-io.cpp
+ include examples/cpp/task-io/s4u-task-io.tesh
+ include examples/cpp/task-simple/s4u-task-simple.cpp
+ include examples/cpp/task-simple/s4u-task-simple.tesh
+ include examples/cpp/task-switch-host/s4u-task-switch-host.cpp
+ include examples/cpp/task-switch-host/s4u-task-switch-host.tesh
+ include examples/cpp/task-variable-load/s4u-task-variable-load.cpp
+ include examples/cpp/task-variable-load/s4u-task-variable-load.tesh
include examples/cpp/trace-categories/s4u-trace-categories.cpp
include examples/cpp/trace-categories/s4u-trace-categories.tesh
include examples/cpp/trace-host-user-variables/s4u-trace-host-user-variables.cpp
include examples/python/io-degradation/io-degradation.tesh
include examples/python/network-nonlinear/network-nonlinear.py
include examples/python/network-nonlinear/network-nonlinear.tesh
- include examples/python/task-io/task-io.py
- include examples/python/task-io/task-io.tesh
- include examples/python/task-simple/task-simple.py
- include examples/python/task-simple/task-simple.tesh
- include examples/python/task-switch-host/task-switch-host.py
- include examples/python/task-switch-host/task-switch-host.tesh
- include examples/python/task-variable-load/task-variable-load.py
- include examples/python/task-variable-load/task-variable-load.tesh
include examples/python/platform-comm-serialize/platform-comm-serialize.py
include examples/python/platform-comm-serialize/platform-comm-serialize.tesh
include examples/python/platform-failures/platform-failures.py
include examples/python/synchro-mutex/synchro-mutex.tesh
include examples/python/synchro-semaphore/synchro-semaphore.py
include examples/python/synchro-semaphore/synchro-semaphore.tesh
+ include examples/python/task-io/task-io.py
+ include examples/python/task-io/task-io.tesh
+ include examples/python/task-simple/task-simple.py
+ include examples/python/task-simple/task-simple.tesh
+ include examples/python/task-switch-host/task-switch-host.py
+ include examples/python/task-switch-host/task-switch-host.tesh
+ include examples/python/task-variable-load/task-variable-load.py
+ include examples/python/task-variable-load/task-variable-load.tesh
include examples/smpi/NAS/DGraph.c
include examples/smpi/NAS/DGraph.h
include examples/smpi/NAS/README.install
include include/simgrid/plugins/live_migration.h
include include/simgrid/plugins/load.h
include include/simgrid/plugins/ns3.hpp
- include include/simgrid/plugins/task.hpp
include include/simgrid/plugins/photovoltaic.hpp
+ include include/simgrid/plugins/task.hpp
include include/simgrid/s4u.hpp
include include/simgrid/s4u/Activity.hpp
include include/simgrid/s4u/Actor.hpp
include src/mc/api/State.cpp
include src/mc/api/State.hpp
include src/mc/api/strategy/BasicStrategy.hpp
+include src/mc/api/strategy/MaxMatchComm.hpp
+include src/mc/api/strategy/MinMatchComm.hpp
include src/mc/api/strategy/Strategy.hpp
-include src/mc/api/strategy/WaitStrategy.hpp
+include src/mc/api/strategy/UniformStrategy.hpp
include src/mc/compare.cpp
include src/mc/datatypes.h
include src/mc/explo/CommunicationDeterminismChecker.cpp
include src/plugins/link_energy.cpp
include src/plugins/link_energy_wifi.cpp
include src/plugins/link_load.cpp
- include src/plugins/task.cpp
include src/plugins/photovoltaic.cpp
+ include src/plugins/task.cpp
include src/plugins/vm/VmLiveMigration.cpp
include src/plugins/vm/VmLiveMigration.hpp
include src/plugins/vm/dirty_page_tracking.cpp
#include "src/mc/api/State.hpp"
#include "src/mc/api/strategy/BasicStrategy.hpp"
-#include "src/mc/api/strategy/WaitStrategy.hpp"
+#include "src/mc/api/strategy/MaxMatchComm.hpp"
+#include "src/mc/api/strategy/MinMatchComm.hpp"
+#include "src/mc/api/strategy/UniformStrategy.hpp"
#include "src/mc/explo/Exploration.hpp"
#include "src/mc/mc_config.hpp"
State::State(RemoteApp& remote_app) : num_(++expended_states_)
{
XBT_VERB("Creating a guide for the state");
+
+ srand(_sg_mc_random_seed);
+
if (_sg_mc_strategy == "none")
strategy_ = std::make_shared<BasicStrategy>();
- else if (_sg_mc_strategy == "nb_wait")
- strategy_ = std::make_shared<WaitStrategy>();
+ else if (_sg_mc_strategy == "max_match_comm")
+ strategy_ = std::make_shared<MaxMatchComm>();
+ else if (_sg_mc_strategy == "min_match_comm")
+ strategy_ = std::make_shared<MinMatchComm>();
+ else if (_sg_mc_strategy == "uniform")
+ strategy_ = std::make_shared<UniformStrategy>();
else
THROW_IMPOSSIBLE;
State::State(RemoteApp& remote_app, std::shared_ptr<State> parent_state)
: incoming_transition_(parent_state->get_transition_out()), num_(++expended_states_), parent_state_(parent_state)
{
- if (_sg_mc_strategy == "none")
+
+ if (_sg_mc_strategy == "none")
strategy_ = std::make_shared<BasicStrategy>();
- else if (_sg_mc_strategy == "nb_wait")
- strategy_ = std::make_shared<WaitStrategy>();
+ else if (_sg_mc_strategy == "max_match_comm")
+ strategy_ = std::make_shared<MaxMatchComm>();
+ else if (_sg_mc_strategy == "min_match_comm")
+ strategy_ = std::make_shared<MinMatchComm>();
+ else if (_sg_mc_strategy == "uniform")
+ strategy_ = std::make_shared<UniformStrategy>();
else
THROW_IMPOSSIBLE;
- *strategy_ = *(parent_state->strategy_);
+ strategy_->copy_from(parent_state_->strategy_.get());
remote_app.get_actors_status(strategy_->actors_to_run_);
/* For each actor in the previous sleep set, keep it if it is not dependent with current transition.
* And if we kept it and the actor is enabled in this state, mark the actor as already done, so that
* it is not explored*/
- for (auto& [aid, transition] : parent_state_->get_sleep_set()) {
+ for (const auto& [aid, transition] : parent_state_->get_sleep_set()) {
if (not incoming_transition_->depends(transition.get())) {
sleep_set_.try_emplace(aid, transition);
if (strategy_->actors_to_run_.count(aid) != 0) {
on_log_state_signal(get_remote_app());
XBT_INFO("DFS exploration ended. %ld unique states visited; %lu backtracks (%lu transition replays, %lu states "
"visited overall)",
- State::get_expanded_states(), backtrack_count_, visited_states_count_,
- Transition::get_replayed_transitions());
+ State::get_expanded_states(), backtrack_count_, Transition::get_replayed_transitions(),
+ visited_states_count_);
Exploration::log_state();
}
if (_sg_mc_sleep_set && XBT_LOG_ISENABLED(mc_dfs, xbt_log_priority_verbose)) {
XBT_VERB("Sleep set actually containing:");
- for (auto& [aid, transition] : state->get_sleep_set())
+ for (const auto& [aid, transition] : state->get_sleep_set())
XBT_VERB(" <%ld,%s>", aid, transition->to_string().c_str());
}
continue;
if (valid != current)
*valid = std::move(*current);
- if (best == end(opened_states_) || prio > best_prio) {
+ if (best == end(opened_states_) || prio < best_prio) {
best_prio = prio;
best = valid;
}
const auto& state = *iter;
state->do_odpor_unwind();
XBT_DEBUG("\tPerformed ODPOR 'clean-up'. Sleep set has:");
- for (auto& [aid, transition] : state->get_sleep_set())
+ for (const auto& [aid, transition] : state->get_sleep_set())
XBT_DEBUG("\t <%ld,%s>", aid, transition->to_string().c_str());
if (!state->has_empty_tree()) {
return state;
} else {
XBT_DEBUG("ODPOR: Ignoring race: `sleep(E')` intersects `WI_[E'](v := notdep(%u, E))`", e);
XBT_DEBUG("Sleep set contains:");
- for (auto& [aid, transition] : prev_state.get_sleep_set())
+ for (const auto& [aid, transition] : prev_state.get_sleep_set())
XBT_DEBUG(" <%ld,%s>", aid, transition->to_string().c_str());
}
}