Skip to content

Commit 43547ad

Browse files
authored
Merge pull request #5663 from mkurnosov/coll-ireduce-rabenseifner
coll/libnbc: add Rabenseifner's algorithm for MPI_Ireduce
2 parents 979a199 + 7bd63e7 commit 43547ad

File tree

3 files changed

+401
-9
lines changed

3 files changed

+401
-9
lines changed

ompi/mca/coll/libnbc/coll_libnbc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ extern int libnbc_iallgather_algorithm;
7474
extern int libnbc_ibcast_algorithm;
7575
extern int libnbc_ibcast_knomial_radix;
7676
extern int libnbc_iexscan_algorithm;
77+
extern int libnbc_ireduce_algorithm;
7778
extern int libnbc_iscan_algorithm;
7879

7980
struct ompi_coll_libnbc_component_t {

ompi/mca/coll/libnbc/coll_libnbc_component.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,15 @@ static mca_base_var_enum_value_t iexscan_algorithms[] = {
7373
{0, NULL}
7474
};
7575

76+
int libnbc_ireduce_algorithm = 0; /* ireduce user forced algorithm */
77+
static mca_base_var_enum_value_t ireduce_algorithms[] = {
78+
{0, "ignore"},
79+
{1, "chain"},
80+
{2, "binomial"},
81+
{3, "rabenseifner"},
82+
{0, NULL}
83+
};
84+
7685
int libnbc_iscan_algorithm = 0; /* iscan user forced algorithm */
7786
static mca_base_var_enum_value_t iscan_algorithms[] = {
7887
{0, "ignore"},
@@ -232,6 +241,16 @@ libnbc_register(void)
232241
&libnbc_iexscan_algorithm);
233242
OBJ_RELEASE(new_enum);
234243

244+
libnbc_ireduce_algorithm = 0;
245+
(void) mca_base_var_enum_create("coll_libnbc_ireduce_algorithms", ireduce_algorithms, &new_enum);
246+
mca_base_component_var_register(&mca_coll_libnbc_component.super.collm_version,
247+
"ireduce_algorithm",
248+
"Which ireduce algorithm is used: 0 ignore, 1 chain, 2 binomial, 3 rabenseifner",
249+
MCA_BASE_VAR_TYPE_INT, new_enum, 0, MCA_BASE_VAR_FLAG_SETTABLE,
250+
OPAL_INFO_LVL_5, MCA_BASE_VAR_SCOPE_ALL,
251+
&libnbc_ireduce_algorithm);
252+
OBJ_RELEASE(new_enum);
253+
235254
libnbc_iscan_algorithm = 0;
236255
(void) mca_base_var_enum_create("coll_libnbc_iscan_algorithms", iscan_algorithms, &new_enum);
237256
mca_base_component_var_register(&mca_coll_libnbc_component.super.collm_version,

0 commit comments

Comments
 (0)