From: Martin Quinson Date: Sun, 8 Jul 2018 23:53:04 +0000 (+0200) Subject: have each model register into all_existing_models by itself X-Git-Tag: v3_21~508 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/fe06d3ceaa02056b708bb777ed9973df6744f776 have each model register into all_existing_models by itself --- diff --git a/src/plugins/vm/VirtualMachineImpl.cpp b/src/plugins/vm/VirtualMachineImpl.cpp index 088f09a97d..3f32d02a9c 100644 --- a/src/plugins/vm/VirtualMachineImpl.cpp +++ b/src/plugins/vm/VirtualMachineImpl.cpp @@ -15,10 +15,8 @@ simgrid::vm::VMModel* surf_vm_model = nullptr; void surf_vm_model_init_HL13() { - if (surf_cpu_model_vm) { + if (surf_cpu_model_vm != nullptr) surf_vm_model = new simgrid::vm::VMModel(); - all_existing_models.push_back(surf_vm_model); - } } namespace simgrid { @@ -56,6 +54,7 @@ static void hostStateChange(s4u::Host& host) VMModel::VMModel() { + all_existing_models.push_back(this); s4u::Host::on_state_change.connect(hostStateChange); } diff --git a/src/surf/cpu_cas01.cpp b/src/surf/cpu_cas01.cpp index 8fafa0b4c3..a39c9b3a83 100644 --- a/src/surf/cpu_cas01.cpp +++ b/src/surf/cpu_cas01.cpp @@ -50,10 +50,7 @@ void surf_cpu_model_init_Cas01() algo = simgrid::kernel::resource::Model::UpdateAlgo::FULL; surf_cpu_model_pm = new simgrid::surf::CpuCas01Model(algo); - all_existing_models.push_back(surf_cpu_model_pm); - surf_cpu_model_vm = new simgrid::surf::CpuCas01Model(algo); - all_existing_models.push_back(surf_cpu_model_vm); } namespace simgrid { @@ -61,6 +58,8 @@ namespace surf { CpuCas01Model::CpuCas01Model(kernel::resource::Model::UpdateAlgo algo) : simgrid::surf::CpuModel(algo) { + all_existing_models.push_back(this); + bool select = simgrid::config::get_value("cpu/maxmin-selective-update"); if (algo == Model::UpdateAlgo::LAZY) { diff --git a/src/surf/network_cm02.cpp b/src/surf/network_cm02.cpp index 2b60d0a793..a85a3d5ed5 100644 --- a/src/surf/network_cm02.cpp +++ b/src/surf/network_cm02.cpp @@ -37,7 +37,6 @@ void surf_network_model_init_LegrandVelho() xbt_assert(surf_network_model == nullptr, "Cannot set the network model twice"); surf_network_model = new simgrid::kernel::resource::NetworkCm02Model(); - all_existing_models.push_back(surf_network_model); simgrid::config::set_default("network/latency-factor", 13.01); simgrid::config::set_default("network/bandwidth-factor", 0.97); @@ -64,7 +63,6 @@ void surf_network_model_init_CM02() simgrid::config::set_default("network/weight-S", 0.0); surf_network_model = new simgrid::kernel::resource::NetworkCm02Model(); - all_existing_models.push_back(surf_network_model); } /***************************************************************************/ @@ -89,7 +87,6 @@ void surf_network_model_init_Reno() simgrid::config::set_default("network/weight-S", 20537); surf_network_model = new simgrid::kernel::resource::NetworkCm02Model(&simgrid::kernel::lmm::make_new_lagrange_system); - all_existing_models.push_back(surf_network_model); } @@ -105,7 +102,6 @@ void surf_network_model_init_Reno2() simgrid::config::set_default("network/weight-S", 20537); surf_network_model = new simgrid::kernel::resource::NetworkCm02Model(&simgrid::kernel::lmm::make_new_lagrange_system); - all_existing_models.push_back(surf_network_model); } void surf_network_model_init_Vegas() @@ -120,7 +116,6 @@ void surf_network_model_init_Vegas() simgrid::config::set_default("network/weight-S", 20537); surf_network_model = new simgrid::kernel::resource::NetworkCm02Model(&simgrid::kernel::lmm::make_new_lagrange_system); - all_existing_models.push_back(surf_network_model); } namespace simgrid { @@ -131,6 +126,8 @@ NetworkCm02Model::NetworkCm02Model(kernel::lmm::System* (*make_new_lmm_system)(b : NetworkModel(simgrid::config::get_value("network/optim") == "Full" ? Model::UpdateAlgo::FULL : Model::UpdateAlgo::LAZY) { + all_existing_models.push_back(this); + std::string optim = simgrid::config::get_value("network/optim"); bool select = simgrid::config::get_value("network/maxmin-selective-update"); diff --git a/src/surf/network_constant.cpp b/src/surf/network_constant.cpp index e8365de065..0ebd1813df 100644 --- a/src/surf/network_constant.cpp +++ b/src/surf/network_constant.cpp @@ -16,12 +16,16 @@ void surf_network_model_init_Constant() { xbt_assert(surf_network_model == nullptr); surf_network_model = new simgrid::kernel::resource::NetworkConstantModel(); - all_existing_models.push_back(surf_network_model); } namespace simgrid { namespace kernel { namespace resource { +NetworkConstantModel::NetworkConstantModel() : NetworkModel(Model::UpdateAlgo::FULL) +{ + all_existing_models.push_back(this); +} + LinkImpl* NetworkConstantModel::create_link(const std::string& name, double bw, double lat, s4u::Link::SharingPolicy policy) { diff --git a/src/surf/network_constant.hpp b/src/surf/network_constant.hpp index 34fd6b1c3e..ab7a8f1e24 100644 --- a/src/surf/network_constant.hpp +++ b/src/surf/network_constant.hpp @@ -26,7 +26,7 @@ class XBT_PRIVATE NetworkConstantAction; *********/ class NetworkConstantModel : public NetworkModel { public: - NetworkConstantModel() : NetworkModel(Model::UpdateAlgo::FULL) {} + NetworkConstantModel(); Action* communicate(simgrid::s4u::Host* src, simgrid::s4u::Host* dst, double size, double rate) override; double next_occuring_event(double now) override; void update_actions_state(double now, double delta) override; diff --git a/src/surf/network_ib.cpp b/src/surf/network_ib.cpp index d2437855b4..eb78f298b8 100644 --- a/src/surf/network_ib.cpp +++ b/src/surf/network_ib.cpp @@ -88,7 +88,6 @@ void surf_network_model_init_IB() xbt_assert(surf_network_model == nullptr, "Cannot set the network model twice"); surf_network_model = new simgrid::kernel::resource::NetworkIBModel(); - all_existing_models.push_back(surf_network_model); simgrid::s4u::Link::on_communication_state_change.connect(IB_action_state_changed_callback); simgrid::s4u::Link::on_communicate.connect(IB_action_init_callback); simgrid::s4u::Host::on_creation.connect(IB_create_host_callback); @@ -101,6 +100,8 @@ namespace resource { NetworkIBModel::NetworkIBModel() : NetworkSmpiModel() { + /* Do not add this into all_existing_models: our ancestor already does so */ + std::string IB_factors_string = simgrid::config::get_value("smpi/IB-penalty-factors"); std::vector radical_elements; boost::split(radical_elements, IB_factors_string, boost::is_any_of(";")); diff --git a/src/surf/network_ns3.cpp b/src/surf/network_ns3.cpp index e777211104..a76f41f8cd 100644 --- a/src/surf/network_ns3.cpp +++ b/src/surf/network_ns3.cpp @@ -139,7 +139,6 @@ void surf_network_model_init_NS3() xbt_assert(surf_network_model == nullptr, "Cannot set the network model twice"); surf_network_model = new simgrid::kernel::resource::NetworkNS3Model(); - all_existing_models.push_back(surf_network_model); } static simgrid::config::Flag @@ -154,6 +153,8 @@ NetworkNS3Model::NetworkNS3Model() : NetworkModel(Model::UpdateAlgo::FULL) xbt_assert(not sg_link_energy_is_inited(), "LinkEnergy plugin and NS3 network models are not compatible. Are you looking for Ecofen, maybe?"); + all_existing_models.push_back(this); + NetPointNs3::EXTENSION_ID = simgrid::kernel::routing::NetPoint::extension_create(); ns3_initialize(ns3_tcp_model.get().c_str()); diff --git a/src/surf/network_smpi.cpp b/src/surf/network_smpi.cpp index 72de7ac9de..f220569a0a 100644 --- a/src/surf/network_smpi.cpp +++ b/src/surf/network_smpi.cpp @@ -34,7 +34,6 @@ void surf_network_model_init_SMPI() if (surf_network_model) return; surf_network_model = new simgrid::kernel::resource::NetworkSmpiModel(); - all_existing_models.push_back(surf_network_model); simgrid::config::set_default("network/weight-S", 8775); } @@ -45,6 +44,7 @@ namespace resource { NetworkSmpiModel::NetworkSmpiModel() : NetworkCm02Model() { + /* Do not add this into all_existing_models: our ancestor already does so */ } NetworkSmpiModel::~NetworkSmpiModel() = default; diff --git a/src/surf/storage_n11.cpp b/src/surf/storage_n11.cpp index 13bb0e3627..6a1f0db720 100644 --- a/src/surf/storage_n11.cpp +++ b/src/surf/storage_n11.cpp @@ -36,12 +36,16 @@ void check_disk_attachment() void surf_storage_model_init_default() { surf_storage_model = new simgrid::surf::StorageN11Model(); - all_existing_models.push_back(surf_storage_model); } namespace simgrid { namespace surf { +StorageN11Model::StorageN11Model() +{ + all_existing_models.push_back(this); +} + StorageImpl* StorageN11Model::createStorage(std::string id, std::string type_id, std::string content_name, std::string attach) { diff --git a/src/surf/storage_n11.hpp b/src/surf/storage_n11.hpp index 617b285c4c..e595db37f2 100644 --- a/src/surf/storage_n11.hpp +++ b/src/surf/storage_n11.hpp @@ -27,6 +27,7 @@ class XBT_PRIVATE StorageN11Action; class StorageN11Model : public StorageModel { public: + StorageN11Model(); StorageImpl* createStorage(std::string id, std::string type_id, std::string content_name, std::string attach) override; double next_occuring_event(double now) override;