Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
provide a simpler API of Engine::getHostList (returning the structure) and use it
authorMartin Quinson <martin.quinson@loria.fr>
Fri, 9 Mar 2018 15:28:56 +0000 (16:28 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Fri, 9 Mar 2018 15:28:56 +0000 (16:28 +0100)
14 files changed:
examples/s4u/actor-suspend/s4u-actor-suspend.cpp
examples/s4u/app-bittorrent/s4u-bittorrent.cpp
examples/s4u/app-token-ring/s4u-app-token-ring.cpp
examples/s4u/dht-chord/s4u-dht-chord.cpp
examples/s4u/exec-ptask/s4u-exec-ptask.cpp
examples/s4u/platform-properties/s4u-platform-properties.cpp
include/simgrid/s4u/Engine.hpp
src/s4u/s4u_engine.cpp
src/simdag/sd_dotloader.cpp
src/simgrid/host.cpp
src/smpi/internals/smpi_deployment.cpp
src/surf/plugins/host_energy.cpp
src/surf/sg_platf.cpp
teshsuite/s4u/comm-pt2pt/comm-pt2pt.cpp

index b663e8e..967e803 100644 (file)
@@ -70,8 +70,7 @@ int main(int argc, char* argv[])
   xbt_assert(argc == 2, "Usage: %s platform_file\n\tExample: %s msg_platform.xml\n", argv[0], argv[0]);
 
   e.loadPlatform(argv[1]); /* - Load the platform description */
-  std::vector<simgrid::s4u::Host*> list;
-  e.getHostList(&list);
+  std::vector<simgrid::s4u::Host*> list = e.getHostList();
   simgrid::s4u::Actor::createActor("dream_master", list.front(), dream_master);
 
   e.run(); /* - Run the simulation */
index 38709b0..9307ba0 100644 (file)
@@ -21,8 +21,7 @@ int main(int argc, char* argv[])
 
   HostBittorrent::EXTENSION_ID = simgrid::s4u::Host::extension_create<HostBittorrent>();
 
-  std::vector<simgrid::s4u::Host*> list;
-  simgrid::s4u::Engine::getInstance()->getHostList(&list);
+  std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
   for (auto const& host : list)
     host->extension_set(new HostBittorrent(host));
 
index 388e19f..893e6df 100644 (file)
@@ -60,8 +60,7 @@ int main(int argc, char** argv)
 
   XBT_INFO("Number of hosts '%zu'", e.getHostCount());
   int id = 0;
-  std::vector<simgrid::s4u::Host*> list;
-  e.getHostList(&list);
+  std::vector<simgrid::s4u::Host*> list = e.getHostList();
   for (auto const& host : list) {
     /* - Give a unique rank to each host and create a @ref relay_runner process on each */
     simgrid::s4u::Actor::createActor((std::to_string(id)).c_str(), host, RelayRunner());
index 5c819f1..f18cf54 100644 (file)
@@ -28,8 +28,7 @@ static void chord_init()
 
   HostChord::EXTENSION_ID = simgrid::s4u::Host::extension_create<HostChord>();
 
-  std::vector<simgrid::s4u::Host*> list;
-  simgrid::s4u::Engine::getInstance()->getHostList(&list);
+  std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
   for (auto const& host : list)
     host->extension_set(new HostChord(host));
 }
index 7a9a31f..4de50c2 100644 (file)
@@ -28,8 +28,7 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_energyptask, "Messages specific for this s4u ex
 static void runner()
 {
   /* Retrieve the list of all hosts as an array of hosts */
-  std::vector<simgrid::s4u::Host*> hosts;
-  simgrid::s4u::Engine::getInstance()->getHostList(&hosts);
+  std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
   int hosts_count = hosts.size();
 
   XBT_INFO("First, build a classical parallel task, with 1 Gflop to execute on each node, "
index dabffc1..2d9f388 100644 (file)
@@ -106,8 +106,7 @@ int main(int argc, char* argv[])
   size_t totalHosts = sg_host_count();
 
   XBT_INFO("There are %zu hosts in the environment", totalHosts);
-  std::vector<simgrid::s4u::Host*> hosts;
-  e.getHostList(&hosts);
+  std::vector<simgrid::s4u::Host*> hosts = e.getHostList();
   for (unsigned int i = 0; i < hosts.size(); i++)
     XBT_INFO("Host '%s' runs at %.0f flops/s", hosts[i]->getCname(), hosts[i]->getSpeed());
 
index bb204e9..bc7d410 100644 (file)
@@ -64,6 +64,7 @@ public:
   simgrid::s4u::Host* hostByNameOrNull(std::string name);
   size_t getHostCount();
   void getHostList(std::vector<Host*> * whereTo);
+  std::vector<Host*> getHostList();
   size_t getLinkCount();
   void getLinkList(std::vector<Link*> * list);
 
index 0dea4cb..e5fce94 100644 (file)
@@ -91,6 +91,14 @@ void Engine::getHostList(std::vector<Host*>* list)
   for (auto const& kv : pimpl->hosts_)
     list->push_back(kv.second);
 }
+/** @brief Returns the list of all hosts found in the platform */
+std::vector<Host*> Engine::getHostList()
+{
+  std::vector<Host*> res;
+  for (auto const& kv : pimpl->hosts_)
+    res.push_back(kv.second);
+  return res;
+}
 void Engine::addHost(std::string name, simgrid::s4u::Host* host)
 {
   pimpl->hosts_[name] = host;
index 4979a2e..10bb4ad 100644 (file)
@@ -213,8 +213,7 @@ xbt_dynar_t SD_dotload_generic(const char* filename, bool sequential, bool sched
 
   if(schedule){
     if (schedule_success) {
-      std::vector<simgrid::s4u::Host*> hosts;
-      simgrid::s4u::Engine::getInstance()->getHostList(&hosts);
+      std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
 
       for (auto const& elm : computers) {
         SD_task_t previous_task = nullptr;
index e49a988..faf160f 100644 (file)
@@ -37,8 +37,7 @@ size_t sg_host_count()
  */
 sg_host_t *sg_host_list() {
   xbt_assert(sg_host_count() > 0, "There is no host!");
-  std::vector<simgrid::s4u::Host*> hosts;
-  simgrid::s4u::Engine::getInstance()->getHostList(&hosts);
+  std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
 
   sg_host_t* res = (sg_host_t*)malloc(sizeof(sg_host_t) * hosts.size());
   memcpy(res, hosts.data(), sizeof(sg_host_t) * hosts.size());
@@ -76,8 +75,7 @@ xbt_dynar_t sg_hosts_as_dynar()
 {
   xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t),nullptr);
 
-  std::vector<simgrid::s4u::Host*> list;
-  simgrid::s4u::Engine::getInstance()->getHostList(&list);
+  std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
 
   for (auto const& host : list) {
     if (host && host->pimpl_netpoint && host->pimpl_netpoint->isHost())
index 76052cf..174447a 100644 (file)
@@ -57,8 +57,7 @@ void SMPI_app_instance_register(const char *name, xbt_main_func_t code, int num_
   static int already_called = 0;
   if (not already_called) {
     already_called = 1;
-    std::vector<simgrid::s4u::Host*> list;
-    simgrid::s4u::Engine::getInstance()->getHostList(&list);
+    std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
     for (auto const& host : list) {
       host->extension_set(new simgrid::smpi::SmpiHost(host));
     }
index 8826efc..f999bd1 100644 (file)
@@ -432,8 +432,7 @@ static void onHostDestruction(simgrid::s4u::Host& host)
 
 static void onSimulationEnd()
 {
-  std::vector<simgrid::s4u::Host*> hosts;
-  simgrid::s4u::Engine::getInstance()->getHostList(&hosts);
+  std::vector<simgrid::s4u::Host*> hosts = simgrid::s4u::Engine::getInstance()->getHostList();
 
   double total_energy      = 0.0; // Total energy consumption (whole platform)
   double used_hosts_energy = 0.0; // Energy consumed by hosts that computed something
@@ -484,8 +483,7 @@ void sg_host_energy_plugin_init()
 void sg_host_energy_update_all()
 {
   simgrid::simix::kernelImmediate([]() {
-    std::vector<simgrid::s4u::Host*> list;
-    simgrid::s4u::Engine::getInstance()->getHostList(&list);
+    std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
     for (auto const& host : list)
       if (dynamic_cast<simgrid::s4u::VirtualMachine*>(host) == nullptr) // Ignore virtual machines
         host->extension<HostEnergy>()->update();
index 5a35785..f372ea8 100644 (file)
@@ -417,8 +417,7 @@ void sg_platf_new_actor(ActorCreationArgs* actor)
     std::string msg = std::string("Cannot create actor '") + actor->function + "': host '" + actor->host +
                       "' does not exist\nExisting hosts: '";
 
-    std::vector<simgrid::s4u::Host*> list;
-    simgrid::s4u::Engine::getInstance()->getHostList(&list);
+    std::vector<simgrid::s4u::Host*> list = simgrid::s4u::Engine::getInstance()->getHostList();
 
     for (auto const& host : list) {
       msg += host->getName();
index c82af7b..8dce758 100644 (file)
@@ -182,8 +182,7 @@ int main(int argc, char* argv[])
   }
   xbt_assert(argSend.front().size() == argRecv.front().size(), "Sender and receiver spec must be of the same size");
 
-  std::vector<simgrid::s4u::Host*> hosts;
-  e.getHostList(&hosts);
+  std::vector<simgrid::s4u::Host*> hosts = e.getHostList();
 
   simgrid::s4u::Actor::createActor("sender", hosts[0], sender, argSend);
   simgrid::s4u::Actor::createActor("recver", hosts[1], receiver, argRecv);