1 /* Copyright (c) 2009-2019. The SimGrid Team. All rights reserved. */
3 /* This program is free software; you can redistribute it and/or modify it
4 * under the terms of the license (GNU LGPL) which comes with this package. */
10 #include "simgrid/s4u/Mailbox.hpp"
11 #include "src/instr/instr_smpi.hpp"
12 #include "xbt/synchro.h"
19 double simulated_ = 0 /* Used to time with simulated_start/elapsed */;
20 simgrid::s4u::MailboxPtr mailbox_;
21 simgrid::s4u::MailboxPtr mailbox_small_;
22 xbt_mutex_t mailboxes_mutex_;
23 xbt_os_timer_t timer_;
24 MPI_Comm comm_self_ = MPI_COMM_NULL;
25 MPI_Comm comm_intra_ = MPI_COMM_NULL;
26 MPI_Comm* comm_world_ = nullptr;
27 SmpiProcessState state_;
28 int sampling_ = 0; /* inside an SMPI_SAMPLE_ block? */
29 std::string instance_id_;
30 bool replaying_ = false; /* is the process replaying a trace */
31 simgrid::s4u::Barrier* finalization_barrier_;
32 smpi_trace_call_location_t trace_call_loc_;
33 simgrid::s4u::ActorPtr actor_ = nullptr;
34 smpi_privatization_region_t privatized_region_ = nullptr;
35 int optind = 0; /*for getopt replacement */
37 /** Contains hardware data as read by PAPI **/
39 papi_counter_t papi_counter_data_;
42 explicit ActorExt(simgrid::s4u::ActorPtr actor, simgrid::s4u::Barrier* barrier);
44 void set_data(const char* instance_id);
49 void mark_as_initialized();
50 void set_replaying(bool value);
52 smpi_trace_call_location_t* call_location();
53 void set_privatized_region(smpi_privatization_region_t region);
54 smpi_privatization_region_t privatized_region();
55 s4u::MailboxPtr mailbox() { return mailbox_; }
56 s4u::MailboxPtr mailbox_small() { return mailbox_small_; }
57 xbt_mutex_t mailboxes_mutex();
60 papi_counter_t& papi_counters();
62 xbt_os_timer_t timer();
63 void simulated_start();
64 double simulated_elapsed();
65 MPI_Comm comm_world();
67 MPI_Comm comm_intra();
68 void set_comm_intra(MPI_Comm comm);
69 void set_sampling(int s);
72 simgrid::s4u::ActorPtr get_actor();
74 void set_optind(int optind);
78 } // namespace simgrid