+ XBT_VERB("%s %f", xbt_str_join_array(action, " "),
+ smpi_process_simulated_elapsed()-clock);
+}
+
+static void action_bcast(const char *const *action)
+{
+ double size = parse_double(action[2]);
+ double clock = smpi_process_simulated_elapsed();
+
+ smpi_mpi_bcast(NULL, size, MPI_BYTE, 0, MPI_COMM_WORLD);
+
+ XBT_VERB("%s %f", xbt_str_join_array(action, " "),
+ smpi_process_simulated_elapsed()-clock);
+}
+
+static void action_reduce(const char *const *action)
+{
+ double size = parse_double(action[2]);
+ double clock = smpi_process_simulated_elapsed();
+ smpi_mpi_reduce(NULL, NULL, size, MPI_BYTE, MPI_OP_NULL, 0, MPI_COMM_WORLD);
+
+ XBT_VERB("%s %f", xbt_str_join_array(action, " "),
+ smpi_process_simulated_elapsed()-clock);
+}
+
+static void action_allReduce(const char *const *action) {
+ double comm_size = parse_double(action[2]);
+ double comp_size = parse_double(action[3]);
+ double clock = smpi_process_simulated_elapsed();
+ smpi_mpi_reduce(NULL, NULL, comm_size, MPI_BYTE, MPI_OP_NULL, 0, MPI_COMM_WORLD);
+ smpi_execute_flops(comp_size);
+ smpi_mpi_bcast(NULL, comm_size, MPI_BYTE, 0, MPI_COMM_WORLD);
+ XBT_VERB("%s %f", xbt_str_join_array(action, " "),
+ smpi_process_simulated_elapsed()-clock);