XBT_CINFO(xbt_cfg, "Switching to the L07 model to handle parallel tasks.");
auto host_model = std::make_shared<simgrid::surf::HostL07Model>("Host_Ptask");
- simgrid::kernel::EngineImpl::get_instance()->add_model(host_model);
- simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_host_model(host_model);
+ auto* engine = simgrid::kernel::EngineImpl::get_instance();
+ engine->add_model(host_model);
+ engine->get_netzone_root()->set_host_model(host_model);
}
namespace simgrid {
auto net_model = std::make_shared<NetworkL07Model>("Network_Ptask", this, maxmin_system);
auto engine = simgrid::kernel::EngineImpl::get_instance();
engine->add_model(net_model);
- simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
+ engine->get_netzone_root()->set_network_model(net_model);
auto cpu_model = std::make_shared<CpuL07Model>("Cpu_Ptask", this, maxmin_system);
engine->add_model(cpu_model);
- simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_pm_model(cpu_model);
+ engine->get_netzone_root()->set_cpu_pm_model(cpu_model);
}
CpuL07Model::CpuL07Model(const std::string& name, HostL07Model* hmodel, kernel::lmm::System* sys)
: NetworkModel(name), hostModel_(hmodel)
{
set_maxmin_system(sys);
- loopback_ =
- create_link("__loopback__", std::vector<double>{simgrid::config::get_value<double>("network/loopback-bw")});
- loopback_->set_sharing_policy(s4u::Link::SharingPolicy::FATPIPE);
+ loopback_ = create_link("__loopback__", {simgrid::config::get_value<double>("network/loopback-bw")});
+ loopback_->set_sharing_policy(s4u::Link::SharingPolicy::FATPIPE, {});
loopback_->set_latency(simgrid::config::get_value<double>("network/loopback-lat"));
loopback_->seal();
}
* Resource *
************/
-kernel::resource::CpuAction* CpuL07::execution_start(double size)
+kernel::resource::CpuAction* CpuL07::execution_start(double size, double user_bound)
{
std::vector<s4u::Host*> host_list = {get_iface()};
+ xbt_assert(user_bound <= 0, "User bound not supported by ptask model");
auto* flops_amount = new double[host_list.size()]();
flops_amount[0] = size;
kernel::resource::CpuAction* CpuL07::sleep(double duration)
{
- auto* action = static_cast<L07Action*>(execution_start(1.0));
+ auto* action = static_cast<L07Action*>(execution_start(1.0, -1));
action->set_max_duration(duration);
action->set_suspend_state(kernel::resource::Action::SuspendStates::SLEEPING);
get_model()->get_maxmin_system()->update_variable_penalty(action->get_variable(), 0.0);