gets recomputed anyway. In that case, you'd better not try to be cleaver with lazy and go for
a simple full update. */
};
- Model() = default;
+ explicit Model(std::string name);
Model(const Model&) = delete;
Model& operator=(const Model&) = delete;
/** @brief Gets the model name */
std::string get_name() const { return name_; }
- /** @brief Sets the model name */
- Model* set_name(const std::string& name);
private:
UpdateAlgo update_algorithm_ = UpdateAlgo::FULL;
Action::StateSet failed_action_set_; /**< Done with failure */
Action::StateSet finished_action_set_; /**< Done successful */
Action::StateSet ignored_action_set_; /**< not considered (failure detectors?) */
- std::string name_ = "Unnamed"; /**< Model name */
+ const std::string name_; /**< Model name */
ActionHeap action_heap_;
};
* Model *
*********/
-DiskModel::DiskModel()
+DiskModel::DiskModel(std::string name) : Model(name)
{
set_maxmin_system(new lmm::System(true /* selective update */));
}
*********/
class DiskModel : public Model {
public:
- DiskModel();
+ explicit DiskModel(std::string name);
DiskModel(const DiskModel&) = delete;
DiskModel& operator=(const DiskModel&) = delete;
namespace kernel {
namespace resource {
+Model::Model(std::string name) : maxmin_system_(nullptr), name_(name) {}
+
Model::~Model() =
default; // Don't move this declaration to the header, or it will break external projects such as SimGrid-FMI
THROW_UNIMPLEMENTED;
}
-Model* Model::set_name(const std::string& name)
-{
- name_ = name;
- return this;
-}
-
} // namespace resource
} // namespace kernel
} // namespace simgrid
void surf_vm_model_init_HL13(simgrid::kernel::resource::CpuModel* cpu_pm_model)
{
- auto vm_model = std::make_shared<simgrid::vm::VMModel>();
- vm_model->set_name("VM_HL13");
+ auto vm_model = std::make_shared<simgrid::vm::VMModel>("VM_HL13");
simgrid::kernel::EngineImpl::get_instance()->add_model(vm_model, {cpu_pm_model});
std::shared_ptr<simgrid::kernel::resource::CpuModel> cpu_model_vm;
auto cpu_optim = simgrid::config::get_value<std::string>("cpu/optim");
if (cpu_optim == "TI") {
- cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuTiModel>();
- cpu_model_vm->set_name("VmCpu_TI");
+ cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuTiModel>("VmCpu_TI");
} else {
- cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>();
- cpu_model_vm->set_name("VmCpu_Cas01");
+ cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>("VmCpu_Cas01");
}
simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_vm, {cpu_pm_model, vm_model.get()});
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_vm_model(cpu_model_vm);
}
}
-VMModel::VMModel()
+VMModel::VMModel(std::string name) : HostModel(name)
{
s4u::Host::on_state_change.connect(host_state_change);
s4u::Exec::on_start.connect(add_active_exec);
*/
class XBT_PRIVATE VMModel : public surf::HostModel {
public:
- VMModel();
+ explicit VMModel(std::string name);
double next_occurring_event(double now) override;
void update_actions_state(double /*now*/, double /*delta*/) override{};
*/
class XBT_PRIVATE HostModel : public kernel::resource::Model {
public:
+ explicit HostModel(std::string name) : Model(name) {}
virtual kernel::resource::Action* execute_parallel(const std::vector<s4u::Host*>& host_list,
const double* flops_amount, const double* bytes_amount,
double rate) = 0;
return;
}
- auto cpu_model_pm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>();
- cpu_model_pm->set_name("Cpu_Cas01");
+ auto cpu_model_pm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>("Cpu_Cas01");
simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_pm);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_pm_model(cpu_model_pm);
}
namespace kernel {
namespace resource {
-CpuCas01Model::CpuCas01Model()
+CpuCas01Model::CpuCas01Model(std::string name) : CpuModel(name)
{
if (config::get_value<std::string>("cpu/optim") == "Lazy")
set_update_algorithm(Model::UpdateAlgo::LAZY);
class CpuCas01Model : public CpuModel {
public:
- CpuCas01Model();
+ explicit CpuCas01Model(std::string name);
CpuCas01Model(const CpuCas01Model&) = delete;
CpuCas01Model& operator=(const CpuCas01Model&) = delete;
void CpuTiModel::create_pm_models()
{
- auto cpu_model_pm = std::make_shared<CpuTiModel>();
- cpu_model_pm->set_name("Cpu_TI");
+ auto cpu_model_pm = std::make_shared<CpuTiModel>("Cpu_TI");
simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_pm);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_pm_model(cpu_model_pm);
}
public:
static void create_pm_models(); // Make CPU PM model
- CpuTiModel() = default;
+ using CpuModel::CpuModel;
CpuTiModel(const CpuTiModel&) = delete;
CpuTiModel& operator=(const CpuTiModel&) = delete;
Cpu* create_cpu(s4u::Host* host, const std::vector<double>& speed_per_pstate) override;
void surf_disk_model_init_default()
{
- auto disk_model = std::make_shared<simgrid::kernel::resource::DiskS19Model>();
- disk_model->set_name("Disk");
+ auto disk_model = std::make_shared<simgrid::kernel::resource::DiskS19Model>("Disk");
simgrid::kernel::EngineImpl::get_instance()->add_model(disk_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_disk_model(disk_model);
}
class DiskS19Model : public DiskModel {
public:
- DiskS19Model() = default;
+ using DiskModel::DiskModel;
DiskImpl* create_disk(const std::string& name, double read_bandwidth, double write_bandwidth) override;
double next_occurring_event(double now) override;
void update_actions_state(double now, double delta) override;
void surf_host_model_init_current_default()
{
- auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>();
+ auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>("Host_CLM03");
simgrid::config::set_default<bool>("network/crosstraffic", true);
- host_model->set_name("Host_CLM03");
simgrid::kernel::EngineImpl::get_instance()->add_model(host_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_host_model(host_model);
surf_cpu_model_init_Cas01();
void surf_host_model_init_compound()
{
- auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>();
- host_model->set_name("Host_CLM03");
+ auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>("Host_CLM03");
simgrid::kernel::EngineImpl::get_instance()->add_model(host_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_host_model(host_model);
}
class XBT_PRIVATE HostCLM03Model : public HostModel {
public:
- HostCLM03Model() = default;
+ using HostModel::HostModel;
double next_occurring_event(double now) override;
void update_actions_state(double now, double delta) override;
kernel::resource::Action* execute_parallel(const std::vector<s4u::Host*>& host_list, const double* flops_amount,
/* } */
void surf_network_model_init_LegrandVelho()
{
- auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>();
- net_model->set_name("Network_LegrandVelho");
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>("Network_LegrandVelho");
simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
simgrid::config::set_default<double>("network/bandwidth-factor", 1.0);
simgrid::config::set_default<double>("network/weight-S", 0.0);
- auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>();
- net_model->set_name("Network_CM02");
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>("Network_CM02");
simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
}
namespace kernel {
namespace resource {
-NetworkCm02Model::NetworkCm02Model()
+NetworkCm02Model::NetworkCm02Model(std::string name) : NetworkModel(name)
{
if (config::get_value<std::string>("network/optim") == "Lazy")
set_update_algorithm(Model::UpdateAlgo::LAZY);
class NetworkCm02Model : public NetworkModel {
public:
- NetworkCm02Model();
+ explicit NetworkCm02Model(std::string name);
LinkImpl* create_link(const std::string& name, const std::vector<double>& bandwidths,
s4u::Link::SharingPolicy policy) override;
void update_actions_state_lazy(double now, double delta) override;
*********/
void surf_network_model_init_Constant()
{
- auto net_model = std::make_shared<simgrid::kernel::resource::NetworkConstantModel>();
- net_model->set_name("Network_Constant");
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkConstantModel>("Network_Constant");
simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
}
class NetworkConstantModel : public NetworkModel {
public:
+ NetworkConstantModel(std::string name) : NetworkModel(name) {}
Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
double next_occurring_event(double now) override;
void update_actions_state(double now, double delta) override;
/* } */
void surf_network_model_init_IB()
{
- auto net_model = std::make_shared<simgrid::kernel::resource::NetworkIBModel>();
- net_model->set_name("Network_IB");
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkIBModel>("Network_IB");
simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
namespace kernel {
namespace resource {
-NetworkIBModel::NetworkIBModel() : NetworkSmpiModel()
+NetworkIBModel::NetworkIBModel(std::string name) : NetworkSmpiModel(name)
{
std::string IB_factors_string = config::get_value<std::string>("smpi/IB-penalty-factors");
std::vector<std::string> radical_elements;
void computeIBfactors(IBNode* root) const;
public:
- NetworkIBModel();
- explicit NetworkIBModel(const char* name);
+ explicit NetworkIBModel(std::string name);
NetworkIBModel(const NetworkIBModel&) = delete;
NetworkIBModel& operator=(const NetworkIBModel&) = delete;
void updateIBfactors(NetworkAction* action, IBNode* from, IBNode* to, int remove) const;
static config::Flag<double> cfg_tcp_gamma;
static config::Flag<bool> cfg_crosstraffic;
- NetworkModel() = default;
+ using Model::Model;
NetworkModel(const NetworkModel&) = delete;
NetworkModel& operator=(const NetworkModel&) = delete;
~NetworkModel() override;
*********/
void surf_network_model_init_NS3()
{
- auto net_model = std::make_shared<simgrid::kernel::resource::NetworkNS3Model>();
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkNS3Model>("NS3 network model");
simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
}
namespace kernel {
namespace resource {
-NetworkNS3Model::NetworkNS3Model()
+NetworkNS3Model::NetworkNS3Model(std::string name) : NetworkModel(name)
{
xbt_assert(not sg_link_energy_is_inited(),
"LinkEnergy plugin and ns-3 network models are not compatible. Are you looking for Ecofen, maybe?");
class NetworkNS3Model : public NetworkModel {
public:
- NetworkNS3Model();
+ explicit NetworkNS3Model(std::string name);
LinkImpl* create_link(const std::string& name, const std::vector<double>& bandwidth,
s4u::Link::SharingPolicy policy) override;
Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
/* } */
void surf_network_model_init_SMPI()
{
- auto net_model = std::make_shared<simgrid::kernel::resource::NetworkSmpiModel>();
- net_model->set_name("Network_SMPI");
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkSmpiModel>("Network_SMPI");
simgrid::kernel::EngineImpl::get_instance()->add_model(net_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
namespace kernel {
namespace resource {
-NetworkSmpiModel::NetworkSmpiModel() : NetworkCm02Model() {}
+NetworkSmpiModel::NetworkSmpiModel(std::string name) : NetworkCm02Model(name) {}
double NetworkSmpiModel::get_bandwidth_factor(double size)
{
class XBT_PRIVATE NetworkSmpiModel : public NetworkCm02Model {
public:
- NetworkSmpiModel();
+ explicit NetworkSmpiModel(std::string name);
double get_latency_factor(double size) override;
double get_bandwidth_factor(double size) override;
{
XBT_CINFO(xbt_cfg, "Switching to the L07 model to handle parallel tasks.");
- auto host_model = std::make_shared<simgrid::surf::HostL07Model>();
- host_model->set_name("Host_Ptask");
+ 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);
}
namespace simgrid {
namespace surf {
-HostL07Model::HostL07Model() : HostModel()
+HostL07Model::HostL07Model(std::string name) : HostModel(name)
{
auto* maxmin_system = new simgrid::kernel::lmm::FairBottleneck(true /* selective update */);
set_maxmin_system(maxmin_system);
- auto net_model = std::make_shared<NetworkL07Model>(this, maxmin_system);
+ auto net_model = std::make_shared<NetworkL07Model>("Network_Ptask", this, maxmin_system);
auto engine = simgrid::kernel::EngineImpl::get_instance();
- net_model->set_name("Network_Ptask");
engine->add_model(net_model);
simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_network_model(net_model);
- auto cpu_model = std::make_shared<CpuL07Model>(this, maxmin_system);
- cpu_model->set_name("Cpu_Ptask");
+ 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);
}
-CpuL07Model::CpuL07Model(HostL07Model* hmodel, kernel::lmm::System* sys) : hostModel_(hmodel)
+CpuL07Model::CpuL07Model(std::string name, HostL07Model* hmodel, kernel::lmm::System* sys)
+ : CpuModel(name), hostModel_(hmodel)
{
set_maxmin_system(sys);
}
set_maxmin_system(nullptr);
}
-NetworkL07Model::NetworkL07Model(HostL07Model* hmodel, kernel::lmm::System* sys) : hostModel_(hmodel)
+NetworkL07Model::NetworkL07Model(std::string name, HostL07Model* hmodel, kernel::lmm::System* sys)
+ : NetworkModel(name), hostModel_(hmodel)
{
set_maxmin_system(sys);
loopback_ = NetworkL07Model::create_link(
*********/
class HostL07Model : public HostModel {
public:
- HostL07Model();
+ explicit HostL07Model(std::string name);
HostL07Model(const HostL07Model&) = delete;
HostL07Model& operator=(const HostL07Model&) = delete;
class CpuL07Model : public kernel::resource::CpuModel {
public:
- CpuL07Model(HostL07Model* hmodel, kernel::lmm::System* sys);
+ CpuL07Model(std::string name, HostL07Model* hmodel, kernel::lmm::System* sys);
CpuL07Model(const CpuL07Model&) = delete;
CpuL07Model& operator=(const CpuL07Model&) = delete;
~CpuL07Model() override;
class NetworkL07Model : public kernel::resource::NetworkModel {
public:
- NetworkL07Model(HostL07Model* hmodel, kernel::lmm::System* sys);
+ NetworkL07Model(std::string name, HostL07Model* hmodel, kernel::lmm::System* sys);
NetworkL07Model(const NetworkL07Model&) = delete;
NetworkL07Model& operator=(const NetworkL07Model&) = delete;
~NetworkL07Model() override;