X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e2571d096e408ef4b778cb3ce8c8298c024816e6..a4c8f1898670317d0fa33bf1b1a904ea922b78cc:/src/smpi/internals/instr_smpi.cpp diff --git a/src/smpi/internals/instr_smpi.cpp b/src/smpi/internals/instr_smpi.cpp index 30352d17ac..50112e0ede 100644 --- a/src/smpi/internals/instr_smpi.cpp +++ b/src/smpi/internals/instr_smpi.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2018. 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. */ @@ -36,7 +36,7 @@ static std::map smpi_colors = {{"recv", "1 0 0"}, {"allreduce", "1 0 1"}, {"alltoall", "0.52 0 1"}, {"alltoallv", "0.78 0.52 1"}, - {"barrier", "0 0.78 0.78"}, + {"barrier", "0 0.39 0.78"}, {"bcast", "0 0.78 0.39"}, {"gather", "1 1 0"}, {"gatherv", "1 1 0.52"}, @@ -56,7 +56,6 @@ static std::map smpi_colors = {{"recv", "1 0 0"}, {"put", "0.3 1 0"}, {"get", "0 1 0.3"}, {"accumulate", "1 0.3 0"}, - {"migration", "0.2 0.5 0.2"}, {"rput", "0.3 1 0"}, {"rget", "0 1 0.3"}, {"raccumulate", "1 0.3 0"}, @@ -75,11 +74,14 @@ static std::map smpi_colors = {{"recv", "1 0 0"}, {"win_flush", "1 0 0.3"}, {"win_flush_local", "1 0 0.8"}, {"win_flush_all", "1 0.8 0"}, - {"win_flush_local_all", "1 0 0.3"} + {"win_flush_local_all", "1 0 0.3"}, + + {"file_read", "1 1 0.3"} }; -static const char* instr_find_color(std::string state) +static const char* instr_find_color(const char* c_state) { + std::string state(c_state); boost::algorithm::to_lower(state); if (state.substr(0, 5) == "pmpi_") state = state.substr(5, std::string::npos); // Remove pmpi_ to allow for exact matches @@ -134,29 +136,6 @@ static std::string TRACE_smpi_get_key(int src, int dst, int tag, int send) return key; } -static std::unordered_map process_category; - -void TRACE_internal_smpi_set_category(std::string category) -{ - if (not TRACE_smpi_is_enabled()) - return; - - //declare category - TRACE_category(category.c_str()); - - if (not category.empty()) - process_category[SIMIX_process_self()] = category; -} - -std::string TRACE_internal_smpi_get_category() -{ - if (not TRACE_smpi_is_enabled()) - return ""; - - auto it = process_category.find(SIMIX_process_self()); - return (it == process_category.end()) ? "" : it->second.c_str(); -} - void TRACE_smpi_setup_container(int rank, sg_host_t host) { container_t father = simgrid::instr::Container::get_root(); @@ -278,22 +257,6 @@ void TRACE_smpi_recv(int src, int dst, int tag) } /**************** Functions to trace the migration of tasks. *****************/ -void TRACE_smpi_send_process_data_in(int rank) -{ - if (not TRACE_smpi_is_enabled()) return; - - smpi_container(rank)->get_state("MIGRATE_STATE")->add_entity_value("migration", instr_find_color("migration")); - smpi_container(rank)->get_state("MIGRATE_STATE")->push_event("migration"); -} - -void TRACE_smpi_send_process_data_out(int rank) -{ - if (not TRACE_smpi_is_enabled()) return; - - /* Clean the process state. */ - smpi_container(rank)->get_state("MIGRATE_STATE")->pop_event(); -} - void TRACE_smpi_process_change_host(int rank, sg_host_t new_host) { if (not TRACE_smpi_is_enabled()) return; @@ -317,47 +280,3 @@ void TRACE_smpi_process_change_host(int rank, sg_host_t new_host) cont = smpi_container(rank); // This points to the newly created container simgrid::instr::Container::get_root()->get_link("MIGRATE_LINK")->end_event(cont, "M", key); } - -void TRACE_Iteration_in(int rank, simgrid::instr::TIData* extra) -{ - if (not TRACE_smpi_is_enabled()) { - delete extra; - return; - } - smpi_container(rank)->get_state("MPI_STATE")->add_entity_value("iteration", instr_find_color("iteration")); - smpi_container(rank)->get_state("MPI_STATE")->push_event("iteration", extra); -} - -void TRACE_Iteration_out(int rank, simgrid::instr::TIData* extra) -{ - if (not TRACE_smpi_is_enabled()) return; - - smpi_container(rank)->get_state("MPI_STATE")->pop_event(extra); -} - -void TRACE_migration_call(int rank, simgrid::instr::TIData* extra) -{ - if (not TRACE_smpi_is_enabled()) return; - - const std::string operation = "migrate"; - if(smpi_process()->replaying()) {//When replaying, we register an event. - smpi_container(rank)->get_state("MIGRATE_STATE")->add_entity_value(operation); - - simgrid::instr::EventType* type = - static_cast(smpi_container(rank)->type_->by_name(operation)); - new simgrid::instr::NewEvent(smpi_process()->simulated_elapsed(), smpi_container(rank), type, - type->get_entity_value(operation)); - } else { - // From rktesser: Ugly workaround! - // TI tracing uses states as events, and does not support printing events. - // So, we need a different code than for replay in order to be able to - // generate ti_traces for the migration calls. - if (!TRACE_smpi_is_enabled()) { - delete extra; - return; - } - smpi_container(rank)->get_state("MIGRATE_STATE")->add_entity_value(operation, instr_find_color(operation.c_str())); - smpi_container(rank)->get_state("MIGRATE_STATE")->push_event(operation, extra); - smpi_container(rank)->get_state("MIGRATE_STATE")->pop_event(); - } -}