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)
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) {
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);
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&)
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);
}
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);
}
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);
}
//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();