1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #ifndef __INCLUDE_VPROTOCOL_PESSIMIST_H__
17 #define __INCLUDE_VPROTOCOL_PESSIMIST_H__
18
19 #include "ompi_config.h"
20 #include "../vprotocol.h"
21 #include "ompi/communicator/communicator.h"
22 #include "ompi/datatype/ompi_datatype.h"
23
24 #include "vprotocol_pessimist_event.h"
25 #include "vprotocol_pessimist_sender_based_types.h"
26
27 BEGIN_C_DECLS
28
29 typedef struct mca_vprotocol_pessimist_module_t {
30 mca_vprotocol_base_module_t super;
31
32
33 vprotocol_pessimist_clock_t clock;
34
35
36 opal_list_t pending_events;
37
38
39 ompi_communicator_t *el_comm;
40 vprotocol_pessimist_mem_event_t *event_buffer;
41 size_t event_buffer_length;
42 size_t event_buffer_max_length;
43
44
45 opal_free_list_t events_pool;
46
47
48 vprotocol_pessimist_sender_based_t sender_based;
49
50
51 bool replay;
52 opal_list_t replay_events;
53 } mca_vprotocol_pessimist_module_t;
54
55 OMPI_DECLSPEC extern mca_vprotocol_pessimist_module_t mca_vprotocol_pessimist;
56 OMPI_DECLSPEC extern mca_vprotocol_base_component_t mca_vprotocol_pessimist_component;
57
58 int mca_vprotocol_pessimist_enable(bool enable);
59 int mca_vprotocol_pessimist_dump(struct ompi_communicator_t* comm, int verbose);
60
61 int mca_vprotocol_pessimist_add_procs(struct ompi_proc_t **procs, size_t nprocs);
62 int mca_vprotocol_pessimist_del_procs(struct ompi_proc_t **procs, size_t nprocs);
63 int mca_vprotocol_pessimist_progress(void);
64 int mca_vprotocol_pessimist_add_comm(struct ompi_communicator_t* comm);
65 int mca_vprotocol_pessimist_del_comm(struct ompi_communicator_t* comm);
66
67 int mca_vprotocol_pessimist_irecv(void *addr,
68 size_t count,
69 ompi_datatype_t * datatype,
70 int src,
71 int tag,
72 struct ompi_communicator_t *comm,
73 struct ompi_request_t **request );
74 int mca_vprotocol_pessimist_recv(void *addr,
75 size_t count,
76 ompi_datatype_t * datatype,
77 int src,
78 int tag,
79 struct ompi_communicator_t *comm,
80 ompi_status_public_t * status );
81
82 int mca_vprotocol_pessimist_isend(const void *buf,
83 size_t count,
84 ompi_datatype_t* datatype,
85 int dst,
86 int tag,
87 mca_pml_base_send_mode_t sendmode,
88 ompi_communicator_t* comm,
89 ompi_request_t** request );
90 int mca_vprotocol_pessimist_send(const void *buf,
91 size_t count,
92 ompi_datatype_t* datatype,
93 int dst,
94 int tag,
95 mca_pml_base_send_mode_t sendmode,
96 ompi_communicator_t* comm );
97
98 int mca_vprotocol_pessimist_iprobe(int src, int tag,
99 struct ompi_communicator_t *comm,
100 int *matched, ompi_status_public_t * status );
101 int mca_vprotocol_pessimist_probe(int src, int tag,
102 struct ompi_communicator_t *comm,
103 ompi_status_public_t * status );
104
105 END_C_DECLS
106
107 #include "vprotocol_pessimist_wait.h"
108 #include "vprotocol_pessimist_start.h"
109
110 #include "vprotocol_pessimist_request.h"
111 #include "vprotocol_pessimist_sender_based.h"
112 #include "vprotocol_pessimist_eventlog.h"
113
114 #endif