From 09212820ce67437a2ba2c7ce65c97cc0d721ca24 Mon Sep 17 00:00:00 2001 From: Faure Adrien Date: Tue, 20 Aug 2019 20:08:28 +0200 Subject: [PATCH] execute_flops now logs compute I created a internal function that execute flops without tracing for specific needs --- include/smpi/smpi.h | 1 + src/smpi/internals/smpi_bench.cpp | 14 ++++++++++++-- src/smpi/internals/smpi_replay.cpp | 10 ++++------ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index c4e27b890a..f892ae76a8 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -979,6 +979,7 @@ XBT_PUBLIC MPI_Info smpi_process_info_env(); XBT_PUBLIC void* smpi_process_get_user_data(); XBT_PUBLIC void smpi_process_set_user_data(void*); +XBT_PRIVATE void private_execute_flops(double flops); XBT_PUBLIC void smpi_execute_flops(double flops); XBT_PUBLIC void smpi_execute(double duration); XBT_PUBLIC void smpi_execute_benched(double duration); diff --git a/src/smpi/internals/smpi_bench.cpp b/src/smpi/internals/smpi_bench.cpp index ac32fa2ee6..8bf464a586 100644 --- a/src/smpi/internals/smpi_bench.cpp +++ b/src/smpi/internals/smpi_bench.cpp @@ -38,7 +38,8 @@ double smpi_host_speed; SharedMallocType smpi_cfg_shared_malloc = SharedMallocType::GLOBAL; double smpi_total_benched_time = 0; -void smpi_execute_flops(double flops) { +// Private execute_flops used by smpi_execute and spmi_execute benched +void private_execute_flops(double flops) { xbt_assert(flops >= 0, "You're trying to execute a negative amount of flops (%f)!", flops); XBT_DEBUG("Handle real computation time: %f flops", flops); simgrid::s4u::this_actor::exec_init(flops) @@ -49,6 +50,15 @@ void smpi_execute_flops(double flops) { smpi_switch_data_segment(simgrid::s4u::Actor::self()); } +void smpi_execute_flops(double flops) { + int rank = simgrid::s4u::this_actor::get_pid(); + TRACE_smpi_computing_in(rank, flops); + + private_execute_flops(flops); + + TRACE_smpi_computing_out(rank); +} + void smpi_execute(double duration) { if (duration >= smpi_cpu_threshold) { @@ -57,7 +67,7 @@ void smpi_execute(double duration) int rank = simgrid::s4u::this_actor::get_pid(); TRACE_smpi_computing_in(rank, flops); - smpi_execute_flops(flops); + private_execute_flops(flops); TRACE_smpi_computing_out(rank); diff --git a/src/smpi/internals/smpi_replay.cpp b/src/smpi/internals/smpi_replay.cpp index 464ba2cfc3..1aad150545 100644 --- a/src/smpi/internals/smpi_replay.cpp +++ b/src/smpi/internals/smpi_replay.cpp @@ -477,9 +477,7 @@ void RecvAction::kernel(simgrid::xbt::ReplayAction&) void ComputeAction::kernel(simgrid::xbt::ReplayAction&) { - TRACE_smpi_computing_in(my_proc_id, args.flops); smpi_execute_flops(args.flops); - TRACE_smpi_computing_out(my_proc_id); } void TestAction::kernel(simgrid::xbt::ReplayAction&) @@ -575,7 +573,7 @@ void ReduceAction::kernel(simgrid::xbt::ReplayAction&) Colls::reduce(send_buffer(args.comm_size * args.datatype1->size()), recv_buffer(args.comm_size * args.datatype1->size()), args.comm_size, args.datatype1, MPI_OP_NULL, args.root, MPI_COMM_WORLD); - smpi_execute_flops(args.comp_size); + private_execute_flops(args.comp_size); TRACE_smpi_comm_out(my_proc_id); } @@ -587,7 +585,7 @@ void AllReduceAction::kernel(simgrid::xbt::ReplayAction&) Colls::allreduce(send_buffer(args.comm_size * args.datatype1->size()), recv_buffer(args.comm_size * args.datatype1->size()), args.comm_size, args.datatype1, MPI_OP_NULL, MPI_COMM_WORLD); - smpi_execute_flops(args.comp_size); + private_execute_flops(args.comp_size); TRACE_smpi_comm_out(my_proc_id); } @@ -684,7 +682,7 @@ void ReduceScatterAction::kernel(simgrid::xbt::ReplayAction&) recv_buffer(args.recv_size_sum * args.datatype1->size()), args.recvcounts->data(), args.datatype1, MPI_OP_NULL, MPI_COMM_WORLD); - smpi_execute_flops(args.comp_size); + private_execute_flops(args.comp_size); TRACE_smpi_comm_out(my_proc_id); } @@ -752,7 +750,7 @@ void smpi_replay_init(const char* instance_id, int rank, double start_delay_flop //if we have a delayed start, sleep here. if (start_delay_flops > 0) { XBT_VERB("Delayed start for instance - Sleeping for %f flops ", start_delay_flops); - smpi_execute_flops(start_delay_flops); + private_execute_flops(start_delay_flops); } else { // Wait for the other actors to initialize also simgrid::s4u::this_actor::yield(); -- 2.20.1