This source file includes following definitions.
- mca_atomic_mxm_startup
- mca_atomic_mxm_finalize
- mca_atomic_mxm_op_not_implemented
- mca_atomic_mxm_fop_not_implemented
- mca_atomic_mxm_query
1
2
3
4
5
6
7
8
9
10
11 #include "oshmem_config.h"
12 #include <stdio.h>
13
14 #include "oshmem/constants.h"
15 #include "oshmem/mca/atomic/atomic.h"
16 #include "oshmem/mca/spml/spml.h"
17 #include "oshmem/mca/memheap/memheap.h"
18 #include "oshmem/proc/proc.h"
19 #include "atomic_mxm.h"
20
21
22
23
24
25 int mca_atomic_mxm_startup(bool enable_progress_threads, bool enable_threads)
26 {
27 return OSHMEM_SUCCESS;
28 }
29
30 int mca_atomic_mxm_finalize(void)
31 {
32 return OSHMEM_SUCCESS;
33 }
34
35 static int mca_atomic_mxm_op_not_implemented(shmem_ctx_t ctx,
36 void *target,
37 uint64_t value,
38 size_t size,
39 int pe)
40 {
41 return OSHMEM_ERR_NOT_IMPLEMENTED;
42 }
43
44 static int mca_atomic_mxm_fop_not_implemented(shmem_ctx_t ctx,
45 void *target,
46 void *prev,
47 uint64_t value,
48 size_t size,
49 int pe)
50 {
51 return OSHMEM_ERR_NOT_IMPLEMENTED;
52 }
53
54 mca_atomic_base_module_t *
55 mca_atomic_mxm_query(int *priority)
56 {
57 mca_atomic_mxm_module_t *module;
58
59 *priority = mca_atomic_mxm_component.priority;
60
61 module = OBJ_NEW(mca_atomic_mxm_module_t);
62 if (module) {
63 module->super.atomic_add = mca_atomic_mxm_add;
64 module->super.atomic_and = mca_atomic_mxm_op_not_implemented;
65 module->super.atomic_or = mca_atomic_mxm_op_not_implemented;
66 module->super.atomic_xor = mca_atomic_mxm_op_not_implemented;
67 module->super.atomic_fadd = mca_atomic_mxm_fadd;
68 module->super.atomic_fand = mca_atomic_mxm_fop_not_implemented;
69 module->super.atomic_for = mca_atomic_mxm_fop_not_implemented;
70 module->super.atomic_fxor = mca_atomic_mxm_fop_not_implemented;
71 module->super.atomic_swap = mca_atomic_mxm_swap;
72 module->super.atomic_cswap = mca_atomic_mxm_cswap;
73 return &(module->super);
74 }
75
76 return NULL ;
77 }