1
2
3
4
5
6
7
8
9
10
11
12 #ifndef MCA_SCOLL_MPI_H
13 #define MCA_SCOLL_MPI_H
14
15 #include "oshmem_config.h"
16
17 #include "shmem.h"
18 #include "oshmem/mca/mca.h"
19 #include "oshmem/mca/scoll/scoll.h"
20 #include "oshmem/request/request.h"
21 #include "oshmem/util/oshmem_util.h"
22 #include "oshmem/proc/proc.h"
23 #include "ompi/communicator/communicator.h"
24
25 #include "scoll_mpi_debug.h"
26 BEGIN_C_DECLS
27
28
29
30
31
32
33 struct mca_scoll_mpi_component_t {
34
35 mca_scoll_base_component_1_0_0_t super;
36
37
38 int mpi_priority;
39
40
41 int mpi_verbose;
42
43
44 int mpi_enable;
45
46
47
48 int mpi_np;
49 };
50 typedef struct mca_scoll_mpi_component_t mca_scoll_mpi_component_t;
51
52 OMPI_MODULE_DECLSPEC extern mca_scoll_mpi_component_t mca_scoll_mpi_component;
53
54
55
56
57
58 struct mca_scoll_mpi_module_t {
59 mca_scoll_base_module_t super;
60
61 ompi_communicator_t *comm;
62 int rank;
63
64 mca_scoll_base_module_reduce_fn_t previous_reduce;
65 mca_scoll_base_module_t *previous_reduce_module;
66 mca_scoll_base_module_broadcast_fn_t previous_broadcast;
67 mca_scoll_base_module_t *previous_broadcast_module;
68 mca_scoll_base_module_barrier_fn_t previous_barrier;
69 mca_scoll_base_module_t *previous_barrier_module;
70 mca_scoll_base_module_collect_fn_t previous_collect;
71 mca_scoll_base_module_t *previous_collect_module;
72 mca_scoll_base_module_alltoall_fn_t previous_alltoall;
73 mca_scoll_base_module_t *previous_alltoall_module;
74 };
75 typedef struct mca_scoll_mpi_module_t mca_scoll_mpi_module_t;
76
77 OBJ_CLASS_DECLARATION(mca_scoll_mpi_module_t);
78
79
80
81 int mca_scoll_mpi_init_query(bool enable_progress_threads, bool enable_mpi_threads);
82
83 mca_scoll_base_module_t* mca_scoll_mpi_comm_query(oshmem_group_t *osh_group, int *priority);
84
85 int mca_scoll_mpi_barrier(struct oshmem_group_t *group, long *pSync, int alg);
86
87 int mca_scoll_mpi_broadcast(struct oshmem_group_t *group,
88 int PE_root,
89 void *target,
90 const void *source,
91 size_t nlong,
92 long *pSync,
93 bool nlong_type,
94 int alg);
95
96 int mca_scoll_mpi_collect(struct oshmem_group_t *group,
97 void *target,
98 const void *source,
99 size_t nlong,
100 long *pSync,
101 bool nlong_type,
102 int alg);
103
104 int mca_scoll_mpi_reduce(struct oshmem_group_t *group,
105 struct oshmem_op_t *op,
106 void *target,
107 const void *source,
108 size_t nlong,
109 long *pSync,
110 void *pWrk,
111 int alg);
112
113 END_C_DECLS
114
115 #endif