Skip to content

Commit a4be3bb

Browse files
bsergentmpierrele
authored andcommitted
Coll/adapt Bull (#15)
* piggybacking Bull functionalities * coll/adapt: Fix naming conventions and C11 atomic use This commit fixes some naming convention issues, such as function names which should follow the naming ompi_coll_adapt instead of mca_coll_adapt, reserved for component and module naming (cf. tuned collective component); It also fixes the use of _Atomic construct, which is only valid in C11. OPAL constructs have already been adapted to that use, so use opal_atomic_* types instead. * coll/adapt: Remove unused component field in module This commit removes an unneeded field referencing the component in the module of adapt, as it is already available through the mca_coll_adapt_component global variable. Signed-off-by: Marc Sergent <marc.sergent@atos.net> Co-authored-by: Lemarinier, Pierre <pierre.lemarinier@atos.net> Co-authored-by: pierrele <31764860+pierrele@users.noreply.github.com>
1 parent fe73586 commit a4be3bb

14 files changed

+343
-296
lines changed

ompi/mca/coll/adapt/coll_adapt.h

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@
2121
#include "ompi/mca/coll/coll.h"
2222
#include "ompi/mca/coll/base/coll_base_topo.h"
2323

24-
BEGIN_C_DECLS typedef struct mca_coll_adapt_module_t mca_coll_adapt_module_t;
24+
BEGIN_C_DECLS
25+
26+
typedef struct mca_coll_adapt_module_t mca_coll_adapt_module_t;
2527

2628
/*
2729
* Structure to hold the adapt coll component. First it holds the
2830
* base coll component, and then holds a bunch of
2931
* adapt-coll-component-specific stuff (e.g., current MCA param
30-
* values).
32+
* values).
3133
*/
3234
typedef struct mca_coll_adapt_component_t {
3335
/* Base coll component */
@@ -45,7 +47,7 @@ typedef struct mca_coll_adapt_component_t {
4547
/* MCA parameter: Minimum number of segment in context free list */
4648
int adapt_context_free_list_min;
4749

48-
/* MCA parameter: Increasment number of segment in context free list */
50+
/* MCA parameter: Increasement number of segment in context free list */
4951
int adapt_context_free_list_inc;
5052

5153
/* Bcast MCA parameter */
@@ -55,7 +57,7 @@ typedef struct mca_coll_adapt_component_t {
5557
int adapt_ibcast_max_recv_requests;
5658
/* Bcast free list */
5759
opal_free_list_t *adapt_ibcast_context_free_list;
58-
_Atomic int32_t adapt_ibcast_context_free_list_enabled;
60+
opal_atomic_int32_t adapt_ibcast_context_free_list_enabled;
5961

6062
/* Reduce MCA parameter */
6163
int adapt_ireduce_algorithm;
@@ -68,7 +70,7 @@ typedef struct mca_coll_adapt_component_t {
6870

6971
/* Reduce free list */
7072
opal_free_list_t *adapt_ireduce_context_free_list;
71-
_Atomic int32_t adapt_ireduce_context_free_list_enabled;
73+
opal_atomic_int32_t adapt_ireduce_context_free_list_enabled;
7274

7375
} mca_coll_adapt_component_t;
7476

@@ -78,21 +80,18 @@ struct mca_coll_adapt_module_t {
7880
mca_coll_base_module_t super;
7981

8082
/* Whether this module has been lazily initialized or not yet */
81-
bool enabled;
82-
/* Pointer to mca_coll_adapt_component */
83-
mca_coll_adapt_component_t *adapt_component;
83+
bool adapt_enabled;
8484
};
8585
OBJ_CLASS_DECLARATION(mca_coll_adapt_module_t);
8686

8787
/* Global component instance */
8888
OMPI_MODULE_DECLSPEC extern mca_coll_adapt_component_t mca_coll_adapt_component;
8989

9090
/* ADAPT module functions */
91-
int mca_coll_adapt_init_query(bool enable_progress_threads, bool enable_mpi_threads);
92-
93-
mca_coll_base_module_t *mca_coll_adapt_comm_query(struct ompi_communicator_t *comm, int *priority);
91+
int ompi_coll_adapt_init_query(bool enable_progress_threads, bool enable_mpi_threads);
92+
mca_coll_base_module_t * ompi_coll_adapt_comm_query(struct ompi_communicator_t *comm, int *priority);
9493

9594
/* Free ADAPT quest */
96-
int adapt_request_free(ompi_request_t ** request);
95+
int ompi_coll_adapt_request_free(ompi_request_t **request);
9796

98-
#endif /* MCA_COLL_ADAPT_EXPORT_H */
97+
#endif /* MCA_COLL_ADAPT_EXPORT_H */

ompi/mca/coll/adapt/coll_adapt_algorithms.h

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,82 +14,88 @@
1414
#include "ompi/mca/coll/base/coll_base_functions.h"
1515
#include <math.h>
1616

17-
typedef struct mca_coll_adapt_algorithm_index_s {
17+
typedef struct ompi_coll_adapt_algorithm_index_s {
1818
int algorithm_index;
1919
uintptr_t algorithm_fn_ptr;
20-
} mca_coll_adapt_algorithm_index_t;
20+
} ompi_coll_adapt_algorithm_index_t;
2121

2222
/* Bcast */
23-
int mca_coll_adapt_ibcast_init(void);
24-
int mca_coll_adapt_ibcast_fini(void);
25-
int mca_coll_adapt_bcast(void *buff, int count, struct ompi_datatype_t *datatype, int root,
23+
int ompi_coll_adapt_ibcast_init(void);
24+
int ompi_coll_adapt_ibcast_fini(void);
25+
int ompi_coll_adapt_bcast(void *buff, int count, struct ompi_datatype_t *datatype, int root,
2626
struct ompi_communicator_t *comm, mca_coll_base_module_t * module);
27-
int mca_coll_adapt_ibcast(void *buff, int count, struct ompi_datatype_t *datatype, int root,
27+
int ompi_coll_adapt_ibcast(void *buff, int count, struct ompi_datatype_t *datatype, int root,
2828
struct ompi_communicator_t *comm, ompi_request_t ** request,
2929
mca_coll_base_module_t * module);
30-
int mca_coll_adapt_ibcast_generic(void *buff, int count, struct ompi_datatype_t *datatype, int root,
30+
int ompi_coll_adapt_ibcast_generic(void *buff, int count, struct ompi_datatype_t *datatype, int root,
3131
struct ompi_communicator_t *comm, ompi_request_t ** request,
3232
mca_coll_base_module_t * module, ompi_coll_tree_t * tree,
3333
size_t seg_size, int ibcast_tag);
34-
int mca_coll_adapt_ibcast_binomial(void *buff, int count, struct ompi_datatype_t *datatype,
34+
int ompi_coll_adapt_ibcast_binomial(void *buff, int count, struct ompi_datatype_t *datatype,
3535
int root, struct ompi_communicator_t *comm,
3636
ompi_request_t ** request, mca_coll_base_module_t * module,
3737
int ibcast_tag);
38-
int mca_coll_adapt_ibcast_in_order_binomial(void *buff, int count, struct ompi_datatype_t *datatype,
38+
int ompi_coll_adapt_ibcast_in_order_binomial(void *buff, int count, struct ompi_datatype_t *datatype,
3939
int root, struct ompi_communicator_t *comm,
4040
ompi_request_t ** request,
4141
mca_coll_base_module_t * module, int ibcast_tag);
42-
int mca_coll_adapt_ibcast_binary(void *buff, int count, struct ompi_datatype_t *datatype, int root,
42+
int ompi_coll_adapt_ibcast_binary(void *buff, int count, struct ompi_datatype_t *datatype, int root,
4343
struct ompi_communicator_t *comm, ompi_request_t ** request,
4444
mca_coll_base_module_t * module, int ibcast_tag);
45-
int mca_coll_adapt_ibcast_pipeline(void *buff, int count, struct ompi_datatype_t *datatype,
45+
int ompi_coll_adapt_ibcast_pipeline(void *buff, int count, struct ompi_datatype_t *datatype,
4646
int root, struct ompi_communicator_t *comm,
4747
ompi_request_t ** request, mca_coll_base_module_t * module,
4848
int ibcast_tag);
49-
int mca_coll_adapt_ibcast_chain(void *buff, int count, struct ompi_datatype_t *datatype, int root,
49+
int ompi_coll_adapt_ibcast_chain(void *buff, int count, struct ompi_datatype_t *datatype, int root,
5050
struct ompi_communicator_t *comm, ompi_request_t ** request,
5151
mca_coll_base_module_t * module, int ibcast_tag);
52-
int mca_coll_adapt_ibcast_linear(void *buff, int count, struct ompi_datatype_t *datatype, int root,
52+
int ompi_coll_adapt_ibcast_linear(void *buff, int count, struct ompi_datatype_t *datatype, int root,
5353
struct ompi_communicator_t *comm, ompi_request_t ** request,
5454
mca_coll_base_module_t * module, int ibcast_tag);
55-
55+
int ompi_coll_adapt_ibcast_tuned(void *buff, int count, struct ompi_datatype_t *datatype, int root,
56+
struct ompi_communicator_t *comm, ompi_request_t ** request,
57+
mca_coll_base_module_t *module, int ibcast_tag);
5658

5759
/* Reduce */
58-
int mca_coll_adapt_ireduce_init(void);
59-
int mca_coll_adapt_ireduce_fini(void);
60-
int mca_coll_adapt_reduce(const void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
60+
int ompi_coll_adapt_ireduce_init(void);
61+
int ompi_coll_adapt_ireduce_fini(void);
62+
int ompi_coll_adapt_reduce(const void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
6163
struct ompi_op_t *op, int root, struct ompi_communicator_t *comm,
6264
mca_coll_base_module_t * module);
63-
int mca_coll_adapt_ireduce(const void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
65+
int ompi_coll_adapt_ireduce(const void *sbuf, void *rbuf, int count, struct ompi_datatype_t *dtype,
6466
struct ompi_op_t *op, int root, struct ompi_communicator_t *comm,
6567
ompi_request_t ** request, mca_coll_base_module_t * module);
66-
int mca_coll_adapt_ireduce_generic(const void *sbuf, void *rbuf, int count,
68+
int ompi_coll_adapt_ireduce_generic(const void *sbuf, void *rbuf, int count,
6769
struct ompi_datatype_t *dtype, struct ompi_op_t *op, int root,
6870
struct ompi_communicator_t *comm, ompi_request_t ** request,
6971
mca_coll_base_module_t * module, ompi_coll_tree_t * tree,
7072
size_t seg_size, int ireduce_tag);
71-
int mca_coll_adapt_ireduce_binomial(const void *sbuf, void *rbuf, int count,
73+
int ompi_coll_adapt_ireduce_tuned(const void *sbuf, void *rbuf, int count,
74+
struct ompi_datatype_t *dtype, struct ompi_op_t *op, int root,
75+
struct ompi_communicator_t *comm, ompi_request_t ** request,
76+
mca_coll_base_module_t *module, int ireduce_tag);
77+
int ompi_coll_adapt_ireduce_binomial(const void *sbuf, void *rbuf, int count,
7278
struct ompi_datatype_t *dtype, struct ompi_op_t *op, int root,
7379
struct ompi_communicator_t *comm, ompi_request_t ** request,
7480
mca_coll_base_module_t * module, int ireduce_tag);
75-
int mca_coll_adapt_ireduce_in_order_binomial(const void *sbuf, void *rbuf, int count,
81+
int ompi_coll_adapt_ireduce_in_order_binomial(const void *sbuf, void *rbuf, int count,
7682
struct ompi_datatype_t *dtype, struct ompi_op_t *op,
7783
int root, struct ompi_communicator_t *comm,
7884
ompi_request_t ** request,
7985
mca_coll_base_module_t * module, int ireduce_tag);
80-
int mca_coll_adapt_ireduce_binary(const void *sbuf, void *rbuf, int count,
86+
int ompi_coll_adapt_ireduce_binary(const void *sbuf, void *rbuf, int count,
8187
struct ompi_datatype_t *dtype, struct ompi_op_t *op, int root,
8288
struct ompi_communicator_t *comm, ompi_request_t ** request,
8389
mca_coll_base_module_t * module, int ireduce_tag);
84-
int mca_coll_adapt_ireduce_pipeline(const void *sbuf, void *rbuf, int count,
90+
int ompi_coll_adapt_ireduce_pipeline(const void *sbuf, void *rbuf, int count,
8591
struct ompi_datatype_t *dtype, struct ompi_op_t *op, int root,
8692
struct ompi_communicator_t *comm, ompi_request_t ** request,
8793
mca_coll_base_module_t * module, int ireduce_tag);
88-
int mca_coll_adapt_ireduce_chain(const void *sbuf, void *rbuf, int count,
94+
int ompi_coll_adapt_ireduce_chain(const void *sbuf, void *rbuf, int count,
8995
struct ompi_datatype_t *dtype, struct ompi_op_t *op, int root,
9096
struct ompi_communicator_t *comm, ompi_request_t ** request,
9197
mca_coll_base_module_t * module, int ireduce_tag);
92-
int mca_coll_adapt_ireduce_linear(const void *sbuf, void *rbuf, int count,
98+
int ompi_coll_adapt_ireduce_linear(const void *sbuf, void *rbuf, int count,
9399
struct ompi_datatype_t *dtype, struct ompi_op_t *op, int root,
94100
struct ompi_communicator_t *comm, ompi_request_t ** request,
95101
mca_coll_base_module_t * module, int ireduce_tag);

ompi/mca/coll/adapt/coll_adapt_bcast.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
#include "coll_adapt.h"
1313
#include "coll_adapt_algorithms.h"
1414

15-
int mca_coll_adapt_bcast(void *buff, int count, struct ompi_datatype_t *datatype, int root,
15+
int ompi_coll_adapt_bcast(void *buff, int count, struct ompi_datatype_t *datatype, int root,
1616
struct ompi_communicator_t *comm, mca_coll_base_module_t * module)
1717
{
1818
if (count == 0) {
1919
return MPI_SUCCESS;
2020
} else {
2121
ompi_request_t *request;
22-
int err = mca_coll_adapt_ibcast(buff, count, datatype, root, comm, &request, module);
22+
int err = ompi_coll_adapt_ibcast(buff, count, datatype, root, comm, &request, module);
2323
ompi_request_wait(&request, MPI_STATUS_IGNORE);
2424
return err;
2525
}

ompi/mca/coll/adapt/coll_adapt_component.c

Lines changed: 49 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -36,35 +36,32 @@ static int adapt_register(void);
3636
*/
3737

3838
mca_coll_adapt_component_t mca_coll_adapt_component = {
39-
4039
/* First, fill in the super */
41-
4240
{
43-
/* First, the mca_component_t struct containing meta
44-
information about the component itself */
45-
46-
{
47-
MCA_COLL_BASE_VERSION_2_0_0,
48-
49-
/* Component name and version */
50-
"adapt",
51-
OMPI_MAJOR_VERSION,
52-
OMPI_MINOR_VERSION,
53-
OMPI_RELEASE_VERSION,
54-
55-
/* Component functions */
56-
adapt_open, /* open */
57-
adapt_close,
58-
NULL, /* query */
59-
adapt_register},
60-
{
61-
/* The component is not checkpoint ready */
62-
MCA_BASE_METADATA_PARAM_NONE},
63-
64-
/* Initialization / querying functions */
65-
mca_coll_adapt_init_query,
66-
mca_coll_adapt_comm_query,
67-
},
41+
/* First, the mca_component_t struct containing meta
42+
information about the component itself */
43+
.collm_version = {
44+
MCA_COLL_BASE_VERSION_2_0_0,
45+
46+
/* Component name and version */
47+
.mca_component_name = "adapt",
48+
MCA_BASE_MAKE_VERSION(component, OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
49+
OMPI_RELEASE_VERSION),
50+
51+
/* Component functions */
52+
.mca_open_component = adapt_open,
53+
.mca_close_component = adapt_close,
54+
.mca_register_component_params = adapt_register,
55+
},
56+
.collm_data = {
57+
/* The component is not checkpoint ready */
58+
MCA_BASE_METADATA_PARAM_NONE
59+
},
60+
61+
/* Initialization / querying functions */
62+
.collm_init_query = ompi_coll_adapt_init_query,
63+
.collm_comm_query = ompi_coll_adapt_comm_query,
64+
},
6865

6966
/* adapt-component specific information */
7067

@@ -81,15 +78,34 @@ mca_coll_adapt_component_t mca_coll_adapt_component = {
8178
/* Open the component */
8279
static int adapt_open(void)
8380
{
81+
int param;
82+
mca_coll_adapt_component_t *cs = &mca_coll_adapt_component;
83+
84+
/*
85+
* Get the global coll verbosity: it will be ours
86+
*/
87+
param = mca_base_var_find("ompi", "coll", "base", "verbose");
88+
if (param >= 0) {
89+
const int *verbose = NULL;
90+
mca_base_var_get_value(param, &verbose, NULL, NULL);
91+
if (verbose && verbose[0] > 0) {
92+
cs->adapt_output = opal_output_open(NULL);
93+
opal_output_set_verbosity(cs->adapt_output, verbose[0]);
94+
}
95+
}
96+
97+
opal_output_verbose(1, cs->adapt_output,
98+
"coll:adapt:component_open: done!");
99+
84100
return OMPI_SUCCESS;
85101
}
86102

87103

88104
/* Shut down the component */
89105
static int adapt_close(void)
90106
{
91-
mca_coll_adapt_ibcast_fini();
92-
mca_coll_adapt_ireduce_fini();
107+
ompi_coll_adapt_ibcast_fini();
108+
ompi_coll_adapt_ireduce_fini();
93109

94110
return OMPI_SUCCESS;
95111
}
@@ -125,15 +141,15 @@ static int adapt_register(void)
125141
opal_output_set_verbosity(cs->adapt_output, adapt_verbose);
126142

127143
cs->adapt_context_free_list_min = 10;
128-
(void) mca_base_component_var_register(c, "context_free_list_max",
144+
(void) mca_base_component_var_register(c, "context_free_list_min",
129145
"Minimum number of segments in context free list",
130146
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
131147
OPAL_INFO_LVL_9,
132148
MCA_BASE_VAR_SCOPE_READONLY,
133149
&cs->adapt_context_free_list_min);
134150

135151
cs->adapt_context_free_list_max = 10000;
136-
(void) mca_base_component_var_register(c, "context_free_list_min",
152+
(void) mca_base_component_var_register(c, "context_free_list_max",
137153
"Maximum number of segments in context free list",
138154
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
139155
OPAL_INFO_LVL_9,
@@ -147,8 +163,8 @@ static int adapt_register(void)
147163
OPAL_INFO_LVL_9,
148164
MCA_BASE_VAR_SCOPE_READONLY,
149165
&cs->adapt_context_free_list_inc);
150-
mca_coll_adapt_ibcast_init();
151-
mca_coll_adapt_ireduce_init();
166+
ompi_coll_adapt_ibcast_init();
167+
ompi_coll_adapt_ireduce_init();
152168

153169
return adapt_verify_mca_variables();
154170
}

0 commit comments

Comments
 (0)