1 /* Copyright (c) 2009-2022. 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/xbt_os_time.h"
13 #include <string_view>
19 double simulated_ = 0 /* Used to time with simulated_start/elapsed */;
20 s4u::Mailbox* mailbox_;
21 s4u::Mailbox* mailbox_small_;
22 s4u::MutexPtr 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 smpi_trace_call_location_t trace_call_loc_;
32 s4u::Actor* actor_ = nullptr;
33 smpi_privatization_region_t privatized_region_ = nullptr;
35 int optind_ = 0; /*for getopt replacement */
37 int optind_ = 1; /*for getopt replacement */
39 std::string tracing_category_ = "";
41 void* bsend_buffer_ = nullptr;
42 int bsend_buffer_size_ = 0;
45 /** Contains hardware data as read by PAPI **/
47 papi_counter_t papi_counter_data_;
51 static simgrid::xbt::Extension<simgrid::s4u::Actor, ActorExt> EXTENSION_ID;
53 explicit ActorExt(s4u::Actor* actor);
54 ActorExt(const ActorExt&) = delete;
55 ActorExt& operator=(const ActorExt&) = delete;
58 int finalized() const;
59 int initializing() const;
60 int initialized() const;
61 int finalizing() const;
62 void mark_as_initialized();
63 void mark_as_finalizing();
64 void set_replaying(bool value);
65 bool replaying() const;
66 std::string get_instance_id() const { return instance_id_;}
67 void set_tracing_category(std::string_view category) { tracing_category_ = category; }
68 const std::string& get_tracing_category() const { return tracing_category_; }
69 smpi_trace_call_location_t* call_location();
70 void set_privatized_region(smpi_privatization_region_t region);
71 smpi_privatization_region_t privatized_region() const;
72 s4u::Mailbox* mailbox() const { return mailbox_; }
73 s4u::Mailbox* mailbox_small() const { return mailbox_small_; }
74 s4u::MutexPtr mailboxes_mutex() const;
76 int papi_event_set() const;
77 papi_counter_t& papi_counters();
79 xbt_os_timer_t timer();
80 void simulated_start();
81 double simulated_elapsed() const;
82 MPI_Comm comm_world() const;
83 bool comm_self_is_set() const { return (comm_self_ != MPI_COMM_NULL); };
85 MPI_Comm comm_intra();
86 void set_comm_intra(MPI_Comm comm);
87 void set_sampling(int s);
90 s4u::ActorPtr get_actor();
91 int get_optind() const;
92 void set_optind(int optind);
94 void bsend_buffer(void** buf, int* size);
95 int set_bsend_buffer(void* buf, int size);
99 } // namespace simgrid