1
2
3
4
5
6
7
8
9
10
11 #ifndef MCA_ATOMIC_UCX_H
12 #define MCA_ATOMIC_UCX_H
13
14 #include "oshmem_config.h"
15
16 #include "opal/mca/common/ucx/common_ucx.h"
17 #include "opal/mca/mca.h"
18 #include "oshmem/mca/atomic/atomic.h"
19 #include "oshmem/util/oshmem_util.h"
20
21
22 #include "oshmem/mca/spml/ucx/spml_ucx.h"
23
24
25 BEGIN_C_DECLS
26
27
28
29 OSHMEM_MODULE_DECLSPEC extern mca_atomic_base_component_1_0_0_t
30 mca_atomic_ucx_component;
31
32
33 extern mca_spml_ucx_t *mca_spml_self;
34
35 OSHMEM_DECLSPEC void atomic_ucx_lock(int pe);
36 OSHMEM_DECLSPEC void atomic_ucx_unlock(int pe);
37
38
39
40 int mca_atomic_ucx_startup(bool enable_progress_threads, bool enable_threads);
41 int mca_atomic_ucx_finalize(void);
42 mca_atomic_base_module_t*
43 mca_atomic_ucx_query(int *priority);
44
45 int mca_atomic_ucx_cswap(shmem_ctx_t ctx,
46 void *target,
47 uint64_t *prev,
48 uint64_t cond,
49 uint64_t value,
50 size_t size,
51 int pe);
52
53 struct mca_atomic_ucx_module_t {
54 mca_atomic_base_module_t super;
55 };
56 typedef struct mca_atomic_ucx_module_t mca_atomic_ucx_module_t;
57 OBJ_CLASS_DECLARATION(mca_atomic_ucx_module_t);
58
59 END_C_DECLS
60
61 #endif