Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
have each model register into all_existing_models by itself
authorMartin Quinson <martin.quinson@loria.fr>
Sun, 8 Jul 2018 23:53:04 +0000 (01:53 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Mon, 9 Jul 2018 04:46:40 +0000 (06:46 +0200)
src/plugins/vm/VirtualMachineImpl.cpp
src/surf/cpu_cas01.cpp
src/surf/network_cm02.cpp
src/surf/network_constant.cpp
src/surf/network_constant.hpp
src/surf/network_ib.cpp
src/surf/network_ns3.cpp
src/surf/network_smpi.cpp
src/surf/storage_n11.cpp
src/surf/storage_n11.hpp

index 088f09a..3f32d02 100644 (file)
@@ -15,10 +15,8 @@ simgrid::vm::VMModel* surf_vm_model = nullptr;
 
 void surf_vm_model_init_HL13()
 {
 
 void surf_vm_model_init_HL13()
 {
-  if (surf_cpu_model_vm) {
+  if (surf_cpu_model_vm != nullptr)
     surf_vm_model = new simgrid::vm::VMModel();
     surf_vm_model = new simgrid::vm::VMModel();
-    all_existing_models.push_back(surf_vm_model);
-  }
 }
 
 namespace simgrid {
 }
 
 namespace simgrid {
@@ -56,6 +54,7 @@ static void hostStateChange(s4u::Host& host)
 
 VMModel::VMModel()
 {
 
 VMModel::VMModel()
 {
+  all_existing_models.push_back(this);
   s4u::Host::on_state_change.connect(hostStateChange);
 }
 
   s4u::Host::on_state_change.connect(hostStateChange);
 }
 
index 8fafa0b..a39c9b3 100644 (file)
@@ -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);
     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);
   surf_cpu_model_vm = new simgrid::surf::CpuCas01Model(algo);
-  all_existing_models.push_back(surf_cpu_model_vm);
 }
 
 namespace simgrid {
 }
 
 namespace simgrid {
@@ -61,6 +58,8 @@ namespace surf {
 
 CpuCas01Model::CpuCas01Model(kernel::resource::Model::UpdateAlgo algo) : simgrid::surf::CpuModel(algo)
 {
 
 CpuCas01Model::CpuCas01Model(kernel::resource::Model::UpdateAlgo algo) : simgrid::surf::CpuModel(algo)
 {
+  all_existing_models.push_back(this);
+
   bool select = simgrid::config::get_value<bool>("cpu/maxmin-selective-update");
 
   if (algo == Model::UpdateAlgo::LAZY) {
   bool select = simgrid::config::get_value<bool>("cpu/maxmin-selective-update");
 
   if (algo == Model::UpdateAlgo::LAZY) {
index 2b60d0a..a85a3d5 100644 (file)
@@ -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();
   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<double>("network/latency-factor", 13.01);
   simgrid::config::set_default<double>("network/bandwidth-factor", 0.97);
 
   simgrid::config::set_default<double>("network/latency-factor", 13.01);
   simgrid::config::set_default<double>("network/bandwidth-factor", 0.97);
@@ -64,7 +63,6 @@ void surf_network_model_init_CM02()
   simgrid::config::set_default<double>("network/weight-S", 0.0);
 
   surf_network_model = new simgrid::kernel::resource::NetworkCm02Model();
   simgrid::config::set_default<double>("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<double>("network/weight-S", 20537);
 
   surf_network_model = new simgrid::kernel::resource::NetworkCm02Model(&simgrid::kernel::lmm::make_new_lagrange_system);
   simgrid::config::set_default<double>("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<double>("network/weight-S", 20537);
 
   surf_network_model = new simgrid::kernel::resource::NetworkCm02Model(&simgrid::kernel::lmm::make_new_lagrange_system);
   simgrid::config::set_default<double>("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()
 }
 
 void surf_network_model_init_Vegas()
@@ -120,7 +116,6 @@ void surf_network_model_init_Vegas()
   simgrid::config::set_default<double>("network/weight-S", 20537);
 
   surf_network_model = new simgrid::kernel::resource::NetworkCm02Model(&simgrid::kernel::lmm::make_new_lagrange_system);
   simgrid::config::set_default<double>("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 {
 }
 
 namespace simgrid {
@@ -131,6 +126,8 @@ NetworkCm02Model::NetworkCm02Model(kernel::lmm::System* (*make_new_lmm_system)(b
     : NetworkModel(simgrid::config::get_value<std::string>("network/optim") == "Full" ? Model::UpdateAlgo::FULL
                                                                                       : Model::UpdateAlgo::LAZY)
 {
     : NetworkModel(simgrid::config::get_value<std::string>("network/optim") == "Full" ? Model::UpdateAlgo::FULL
                                                                                       : Model::UpdateAlgo::LAZY)
 {
+  all_existing_models.push_back(this);
+
   std::string optim = simgrid::config::get_value<std::string>("network/optim");
   bool select       = simgrid::config::get_value<bool>("network/maxmin-selective-update");
 
   std::string optim = simgrid::config::get_value<std::string>("network/optim");
   bool select       = simgrid::config::get_value<bool>("network/maxmin-selective-update");
 
index e8365de..0ebd181 100644 (file)
@@ -16,12 +16,16 @@ void surf_network_model_init_Constant()
 {
   xbt_assert(surf_network_model == nullptr);
   surf_network_model = new simgrid::kernel::resource::NetworkConstantModel();
 {
   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 {
 }
 
 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)
 {
 LinkImpl* NetworkConstantModel::create_link(const std::string& name, double bw, double lat,
                                             s4u::Link::SharingPolicy policy)
 {
index 34fd6b1..ab7a8f1 100644 (file)
@@ -26,7 +26,7 @@ class XBT_PRIVATE NetworkConstantAction;
  *********/
 class NetworkConstantModel : public NetworkModel {
 public:
  *********/
 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;
   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;
index d243785..eb78f29 100644 (file)
@@ -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();
   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);
   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()
 {
 
 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<std::string>("smpi/IB-penalty-factors");
   std::vector<std::string> radical_elements;
   boost::split(radical_elements, IB_factors_string, boost::is_any_of(";"));
   std::string IB_factors_string = simgrid::config::get_value<std::string>("smpi/IB-penalty-factors");
   std::vector<std::string> radical_elements;
   boost::split(radical_elements, IB_factors_string, boost::is_any_of(";"));
index e777211..a76f41f 100644 (file)
@@ -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();
   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<std::string>
 }
 
 static simgrid::config::Flag<std::string>
@@ -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?");
 
   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<NetPointNs3>();
 
   ns3_initialize(ns3_tcp_model.get().c_str());
   NetPointNs3::EXTENSION_ID = simgrid::kernel::routing::NetPoint::extension_create<NetPointNs3>();
 
   ns3_initialize(ns3_tcp_model.get().c_str());
index 72de7ac..f220569 100644 (file)
@@ -34,7 +34,6 @@ void surf_network_model_init_SMPI()
   if (surf_network_model)
     return;
   surf_network_model = new simgrid::kernel::resource::NetworkSmpiModel();
   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<double>("network/weight-S", 8775);
 }
 
   simgrid::config::set_default<double>("network/weight-S", 8775);
 }
@@ -45,6 +44,7 @@ namespace resource {
 
 NetworkSmpiModel::NetworkSmpiModel() : NetworkCm02Model()
 {
 
 NetworkSmpiModel::NetworkSmpiModel() : NetworkCm02Model()
 {
+  /* Do not add this into all_existing_models: our ancestor already does so */
 }
 
 NetworkSmpiModel::~NetworkSmpiModel() = default;
 }
 
 NetworkSmpiModel::~NetworkSmpiModel() = default;
index 13bb0e3..6a1f0db 100644 (file)
@@ -36,12 +36,16 @@ void check_disk_attachment()
 void surf_storage_model_init_default()
 {
   surf_storage_model = new simgrid::surf::StorageN11Model();
 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 {
 
 }
 
 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)
 {
 StorageImpl* StorageN11Model::createStorage(std::string id, std::string type_id, std::string content_name,
                                             std::string attach)
 {
index 617b285..e595db3 100644 (file)
@@ -27,6 +27,7 @@ class XBT_PRIVATE StorageN11Action;
 
 class StorageN11Model : public StorageModel {
 public:
 
 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;
   StorageImpl* createStorage(std::string id, std::string type_id, std::string content_name,
                              std::string attach) override;
   double next_occuring_event(double now) override;