-/* 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. */
{"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"},
}
/**************** 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;
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<simgrid::instr::EventType*>(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();
- }
-}