return ret;
}
-XBT_PRIVATE std::string smpi_container_key(int rank)
-{
- return std::string("rank-") + std::to_string(rank);
-}
-
XBT_PRIVATE container_t smpi_container(int rank)
{
- return simgrid::instr::Container::by_name(smpi_container_key(rank));
+ return simgrid::instr::Container::by_name(std::string("rank-") + std::to_string(rank));
}
static std::string TRACE_smpi_put_key(int src, int dst, int tag, int send)
void TRACE_smpi_setup_container(int rank, sg_host_t host)
{
- std::string str = smpi_container_key(rank);
-
- container_t father;
- if (TRACE_smpi_is_grouped()){
+ container_t father = simgrid::instr::Container::get_root();
+ if (TRACE_smpi_is_grouped()) {
father = simgrid::instr::Container::by_name_or_null(host->get_name());
- }else{
- father = simgrid::instr::Container::get_root();
+ xbt_assert(father != nullptr, "Could not find a parent for mpi rank 'rank-%d' at function %s", rank, __func__);
}
- xbt_assert(father != nullptr, "Could not find a parent for mpi rank %s at function %s", str.c_str(), __func__);
- father->create_child(str, "MPI"); // This container is of type MPI
+ father->create_child(std::string("rank-") + std::to_string(rank), "MPI"); // This container is of type MPI
}
void TRACE_smpi_init(int rank)
smpi_container(rank)->get_state("MPI_STATE")->add_entity_value("computing", instr_find_color("computing"));
}
+void TRACE_smpi_sleeping_init(int rank)
+{
+ //first use, initialize the color in the trace
+ if (TRACE_smpi_is_enabled() && TRACE_smpi_is_sleeping())
+ smpi_container(rank)->get_state("MPI_STATE")->add_entity_value("sleeping", instr_find_color("sleeping"));
+}
+
void TRACE_smpi_computing_in(int rank, double amount)
{
if (TRACE_smpi_is_enabled() && TRACE_smpi_is_computing())
void TRACE_smpi_sleeping_out(int rank)
{
- if (TRACE_smpi_is_enabled() && not TRACE_smpi_is_sleeping())
+ if (TRACE_smpi_is_enabled() && TRACE_smpi_is_sleeping())
smpi_container(rank)->get_state("MPI_STATE")->pop_event();
}
/**************** Functions to trace the migration of tasks. *****************/
void TRACE_smpi_send_process_data_in(int rank)
{
- if (!TRACE_smpi_is_enabled()) return;
+ 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 (!TRACE_smpi_is_enabled()) return;
+ if (not TRACE_smpi_is_enabled()) return;
/* Clean the process state. */
smpi_container(rank)->get_state("MIGRATE_STATE")->pop_event();