SST/macro
sumi_transport.h
Go to the documentation of this file.
1 #ifndef sumi_SUMI_TRANSPORT_H
2 #define sumi_SUMI_TRANSPORT_H
3 
6 #include <sumi/monitor.h>
7 #include <sumi/timeout.h>
8 #include <sumi/message_fwd.h>
9 #include <sumi/collective.h>
10 #include <sumi/transport.h>
11 #include <sumi/comm_functions.h>
12 
13 namespace sumi {
14 
16  public sstmac::sumi_api,
17  public transport
18 {
20  public:
21  sumi_transport(sstmac::sw::software_id sid) :
22  sumi_api("sumi", sid)
23  {
24  }
25 
26  virtual void
27  init();
28 
29  virtual void
30  finalize();
31 
32  virtual void
33  init_factory_params(sprockit::sim_parameters* params);
34 
35  void
36  finalize_init();
37 
38  virtual ~sumi_transport(){}
39 
40  virtual sumi::message_ptr
42 
43  /**
44  * Block on a collective of a particular type and tag
45  * until that collective is complete
46  * @param ty
47  * @param tag
48  * @return
49  */
50  collective_done_message::ptr
51  collective_block(sumi::collective::type_t ty, int tag);
52 
53  void
54  cq_notify();
55 
56  double
57  wall_time() const;
58 
59  message::ptr
61 
62  message::ptr
63  block_until_message(double timeout);
64 
65  void
66  ping_timeout(pinger* pnger);
67 
68  void
70  library::incoming_event(ev);
71  }
72 
73  protected:
74  sumi_transport(const char* name, sstmac::sw::software_id sid);
75 
76  void
77  do_smsg_send(int dst, const message::ptr &msg);
78 
79  void
80  do_rdma_put(int dst, const message::ptr& msg);
81 
82  void
83  do_rdma_get(int src, const message::ptr& msg);
84 
85  void
86  do_nvram_get(int src, const message::ptr& msg);
87 
88  void
89  do_send_terminate(int dst);
90 
91  void
92  do_send_ping_request(int dst);
93 
94  void
95  delayed_transport_handle(const message::ptr& msg);
96 
97  void
98  schedule_ping_timeout(pinger* pnger, double to);
99 
100  void
102 
103  void
104  go_die();
105 
106  void
107  go_revive();
108 
109 };
110 
111 }
112 
113 #endif // sumi_SUMI_TRANSPORT_H
message::ptr block_until_message()
collective_done_message::ptr collective_block(sumi::collective::type_t ty, int tag)
Block on a collective of a particular type and tag until that collective is complete.
virtual void init_factory_params(sprockit::sim_parameters *params)
void ping_timeout(pinger *pnger)
void delayed_transport_handle(const message::ptr &msg)
void do_send_ping_request(int dst)
virtual void finalize()
virtual sumi::message_ptr handle(sstmac::transport_message *msg)
double wall_time() const
void schedule_next_heartbeat()
void do_send_terminate(int dst)
void do_nvram_get(int src, const message::ptr &msg)
void do_rdma_get(int src, const message::ptr &msg)
ImplementAPI(sumi_transport) public
SUMI = Simulator unified messagine interface It is also the name for a solid ink in Japanese - i...
void incoming_event(sstmac::event *ev)
Definition: sumi.h:14
void schedule_ping_timeout(pinger *pnger, double to)
virtual void init()
sumi_api(const char *name, sstmac::sw::software_id sid)
void do_rdma_put(int dst, const message::ptr &msg)
void do_smsg_send(int dst, const message::ptr &msg)
software_id sid() const
Definition: library.h:59
A wrapper for an appid, taskid pair.
Definition: software_id.h:28
sumi_transport(const char *name, sstmac::sw::software_id sid)