X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a7c7305f6e8e491758619a4d860bfb993b3f7ddf..29e444d885c6079db52621b1edfd4f5411ef7bff:/src/instr/instr_platform.cpp diff --git a/src/instr/instr_platform.cpp b/src/instr/instr_platform.cpp index 65b97d428b..6e825621cc 100644 --- a/src/instr/instr_platform.cpp +++ b/src/instr/instr_platform.cpp @@ -53,8 +53,8 @@ static container_t lowestCommonAncestor(const simgrid::instr::Container* a1, con // find the lowest ancestor p = nullptr; - int i = ancestors_a1.size() - 1; - int j = ancestors_a2.size() - 1; + int i = static_cast(ancestors_a1.size()) - 1; + int j = static_cast(ancestors_a2.size()) - 1; while (i >= 0 && j >= 0) { container_t a1p = ancestors_a1.at(i); const simgrid::instr::Container* a2p = ancestors_a2.at(j); @@ -134,9 +134,9 @@ static void recursiveGraphExtraction(const simgrid::s4u::NetZone* netzone, conta } } - xbt_graph_t graph = xbt_graph_new_graph(0, nullptr); - std::map* nodes = new std::map(); - std::map* edges = new std::map(); + auto* graph = xbt_graph_new_graph(0, nullptr); + auto* nodes = new std::map(); + auto* edges = new std::map(); netzone->get_impl()->get_graph(graph, nodes, edges); for (auto elm : *edges) { @@ -222,9 +222,9 @@ namespace instr { void platform_graph_export_graphviz(const std::string& output_filename) { - xbt_graph_t g = xbt_graph_new_graph(0, nullptr); - std::map* nodes = new std::map(); - std::map* edges = new std::map(); + auto* g = xbt_graph_new_graph(0, nullptr); + auto* nodes = new std::map(); + auto* edges = new std::map(); s4u::Engine::get_instance()->get_netzone_root()->extract_xbt_graph(g, nodes, edges); std::ofstream fs; @@ -266,11 +266,11 @@ static void on_netzone_creation(s4u::NetZone const& netzone) { std::string id = netzone.get_name(); if (Container::get_root() == nullptr) { - NetZoneContainer* root = new NetZoneContainer(id, 0, nullptr); + auto* root = new NetZoneContainer(id, 0, nullptr); xbt_assert(Container::get_root() == root); if (TRACE_smpi_is_enabled()) { - ContainerType* mpi = root->type_->by_name_or_create("MPI"); + auto* mpi = root->type_->by_name_or_create("MPI"); if (not TRACE_smpi_is_grouped()) mpi->by_name_or_create("MPI_STATE"); root->type_->by_name_or_create("MPI_LINK", mpi, mpi); @@ -286,7 +286,8 @@ static void on_netzone_creation(s4u::NetZone const& netzone) } if (TRACE_needs_platform()) { - NetZoneContainer* container = new NetZoneContainer(id, currentContainer.size(), currentContainer.back()); + auto level = static_cast(currentContainer.size()); + auto* container = new NetZoneContainer(id, level, currentContainer.back()); currentContainer.push_back(container); } } @@ -296,7 +297,7 @@ static void on_link_creation(s4u::Link const& link) if (currentContainer.empty()) // No ongoing parsing. Are you creating the loopback? return; - Container* container = new Container(link.get_name(), "LINK", currentContainer.back()); + auto* container = new Container(link.get_name(), "LINK", currentContainer.back()); if ((TRACE_categorized() || TRACE_uncategorized() || TRACE_platform()) && (not TRACE_disable_link())) { VariableType* bandwidth = container->type_->by_name_or_create("bandwidth", ""); @@ -331,7 +332,7 @@ static void on_host_creation(s4u::Host const& host) container->type_->by_name_or_create("speed_used", "0.5 0.5 0.5"); if (TRACE_smpi_is_enabled() && TRACE_smpi_is_grouped()) { - ContainerType* mpi = container->type_->by_name_or_create("MPI"); + auto* mpi = container->type_->by_name_or_create("MPI"); mpi->by_name_or_create("MPI_STATE"); // TODO See if we can move this to the LoadBalancer plugin root->type_->by_name_or_create("MIGRATE_LINK", mpi, mpi); @@ -342,9 +343,9 @@ static void on_host_creation(s4u::Host const& host) static void on_action_state_change(kernel::resource::Action const& action, kernel::resource::Action::State /* previous */) { - int n = action.get_variable()->get_number_of_constraint(); + auto n = static_cast(action.get_variable()->get_number_of_constraint()); - for (int i = 0; i < n; i++) { + for (unsigned i = 0; i < n; i++) { double value = action.get_variable()->get_value() * action.get_variable()->get_constraint_weight(i); /* Beware of composite actions: ptasks put links and cpus together. Extra pb: we cannot dynamic_cast from void* */ kernel::resource::Resource* resource = action.get_variable()->get_constraint(i)->get_id(); @@ -365,7 +366,7 @@ static void on_action_state_change(kernel::resource::Action const& action, static void on_platform_created() { currentContainer.clear(); - std::set* filter = new std::set(); + auto* filter = new std::set(); XBT_DEBUG("Starting graph extraction."); recursiveGraphExtraction(s4u::Engine::get_instance()->get_netzone_root(), Container::get_root(), filter); XBT_DEBUG("Graph extraction finished."); @@ -380,15 +381,14 @@ static void on_actor_creation(s4u::Actor const& actor) std::string container_name = instr_pid(actor); container->create_child(container_name, "ACTOR"); - ContainerType* actor_type = container->type_->by_name_or_create("ACTOR"); - StateType* state = actor_type->by_name_or_create("ACTOR_STATE"); + auto* actor_type = container->type_->by_name_or_create("ACTOR"); + auto* state = actor_type->by_name_or_create("ACTOR_STATE"); state->add_entity_value("suspend", "1 0 1"); state->add_entity_value("sleep", "1 1 0"); state->add_entity_value("receive", "1 0 0"); state->add_entity_value("send", "0 0 1"); state->add_entity_value("execute", "0 1 1"); root->type_->by_name_or_create("ACTOR_LINK", actor_type, actor_type); - root->type_->by_name_or_create("ACTOR_TASK_LINK", actor_type, actor_type); actor.on_exit([container_name](bool failed) { if (failed) @@ -418,8 +418,8 @@ static void on_vm_creation(s4u::Host const& host) { const Container* container = new HostContainer(host, currentContainer.back()); const Container* root = Container::get_root(); - ContainerType* vm = container->type_->by_name_or_create("VM"); - StateType* state = vm->by_name_or_create("VM_STATE"); + auto* vm = container->type_->by_name_or_create("VM"); + auto* state = vm->by_name_or_create("VM_STATE"); state->add_entity_value("suspend", "1 0 1"); state->add_entity_value("sleep", "1 1 0"); state->add_entity_value("receive", "1 0 0"); @@ -493,6 +493,17 @@ void define_callbacks() s4u::Actor::on_host_change.connect(on_actor_host_change); } + if (TRACE_smpi_is_enabled() && TRACE_smpi_is_computing()) { + s4u::Exec::on_start.connect([](simgrid::s4u::Actor const& actor, s4u::Exec const& exec) { + Container::by_name(std::string("rank-") + std::to_string(actor.get_pid())) + ->get_state("MPI_STATE") + ->push_event("computing", new CpuTIData("compute", exec.get_cost())); + }); + s4u::Exec::on_completion.connect([](s4u::Actor const& actor, s4u::Exec const&) { + Container::by_name(std::string("rank-") + std::to_string(actor.get_pid()))->get_state("MPI_STATE")->pop_event(); + }); + } + if (TRACE_vm_is_enabled()) { s4u::Host::on_creation.connect(on_vm_creation); s4u::VirtualMachine::on_start.connect([](s4u::VirtualMachine const& vm) {