X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/74c1bf2b26c5a3aa0d8c29674dc12993e7c0de15..a3fa21a47ddcd5c5cbdd59a45dbcc4686f08dce6:/src/instr/jedule/jedule_platform.cpp diff --git a/src/instr/jedule/jedule_platform.cpp b/src/instr/jedule/jedule_platform.cpp index 877905d18b..47919e0e22 100644 --- a/src/instr/jedule/jedule_platform.cpp +++ b/src/instr/jedule/jedule_platform.cpp @@ -1,15 +1,21 @@ -/* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2019. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ #include "simgrid/jedule/jedule.hpp" +#include "simgrid/host.h" #include "simgrid/s4u/NetZone.hpp" #include "xbt/asserts.h" #include #if SIMGRID_HAVE_JEDULE +namespace { +std::unordered_map host2_simgrid_parent_container; +std::unordered_map container_name2container; +} + namespace simgrid { namespace jedule { Subset::Subset(int start_idx, int end_idx, Container* parent) @@ -31,55 +37,54 @@ Container::~Container() delete child; } -void Container::addChild(jed_container_t child) +void Container::add_child(jed_container_t child) { xbt_assert(child != nullptr); this->children.push_back(child); child->parent = this; } -void Container::addResources(std::vector hosts) +void Container::add_resources(std::vector hosts) { - this->is_lowest = 1; + this->is_lowest_ = 1; this->children.clear(); - this->last_id = 0; + this->last_id_ = 0; //FIXME do we need to sort?: xbt_dynar_sort_strings(host_names); for (auto const& host : hosts) { const char *host_name = sg_host_get_name(host); - this->name2id.insert({host_name, this->last_id}); - (this->last_id)++; + this->name2id.insert({host_name, this->last_id_}); + (this->last_id_)++; host2_simgrid_parent_container.insert({host_name, this}); this->resource_list.push_back(host); } } -void Container::createHierarchy(sg_netzone_t from_as) +void Container::create_hierarchy(sg_netzone_t from_as) { - if (from_as->getChildren()->empty()) { + if (from_as->get_children().empty()) { // I am no AS // add hosts to jedule platform - std::vector table; - from_as->getHosts(&table); - this->addResources(table); + std::vector table = from_as->get_all_hosts(); + this->add_resources(table); } else { - for (auto const& nz : *from_as->getChildren()) { - jed_container_t child_container = new simgrid::jedule::Container(std::string(nz->getCname())); - this->addChild(child_container); - child_container->createHierarchy(nz); + for (auto const& nz : from_as->get_children()) { + jed_container_t child_container = new simgrid::jedule::Container(std::string(nz->get_cname())); + this->add_child(child_container); + child_container->create_hierarchy(nz); } } } -std::vector Container::getHierarchy() +std::vector Container::get_hierarchy() { if(this->parent != nullptr ) { if (not this->parent->children.empty()) { // we are in the last level - return this->parent->getHierarchy(); + return this->parent->get_hierarchy(); } else { unsigned int i =0; int child_nb = -1; @@ -93,7 +98,7 @@ std::vector Container::getHierarchy() } xbt_assert( child_nb > - 1); - std::vector heir_list = this->parent->getHierarchy(); + std::vector heir_list = this->parent->get_hierarchy(); heir_list.insert(heir_list.begin(), child_nb); return heir_list; } @@ -104,11 +109,11 @@ std::vector Container::getHierarchy() } } -std::string Container::getHierarchyAsString() +std::string Container::get_hierarchy_as_string() { std::string output(""); - std::vector heir_list = this->getHierarchy(); + std::vector heir_list = this->get_hierarchy(); unsigned int length = heir_list.size(); unsigned int i = 0; @@ -122,13 +127,13 @@ std::string Container::getHierarchyAsString() return output; } -void Container::printResources(FILE * jed_file) +void Container::print_resources(FILE* jed_file) { unsigned int i=0; xbt_assert(not this->resource_list.empty()); unsigned int res_nb = this->resource_list.size(); - std::string resid = this->getHierarchyAsString(); + std::string resid = this->get_hierarchy_as_string(); fprintf(jed_file, " resource_list) { @@ -150,7 +155,7 @@ void Container::print(FILE* jed_file) child->print(jed_file); } } else { - this->printResources(jed_file); + this->print_resources(jed_file); } fprintf(jed_file, " \n"); } @@ -171,8 +176,8 @@ static void add_subsets_to(std::vector *subset_list, std::vectorname2id.at(host_name); + jed_container_t parent_cont = host2_simgrid_parent_container.at(host_name); + unsigned int id = parent_cont->name2id.at(host_name); id_list.push_back(id); } unsigned int nb_ids = id_list.size();