This source file includes following definitions.
- mca_coll_demo_init_query
- mca_coll_demo_comm_query
- mca_coll_demo_module_enable
- mca_coll_demo_ft_event
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include "ompi_config.h"
20 #include "coll_demo.h"
21
22 #include <stdio.h>
23
24 #include "mpi.h"
25 #include "ompi/communicator/communicator.h"
26 #include "ompi/mca/coll/coll.h"
27 #include "ompi/mca/coll/base/base.h"
28 #include "coll_demo.h"
29
30 #if 0
31
32
33
34
35 static const mca_coll_base_module_1_0_0_t intra = {
36
37
38
39 mca_coll_demo_module_init,
40 mca_coll_demo_module_finalize,
41
42
43
44 mca_coll_demo_allgather_intra,
45 mca_coll_demo_allgatherv_intra,
46 mca_coll_demo_allreduce_intra,
47 mca_coll_demo_alltoall_intra,
48 mca_coll_demo_alltoallv_intra,
49 mca_coll_demo_alltoallw_intra,
50 mca_coll_demo_barrier_intra,
51 mca_coll_demo_bcast_intra,
52 NULL,
53 mca_coll_demo_gather_intra,
54 mca_coll_demo_gatherv_intra,
55 mca_coll_demo_reduce_intra,
56 mca_coll_demo_reduce_scatter_intra,
57 mca_coll_demo_scan_intra,
58 mca_coll_demo_scatter_intra,
59 mca_coll_demo_scatterv_intra,
60 mca_coll_demo_ft_event
61 };
62
63
64
65
66
67 static const mca_coll_base_module_1_0_0_t inter = {
68
69
70
71 mca_coll_demo_module_init,
72 mca_coll_demo_module_finalize,
73
74
75
76 mca_coll_demo_allgather_inter,
77 mca_coll_demo_allgatherv_inter,
78 mca_coll_demo_allreduce_inter,
79 mca_coll_demo_alltoall_inter,
80 mca_coll_demo_alltoallv_inter,
81 mca_coll_demo_alltoallw_inter,
82 mca_coll_demo_barrier_inter,
83 mca_coll_demo_bcast_inter,
84 mca_coll_demo_exscan_inter,
85 mca_coll_demo_gather_inter,
86 mca_coll_demo_gatherv_inter,
87 mca_coll_demo_reduce_inter,
88 mca_coll_demo_reduce_scatter_inter,
89 NULL,
90 mca_coll_demo_scatter_inter,
91 mca_coll_demo_scatterv_inter,
92 mca_coll_demo_ft_event
93 };
94
95 #endif
96
97
98
99
100
101
102 int mca_coll_demo_init_query(bool enable_progress_threads,
103 bool enable_mpi_threads)
104 {
105
106
107 return OMPI_SUCCESS;
108 }
109
110
111
112
113
114
115 mca_coll_base_module_t *
116 mca_coll_demo_comm_query(struct ompi_communicator_t *comm, int *priority)
117 {
118 mca_coll_demo_module_t *demo_module;
119
120 demo_module = OBJ_NEW(mca_coll_demo_module_t);
121 if (NULL == demo_module) return NULL;
122
123 *priority = mca_coll_demo_priority;
124
125 demo_module->super.coll_module_enable = mca_coll_demo_module_enable;
126 demo_module->super.ft_event = mca_coll_demo_ft_event;
127
128 if (OMPI_COMM_IS_INTRA(comm)) {
129 demo_module->super.coll_allgather = mca_coll_demo_allgather_intra;
130 demo_module->super.coll_allgatherv = mca_coll_demo_allgatherv_intra;
131 demo_module->super.coll_allreduce = mca_coll_demo_allreduce_intra;
132 demo_module->super.coll_alltoall = mca_coll_demo_alltoall_intra;
133 demo_module->super.coll_alltoallv = mca_coll_demo_alltoallv_intra;
134 demo_module->super.coll_alltoallw = mca_coll_demo_alltoallw_intra;
135 demo_module->super.coll_barrier = mca_coll_demo_barrier_intra;
136 demo_module->super.coll_bcast = mca_coll_demo_bcast_intra;
137 demo_module->super.coll_exscan = mca_coll_demo_exscan_intra;
138 demo_module->super.coll_gather = mca_coll_demo_gather_intra;
139 demo_module->super.coll_gatherv = mca_coll_demo_gatherv_intra;
140 demo_module->super.coll_reduce = mca_coll_demo_reduce_intra;
141 demo_module->super.coll_reduce_scatter = mca_coll_demo_reduce_scatter_intra;
142 demo_module->super.coll_scan = mca_coll_demo_scan_intra;
143 demo_module->super.coll_scatter = mca_coll_demo_scatter_intra;
144 demo_module->super.coll_scatterv = mca_coll_demo_scatterv_intra;
145 } else {
146 demo_module->super.coll_allgather = mca_coll_demo_allgather_inter;
147 demo_module->super.coll_allgatherv = mca_coll_demo_allgatherv_inter;
148 demo_module->super.coll_allreduce = mca_coll_demo_allreduce_inter;
149 demo_module->super.coll_alltoall = mca_coll_demo_alltoall_inter;
150 demo_module->super.coll_alltoallv = mca_coll_demo_alltoallv_inter;
151 demo_module->super.coll_alltoallw = mca_coll_demo_alltoallw_inter;
152 demo_module->super.coll_barrier = mca_coll_demo_barrier_inter;
153 demo_module->super.coll_bcast = mca_coll_demo_bcast_inter;
154 demo_module->super.coll_exscan = NULL;
155 demo_module->super.coll_gather = mca_coll_demo_gather_inter;
156 demo_module->super.coll_gatherv = mca_coll_demo_gatherv_inter;
157 demo_module->super.coll_reduce = mca_coll_demo_reduce_inter;
158 demo_module->super.coll_reduce_scatter = mca_coll_demo_reduce_scatter_inter;
159 demo_module->super.coll_scan = NULL;
160 demo_module->super.coll_scatter = mca_coll_demo_scatter_inter;
161 demo_module->super.coll_scatterv = mca_coll_demo_scatterv_inter;
162 }
163
164 return &(demo_module->super);
165 }
166
167 #define COPY(comm, module, func) \
168 do { \
169 module->underlying.coll_ ## func = comm->c_coll->coll_ ## func; \
170 module->underlying.coll_ ## func = comm->c_coll->coll_ ## func; \
171 if (NULL != module->underlying.coll_ ## func ## _module) { \
172 OBJ_RETAIN(module->underlying.coll_ ## func ## _module); \
173 } \
174 } while (0)
175
176 int
177 mca_coll_demo_module_enable(mca_coll_base_module_t *module,
178 struct ompi_communicator_t *comm)
179 {
180 mca_coll_demo_module_t *demo_module = (mca_coll_demo_module_t*) module;
181
182 if (mca_coll_demo_verbose > 0) {
183 printf("Hello! This is the \"demo\" coll component. I'll be your coll component\ntoday. Please tip your waitresses well.\n");
184 }
185
186
187 COPY(comm, demo_module, allgather);
188 COPY(comm, demo_module, allgatherv);
189 COPY(comm, demo_module, allreduce);
190 COPY(comm, demo_module, alltoall);
191 COPY(comm, demo_module, alltoallv);
192 COPY(comm, demo_module, alltoallw);
193 COPY(comm, demo_module, barrier);
194 COPY(comm, demo_module, bcast);
195 COPY(comm, demo_module, exscan);
196 COPY(comm, demo_module, gather);
197 COPY(comm, demo_module, gatherv);
198 COPY(comm, demo_module, reduce);
199 COPY(comm, demo_module, reduce_scatter);
200 COPY(comm, demo_module, scan);
201 COPY(comm, demo_module, scatter);
202 COPY(comm, demo_module, scatterv);
203
204 return OMPI_SUCCESS;
205 }
206
207
208 int mca_coll_demo_ft_event(int state) {
209 if(OPAL_CRS_CHECKPOINT == state) {
210 ;
211 }
212 else if(OPAL_CRS_CONTINUE == state) {
213 ;
214 }
215 else if(OPAL_CRS_RESTART == state) {
216 ;
217 }
218 else if(OPAL_CRS_TERM == state ) {
219 ;
220 }
221 else {
222 ;
223 }
224
225 return OMPI_SUCCESS;
226 }